Beispiel #1
0
        public void AddBook(NewBookDTO bookDto)
        {
            bool bookAlreadyExists;

            lock (newBookLock)
            {
                bookAlreadyExists = _booksDbSet
                                    .Any(book =>
                                         (bookDto.Isbn != null &&
                                          book.Code == bookDto.Isbn &&
                                          book.OrganizationId == bookDto.OrganizationId) ||
                                         (bookDto.Isbn == null &&
                                          book.OrganizationId == bookDto.OrganizationId &&
                                          book.Title == bookDto.Title));

                _bookServiceValidator.CheckIfBookAlreadyExists(bookAlreadyExists);
                ValidateQuantifiedOffices(bookDto.QuantityByOffice.Select(o => o.OfficeId));
                ValidateQuantitiesValues(bookDto.QuantityByOffice.Select(o => o.BookQuantity));

                var newBook = MapNewBookToEntity(bookDto);
                _booksDbSet.Add(newBook);

                bookDto.QuantityByOffice
                .Where(office => office.BookQuantity > BookQuantityZero)
                .ForEach(office => _bookOfficesDbSet.Add(MapBookDtoToBookOfficeEntity(newBook, office, bookDto.UserId)));

                _uow.SaveChanges(false);
            }
        }
Beispiel #2
0
        public void Should_Throw_On_Add_Book_If_Quantity_Is_Zero()
        {
            _booksDbSet.SetDbSetData(new List <Book>());

            var offices = new List <Office>()
            {
                new Office()
                {
                    Id = 1
                }
            };

            _officesDbSet.SetDbSetData(offices);

            var newBookDto = new NewBookDTO
            {
                Author           = "test",
                Isbn             = "123",
                OrganizationId   = 2,
                Title            = "test",
                QuantityByOffice = new List <NewBookQuantityDTO>
                {
                    new NewBookQuantityDTO
                    {
                        OfficeId     = 1,
                        BookQuantity = 0
                    }
                },
                UserId = "testUserId"
            };

            Assert.Throws <BookException>(() => _bookService.AddBook(newBookDto));
        }
Beispiel #3
0
        public void Should_Create_New_Book_And_Book_Office()
        {
            MockCreateNewBook();
            var newBookDto = new NewBookDTO
            {
                Author           = "test",
                Isbn             = "123",
                OrganizationId   = 2,
                Title            = "test",
                QuantityByOffice = new List <NewBookQuantityDTO>
                {
                    new NewBookQuantityDTO
                    {
                        OfficeId     = 1,
                        BookQuantity = 0
                    },
                    new NewBookQuantityDTO
                    {
                        OfficeId     = 2,
                        BookQuantity = 5
                    }
                },
                UserId = "testUserId"
            };

            _bookService.AddBook(newBookDto);
            _booksDbSet.Received(1).Add(Arg.Any <Book>());
            _bookOfficesDbSet.Received(1).Add(Arg.Any <BookOffice>());
        }
Beispiel #4
0
        public void Should_Throw_On_Add_Book_If_Incorrect_Office_Is_Provided()
        {
            _booksDbSet.SetDbSetData(new List <Book>());
            _officesDbSet.SetDbSetData(new List <Office>());
            var newBookDto = new NewBookDTO
            {
                Author           = "test",
                Isbn             = "123",
                OrganizationId   = 2,
                Title            = "test",
                QuantityByOffice = new List <NewBookQuantityDTO>
                {
                    new NewBookQuantityDTO
                    {
                        OfficeId     = 1,
                        BookQuantity = 0
                    },
                    new NewBookQuantityDTO
                    {
                        OfficeId     = 2,
                        BookQuantity = 0
                    }
                },
                UserId = "testUserId"
            };

            Assert.Throws <ArgumentException>(() => _bookService.AddBook(newBookDto));
        }
Beispiel #5
0
 private Book MapNewBookToEntity(NewBookDTO bookDto)
 {
     return(new Book
     {
         Author = bookDto.Author,
         Code = bookDto.Isbn,
         Created = DateTime.UtcNow,
         CreatedBy = bookDto.UserId,
         Modified = DateTime.UtcNow,
         OrganizationId = bookDto.OrganizationId,
         Title = bookDto.Title,
         Url = bookDto.Url,
         ApplicationUserId = bookDto.OwnerId,
         Note = bookDto.Note
     });
 }