public async Task <IActionResult> Create([Bind("Id,Title,Description,ReleaseDate,Score,AuthorsIds,Authors")] BookAddDto book) { var authors = await _authorService.GetAll(); ViewData["NoAuthors"] = false; if (authors.Count() < 1) { ViewData["NoAuthors"] = true; } if (!ModelState.IsValid) { ViewData["AuthorId"] = AuthorsSelectList(authors, book.AuthorsIds); return(View(book)); } var sameBook = await _bookService.Get(book.Title, book.ReleaseDate); if (sameBook != null) { ModelState.AddModelError("", $"{book.Title} released {book.ReleaseDate:dd/MM/yyy} already exists"); ViewData["AuthorId"] = AuthorsSelectList(authors, book.AuthorsIds); return(View(book)); } await _bookService.Create(book); return(RedirectToAction(nameof(Index))); }
public ActionResult <BookReadDto> AddBook(BookAddDto bookAddDto) { var bookItem = _mapper.Map <Book>(bookAddDto); _bookRepo.CreateBook(bookItem); var bookDTO = _mapper.Map <BookReadDto>(bookItem); return(CreatedAtRoute(nameof(GetBookById), new { Id = bookDTO.Id }, bookDTO)); }
public async void Add_ShouldReturnBadRequest_WhenModelStateIsInvalid() { var bookAddDto = new BookAddDto(); _booksController.ModelState.AddModelError("Name", "The field name is required"); var result = await _booksController.Add(bookAddDto); Assert.IsType <BadRequestResult>(result); }
public ActionResult <BookDto> CreateBook([FromRoute] Guid authorId, [FromBody] BookAddDto bookAddDto) { if (!authorRepository.IsAuthorExist(authorId)) { return(NotFound()); } var bookEntity = mapper.Map <Book>(bookAddDto); bookEntity.AuthorId = authorId; var result = bookRepository.CreateBook(bookEntity); return(CreatedAtRoute(nameof(GetBook), new { authorId = authorId, bookId = result.Id }, result)); }
public async void Add_ShouldCallAddFromService_OnlyOnce() { var book = CreateBook(); var bookAddDto = new BookAddDto() { Name = book.Name }; _mapperMock.Setup(m => m.Map <Book>(It.IsAny <BookAddDto>())).Returns(book); _bookServiceMock.Setup(c => c.Add(book)).ReturnsAsync(book); await _booksController.Add(bookAddDto); _bookServiceMock.Verify(mock => mock.Add(book), Times.Once); }
public async void Add_ShouldReturnBadRequest_WhenBookResultIsNull() { var book = CreateBook(); var bookAddDto = new BookAddDto() { Name = book.Name }; _mapperMock.Setup(m => m.Map <Book>(It.IsAny <BookAddDto>())).Returns(book); _bookServiceMock.Setup(c => c.Add(book)).ReturnsAsync((Book)null); var result = await _booksController.Add(bookAddDto); Assert.IsType <BadRequestResult>(result); }
public ActionResult UpdateBook(int id, BookAddDto bookDto) { var theBook = _bookRepo.GetBookById(id); if (theBook == null) { return(NotFound()); } _mapper.Map(bookDto, theBook); _bookRepo.UpdateBook(theBook); _bookRepo.SaveChanges(); return(NoContent()); }
public async void Add_ShouldReturnOk_WhenBookIsAdded() { var book = CreateBook(); var bookAddDto = new BookAddDto() { Name = book.Name }; var bookResultDto = MapModelToBookResultDto(book); _mapperMock.Setup(m => m.Map <Book>(It.IsAny <BookAddDto>())).Returns(book); _bookServiceMock.Setup(c => c.Add(book)).ReturnsAsync(book); _mapperMock.Setup(m => m.Map <BookResultDto>(It.IsAny <Book>())).Returns(bookResultDto); var result = await _booksController.Add(bookAddDto); Assert.IsType <OkObjectResult>(result); }
public async Task <IActionResult> Add(BookAddDto bookDto) { if (!ModelState.IsValid) { return(BadRequest()); } var book = _mapper.Map <Book>(bookDto); var bookResult = await _bookService.Add(book); if (bookResult == null) { return(BadRequest()); } return(Ok(_mapper.Map <BookResultDto>(bookResult))); }
public async Task Create(BookAddDto book) { var bookToAdd = _mapper.Map <Book>(book); await _bookRepo.CreateAsync(bookToAdd); await _bookRepo.SaveChangesAsync(); var bookAuthorsToAdd = book.AuthorsIds.Select(aId => new AuthorBook { AuthorId = aId, BookId = bookToAdd.Id }); foreach (var ba in bookAuthorsToAdd) { await _authorBookRepo.CreateAsync(ba); } await _authorBookRepo.SaveChangesAsync(); }
public ActionResult <BookReadDto> AddBook(BookAddDto bookAddDto) { int userId = Int32.Parse(User.Claims.First(p => p.Type == "id").Value); if (Int32.Parse(User.Claims.First(p => p.Type == "id").Value) != userId) { return(Forbid()); } var bookModel = _mapper.Map <Book>(bookAddDto); bookModel.UserId = userId; bookModel.AddedDate = DateTime.Now; bookModel.IsAvaible = true; _repo.AddBook(bookModel); _repo.SaveChanges(); var bookReadDto = _mapper.Map <BookReadDto>(bookModel); return(Ok(bookReadDto)); }