示例#1
0
        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);
        }