예제 #1
0
        public async Task ReassignCompanyTask(ShortTaskDTO task, long companyId)
        {
            var vendor = await _unitOfWork.VendorRepository
                         .Query
                         .Include(v => v.Person)
                         .Include(v => v.Person.Account)
                         .Where(v => v.Id == task.VendorId)
                         .SingleOrDefaultAsync();

            var company = await _unitOfWork.CompanyRepository.GetByIdAsync(companyId);

            var book = await _unitOfWork.BookRepository.GetByIdAsync(task.BookId);

            var work = await _unitOfWork.WorkRepository.GetByIdAsync(task.WorkId);

            var companyTask = await _unitOfWork.BookRepository.GetByIdAsync(task.Id);

            companyTask.ParentBookId = 0;

            var companyBook = new Book();

            companyBook.Date          = book.Date;
            companyBook.EndDate       = book.EndDate;
            companyBook.Description   = task.Description;
            companyBook.Status        = BookStatus.Pending;
            companyBook.IsCompanyTask = true;
            companyBook.Vendor        = vendor;
            companyBook.Location      = book.Location;
            companyBook.Customer      = book.Customer;
            companyBook.CustomerPhone = book.CustomerPhone;
            companyBook.ParentBookId  = book.Id;
            companyBook.Work          = work;
            companyBook.Company       = company;

            _unitOfWork.BookRepository.Update(companyTask);
            _unitOfWork.BookRepository.Create(companyBook);

            await _unitOfWork.SaveAsync();

            /* Send Notification */
            var notification = new NotificationDTO()
            {
                Title        = $"New order for {work.Name}",
                Description  = $"{company.Name} assigned you for {work.Name}. Check your dashboard to find out details.",
                SourceItemId = book.Id,
                Time         = DateTime.Now,
                Type         = NotificationType.TaskNotification
            };

            var receiverId = vendor.Person.Account.Id;
            await _notificationService.CreateAsync(receiverId, notification);
        }
예제 #2
0
 public async Task CreateTasks(ShortTaskDTO task, long id)
 {
     await _bookService.ReassignCompanyTask(task, id);
 }