Beispiel #1
0
        public void Insert(Guid bookId, string reason)
        {
            //obtem o livro requisitado e o doador
            var bookRequested = _bookService.GetBookWithAllUsers(bookId);

            var bookUser = new BookUser()
            {
                BookId   = bookId,
                UserId   = new Guid(Thread.CurrentPrincipal?.Identity?.Name),
                Reason   = reason,
                NickName = $"Interessado {bookRequested?.TotalInterested() + 1}"
            };

            if (!_bookService.Any(x => x.Id == bookUser.BookId))
            {
                throw new ShareBookException(ShareBookException.Error.NotFound);
            }

            if (_bookUserRepository.Any(x => x.UserId == bookUser.UserId && x.BookId == bookUser.BookId))
            {
                throw new ShareBookException("O usuário já possui uma requisição para o mesmo livro.");
            }

            _bookUserRepository.Insert(bookUser);

            _bookUsersEmailService.SendEmailBookRequested(bookUser);
            _bookUsersEmailService.SendEmailBookDonor(bookUser, bookRequested);
            _bookUsersEmailService.SendEmailBookInterested(bookUser, bookRequested);
        }
Beispiel #2
0
        public void Insert(Guid bookId, string reason)
        {
            //obtem o livro requisitado e o doador
            var bookRequested = _bookService.GetBookWithAllUsers(bookId);
            var bookUser      = new BookUser()
            {
                BookId   = bookId,
                UserId   = new Guid(Thread.CurrentPrincipal?.Identity?.Name),
                Reason   = reason,
                NickName = $"Interessado {bookRequested?.TotalInterested() + 1}"
            };

            if (!_bookService.Any(x => x.Id == bookUser.BookId))
            {
                throw new ShareBookException(ShareBookException.Error.NotFound);
            }

            if (_bookUserRepository.Any(x => x.UserId == bookUser.UserId && x.BookId == bookUser.BookId))
            {
                throw new ShareBookException("O usuário já possui uma requisição para o mesmo livro.");
            }

            if (bookRequested.Status != BookStatus.Available)
            {
                throw new ShareBookException("Esse livro não está mais disponível para doação.");
            }

            _bookUserRepository.Insert(bookUser);

            // Remove da vitrine caso o número de pedidos estiver grande demais.
            MaxRequestsValidation(bookRequested);

            var sendEmailBookRequested = bool.Parse(_configuration["EmailSettings:SendEmailBookRequested"]);

            // TODO: não vamos precisar dessa configuração quando o email estiver enfileirado.
            if (sendEmailBookRequested)
            {
                _bookUsersEmailService.SendEmailBookDonor(bookUser, bookRequested).Wait();
                _bookUsersEmailService.SendEmailBookInterested(bookUser, bookRequested).Wait();
            }
        }