public override JobHistory Work() { var booksLate = _bookService.GetBooksChooseDateIsLate(); var refDate = DateTime.Today.AddDays(_maxLateDonationDaysAutoCancel * -1); var booksAbandoned = booksLate.Where(b => b.ChooseDate < refDate).ToList(); var details = $"Encontradas {booksAbandoned.Count} doações abandonadas com mais de {_maxLateDonationDaysAutoCancel} dias de atraso.\n\n"; foreach (var book in booksAbandoned) { var dto = new BookCancelationDTO { Book = book, CanceledBy = "ShareBot", Reason = $"Cancelamento automático de doação abandonada. Com mais de {_maxLateDonationDaysAutoCancel} dias de atraso.", }; _bookUserService.Cancel(dto); details += $"Doação do livro {book.Title} foi cancelada.\n"; } return(new JobHistory() { JobName = JobName, IsSuccess = true, Details = details }); }
private void CancelDonation(Book book) { var cancelationDTO = new BookCancelationDTO { Book = book, CanceledBy = "USUÁRIO ANONIMIZADO", Reason = "Doação cancelada porque o usuário removeu a própria conta." }; _bookUserService.Cancel(cancelationDTO); }
public async Task SendEmailBookCanceledToAdminsAndDonor(BookCancelationDTO dto) { var donor = dto.Book.User; var templateData = new { Title = dto.Book.Title, Donor = donor.Name, CanceledBy = dto.CanceledBy, Reason = dto.Reason }; var html = await _emailTemplate.GenerateHtmlFromTemplateAsync(BookCanceledTemplate, templateData); _emailService.Send(donor.Email, donor.Name, html, BookCanceledTitle, copyAdmins: true).Wait(); }
public Result <Book> Cancel(BookCancelationDTO dto) { if (dto.Book == null) { throw new ShareBookException(ShareBookException.Error.NotFound); } var bookUsers = _bookUserRepository.Get().Where(x => x.BookId == dto.Book.Id).ToList(); dto.Book.ChooseDate = null; dto.Book.Status = BookStatus.Canceled; CancelBookUsersAndSendNotification(dto.Book); _bookService.Update(dto.Book); _bookUsersEmailService.SendEmailBookCanceledToAdminsAndDonor(dto).Wait(); return(new Result <Book>(dto.Book)); }
public IActionResult Cancel(string id, [FromQuery] string reason = "") { if (!_IsBookOwner(new Guid(id))) { return(Unauthorized()); } var cancelationDTO = new BookCancelationDTO { Book = _service.Find(new Guid(id)), CanceledBy = GetSessionUser().Name, Reason = reason }; var returnBook = _bookUserService.Cancel(cancelationDTO).Value; var returnBookVm = _mapper.Map <CancelBookDonationVM>(returnBook); var result = new Result <CancelBookDonationVM>(returnBookVm); return(Ok(result)); }