public void Put(PutPublicationHouseView publicationHouse) { PublicationHouse publicationHouseModel = _publicationHouseRepository.Get(publicationHouse.Id); publicationHouseModel.Name = publicationHouse.Name; publicationHouseModel.Adress = publicationHouse.Adress; _publicationHouseRepository.Update(publicationHouseModel); IEnumerable <int> selectedBooks = publicationHouse.Books.Select(id => id.Id); List <BookPublicationHouse> oldPublicationHouseBooks = _bookInPublicationHouseRepository.GetAllByPublicationHouseId(publicationHouse.Id); var oldPublicationHouseBooksWithRelation = oldPublicationHouseBooks.Where(x => x.BookId != 0).ToList(); var intersectBooks = oldPublicationHouseBooksWithRelation.Select(x => x.BookId).Intersect(selectedBooks).ToList(); var exceptBooks = oldPublicationHouseBooksWithRelation.Select(x => x.BookId).Except(selectedBooks).ToList(); _bookInPublicationHouseRepository.Delete(oldPublicationHouseBooks.Where(x => exceptBooks.Contains(x.BookId)).ToList()); var currentPublicationHouseBooks = new List <BookPublicationHouse>(); foreach (var newBookId in selectedBooks) { if (intersectBooks.FirstOrDefault(x => x == newBookId) == 0) { currentPublicationHouseBooks.Add(new BookPublicationHouse() { PublicationHouseId = publicationHouseModel.Id, BookId = newBookId }); } } _bookInPublicationHouseRepository.Insert(currentPublicationHouseBooks); }
public IActionResult Put(int id, [FromBody] PutPublicationHouseView publicationHouse) { if (ModelState.IsValid) { _publicationHouseService.Put(publicationHouse); return(Ok(publicationHouse)); } return(BadRequest(ModelState)); }