Exemplo n.º 1
0
        private Book UpdateBookCategories(Book oldBook, List <Guid> newCategoryIds, ref bool isSaved)
        {
            var oldBookCategories = _bookCategoryService.Where(x => x.BookId == oldBook.Id).ToList();

            // create new book - category ids
            var newIdsAdded = newCategoryIds.Where(id => oldBookCategories.All(bc => bc.CategoryId != id)).ToList();

            if (newIdsAdded.Any())
            {
                _bookCategoryService.CreateMany(
                    newIdsAdded.Select(id => new BookCategory {
                    CategoryId = id, BookId = oldBook.Id
                }), out isSaved
                    );
            }

            // delete old book - category ids
            var oldIdsRemoved = oldBookCategories.Where(bc => !newCategoryIds.Contains(bc.CategoryId)).ToList();

            if (oldIdsRemoved.Any())
            {
                _bookCategoryService.Delete(oldIdsRemoved, out isSaved);
            }

            return(oldBook);
        }