public BaseResponse <BookOutputDto> CreateBook(BookInputDto bookInputDto) { if (Contains(x => x.Name.Equals(bookInputDto.Name, StringComparison.InvariantCultureIgnoreCase))) { throw new BadRequestException($"Tác phẩm {bookInputDto.Name} đã tồn tại"); } var book = Mapper.Map <Book>(bookInputDto); book = Create(book, out var isSaved); if (!isSaved) { throw new BadRequestException($"Không thể tạo tác phẩm {book.Name}"); } var bookCategories = _bookCategoryService.CreateMany(bookInputDto.CategoryIds.Select(categoryId => new BookCategory { BookId = book.Id, CategoryId = Guid.Parse(categoryId) }), out isSaved); if (!isSaved) { throw new BadRequestException($"Không thể set category cho tác phẩm {book.Name}"); } book.BookCategories = bookCategories as ICollection <BookCategory>; return(new BaseResponse <BookOutputDto>(HttpStatusCode.OK, data: Mapper.Map <BookOutputDto>(book))); }