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); }
public async Task CreateTasks(ShortTaskDTO task, long id) { await _bookService.ReassignCompanyTask(task, id); }