Beispiel #1
0
        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);
        }
Beispiel #2
0
        public void Put(PutBookView book)
        {
            Book bookModel = _bookRepository.Get(book.Id);

            bookModel.Name             = book.Name;
            bookModel.YearOfPublishing = book.YearOfPublishing;
            _bookRepository.Update(bookModel);

            IEnumerable <int> selectedAuthors = book.Authors.Select(id => id.Id);
            List <BookAuthor> oldBookAuthors  = _bookInAuthorRepository.GetAllByBookId(book.Id);
            var oldBookAuthorsWithRelation    = oldBookAuthors.Where(x => x.AuthorId != 0).ToList();
            var intersectAuthors = oldBookAuthorsWithRelation.Select(x => x.AuthorId).Intersect(selectedAuthors).ToList();
            var exceptAuthors    = oldBookAuthorsWithRelation.Select(x => x.AuthorId).Except(selectedAuthors).ToList();

            _bookInAuthorRepository.Delete(oldBookAuthors.Where(x => exceptAuthors.Contains(x.AuthorId)).ToList());

            var currentBookAuthors = new List <BookAuthor>();

            foreach (var newAuthorId in selectedAuthors)
            {
                if (intersectAuthors.FirstOrDefault(x => x == newAuthorId) == 0)
                {
                    currentBookAuthors.Add(new BookAuthor()
                    {
                        BookId = bookModel.Id, AuthorId = newAuthorId
                    });
                }
            }
            _bookInAuthorRepository.Insert(currentBookAuthors);

            IEnumerable <int>           selectedPblicationHouses = book.PublicationHouses.Select(id => id.Id);
            List <BookPublicationHouse> oldPublicationHouses     = _bookInPublicationHouseRepository.GetAllByBookId(book.Id);
            var oldBookPublicationHousesWithRelation             = oldPublicationHouses.Where(x => x.PublicationHouseId != 0).ToList();
            var intersectPublicationHouses = oldBookPublicationHousesWithRelation.Select(x => x.PublicationHouseId).Intersect(selectedPblicationHouses).ToList();
            var exceptPublicationHouses    = oldBookPublicationHousesWithRelation.Select(x => x.PublicationHouseId).Except(selectedPblicationHouses).ToList();

            _bookInPublicationHouseRepository.Delete(oldPublicationHouses.Where(x => exceptPublicationHouses.Contains(x.PublicationHouseId)).ToList());

            var currentBookPublicationHouses = new List <BookPublicationHouse>();

            foreach (var newPublicationHouseId in selectedPblicationHouses)
            {
                if (intersectPublicationHouses.FirstOrDefault(x => x == newPublicationHouseId) == 0)
                {
                    currentBookPublicationHouses.Add(new BookPublicationHouse()
                    {
                        BookId = bookModel.Id, PublicationHouseId = newPublicationHouseId
                    });
                }
            }
            _bookInPublicationHouseRepository.Insert(currentBookPublicationHouses);
        }