Example #1
0
        public async Task <ActionResult> AddNewBook([FromForm] BookForCreateDTO newBook)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Model validate failed!"));
            }

            // var book = _mapper.Map<Book>(newBook);
            var result = await _bookService.AddNewBook(newBook);

            if (result != null)
            {
                return(Ok(result));
            }

            return(BadRequest("Create new book failed."));
        }
        public async Task <Guid> AddNewBook(BookForCreateDTO newBook)
        {
            //validate book
            if (_bookRepository.IsBookExisted(newBook.Title))
            {
                return(new Guid());
            }

            var author    = _authorRepository.GetAuthorByName(newBook.AuthorName);
            var publisher = _publisherRepository.GetPublisherByName(newBook.PublisherName);
            var category  = _categoryRepo.GetCategoryByName(newBook.CategoryName).ElementAt(0);

            if (author != null && publisher != null && category != null)
            {
                var book = new Book();
                book.Pages       = newBook.Pages;
                book.Price       = newBook.Price;
                book.Title       = newBook.Title;
                book.AuthorId    = author.Id;
                book.PublisherId = publisher.Id;
                book.Categories  = new List <Category>();
                book.Categories.Add(category);
                book.Description = newBook.Description;
                book.SKU         = newBook.SKU;

                var uploadPhotos = await _photoService.UploadPhotos(newBook.Photos);

                book.Photos       = uploadPhotos.ToList();
                book.ThumbnailUrl = uploadPhotos.ToArray()[0].Url;

                // if (newBook.Photos.Any())
                // {
                //     var uploadPhotos = await _photoService.UploadPhotos(newBook.Photos);
                //     book.Photos = uploadPhotos.ToList();
                //     book.ThumbnailUrl = uploadPhotos.ToArray()[0].Url;
                // }

                var result = await _bookRepository.InsertAsync(book);

                _bookRepository.SaveChange();
                return(book.Id);
            }

            return(new Guid("string"));
        }
        public async Task CreateBook_ShouldReturnEmptyGuid()
        {
            BookForCreateDTO bookWithTitleCreated = new BookForCreateDTO()
            {
                Title         = "Test create book",
                AuthorName    = "NXB Kim Dong",
                Description   = "ABC",
                Pages         = 123,
                Price         = 120312312,
                SKU           = "123123",
                PublisherName = "NXB Kim Dong",
                Photos        = new List <IFormFile>()
            };

            var result = await _bookService.AddNewBook(bookWithTitleCreated);

            Assert.Equal(new Guid(), result);
        }
        public async Task DeleteBook_ShouldReturnTrue()
        {
            BookForCreateDTO validData = new BookForCreateDTO()
            {
                Title         = "Test create book 1",
                AuthorName    = "NXB Kim Dong",
                Description   = "ABC",
                Pages         = 123,
                Price         = 120312312,
                SKU           = "123123",
                PublisherName = "NXB Kim Dong",
                Photos        = new List <IFormFile>()
            };

            var newBookId = await _bookService.AddNewBook(validData);

            var result = await _bookService.DeleteBook(newBookId);

            Assert.True(result);
        }
        public async Task CreateBook_ShouldReturnNewBookId()
        {
            var rd = new Random();
            BookForCreateDTO validData = new BookForCreateDTO()
            {
                Title         = "Test create book 123" + rd.Next().ToString(),
                AuthorName    = "NXB Kim Dong",
                Description   = "ABC",
                Pages         = 123,
                Price         = 120312312,
                SKU           = "123123",
                PublisherName = "NXB Kim Dong",
                Photos        = new List <IFormFile>()
            };

            var result = await _bookService.AddNewBook(validData);


            //Make sure that book created
            var bookCreated = _bookService.GetBookById(result);

            Assert.NotNull(bookCreated);
        }