public void DeleteNotEnoughVotes(List <AlternativeTitle> mappingsTitles) { var toRemove = mappingsTitles.Where(t => t.SourceType == SourceType.Mappings && t.Votes < 4); var realT = _titleRepo.FindBySourceIds(toRemove.Select(t => t.SourceId).ToList()); _titleRepo.DeleteMany(realT); }
public List <AlternativeTitle> UpdateTitles(List <AlternativeTitle> titles, Movie movie) { int movieId = movie.Id; // First update the movie ids so we can correlate them later. titles.ForEach(t => t.MovieId = movieId); // Then make sure none of them are the same as the main title. titles = titles.Where(t => t.CleanTitle != movie.CleanTitle).ToList(); // Then make sure they are all distinct titles titles = titles.DistinctBy(t => t.CleanTitle).ToList(); // Make sure we are not adding titles that exist for other movies (until language PR goes in) titles = titles.Where(t => !_titleRepo.All().Any(e => e.CleanTitle == t.CleanTitle && e.MovieId != t.MovieId)).ToList(); // Now find titles to delete, update and insert. var existingTitles = _titleRepo.FindByMovieId(movieId); var insert = titles.Where(t => !existingTitles.Contains(t)); var update = existingTitles.Where(t => titles.Contains(t)); var delete = existingTitles.Where(t => !titles.Contains(t)); _titleRepo.DeleteMany(delete.ToList()); _titleRepo.UpdateMany(update.ToList()); _titleRepo.InsertMany(insert.ToList()); return(titles); }