Example #1
0
        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
            });
        }
Example #2
0
        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);
        }
Example #3
0
        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();
        }
Example #4
0
        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));
        }