Пример #1
0
        public void TakeBook(BookTakeDTO bookDTO)
        {
            MobileBookOfficeLogsDTO officeBookWithLogs;

            lock (takeBookLock)
            {
                officeBookWithLogs = _bookOfficesDbSet
                                     .Include(b => b.Book)
                                     .Include(b => b.BookLogs)
                                     .Where(b => b.OrganizationId == bookDTO.OrganizationId &&
                                            b.Id == bookDTO.BookOfficeId)
                                     .Select(MapOfficebookWithLogsToDTO())
                                     .FirstOrDefault();

                ValidateTakeBook(bookDTO, officeBookWithLogs);

                BorrowBook(officeBookWithLogs, bookDTO);
            }

            var book = new TakenBookDTO
            {
                UserId         = bookDTO.ApplicationUserId,
                OrganizationId = bookDTO.OrganizationId,
                BookOfficeId   = bookDTO.BookOfficeId,
                OfficeId       = officeBookWithLogs.OfficeId,
                Author         = officeBookWithLogs.Author,
                Title          = officeBookWithLogs.Title
            };

            _asyncRunner.Run <IBooksNotificationService>(n => n.SendEmail(book), _uow.ConnectionName);
        }
Пример #2
0
        public void SendEmail(TakenBookDTO takenBook)
        {
            var organizationName = _organizationsDbSet
                                   .Where(organization => organization.Id == takenBook.OrganizationId)
                                   .Select(organization => organization.ShortName)
                                   .FirstOrDefault();

            var userEmail = _usersDbSet
                            .Where(u => u.Id == takenBook.UserId)
                            .Select(u => u.Email)
                            .First();

            var subject = Resources.Models.Books.Books.EmailSubject;
            var userNotificationSettingsUrl = _appSettings.UserNotificationSettingsUrl(organizationName);
            var bookUrl = _appSettings.BookUrl(organizationName, takenBook.BookOfficeId, takenBook.OfficeId);

            var emailTemplateViewModel = new BookTakenEmailTemplateViewModel(userNotificationSettingsUrl, takenBook.Title, takenBook.Author, bookUrl);
            var body = _mailTemplate.Generate(emailTemplateViewModel, EmailTemplateCacheKeys.BookTaken);

            _mailingService.SendEmail(new EmailDto(userEmail, subject, body));
        }