public async Task <IEnumerable <MovieTagsDomainModel> > GetAllAsync() { var data = await _movieTagsRepository.GetAll(); if (data == null) { return(null); } List <MovieTagsDomainModel> result = new List <MovieTagsDomainModel>(); MovieTagsDomainModel model; foreach (var item in data) { model = new MovieTagsDomainModel { MovieId = item.MovieId, TagId = item.Tagid }; result.Add(model); } return(result); }
public async Task <IEnumerable <MovieDomainModel> > GetAllMoviesWithThisTag(string tag) { List <MovieDomainModel> result = new List <MovieDomainModel>(); List <string> listOfString = tag.Split(' ').ToList(); var allMovieTags = await _movieTagsRepository.GetAll(); var allMovies = await _moviesRepository.GetAllWithMovieTags(); List <Movie> listOfFilms = new List <Movie>(); foreach (var stringData in listOfString) { List <MovieTag> movieTags; movieTags = allMovieTags.Where(y => y.Tag.Name.Contains(stringData) || y.Tag.Type.Contains(stringData)).ToList(); if (movieTags.Count != 0) { if (listOfFilms.Count == 0) { foreach (var movieTag in movieTags) { var movie = allMovies.SingleOrDefault(g => g.Id.Equals(movieTag.MovieId)); listOfFilms.Add(movie); } } else { var listOfFilmsForCheck = new List <Movie>(); listOfFilmsForCheck = listOfFilms; for (int j = 0; j < listOfFilmsForCheck.Count; j++) { int numberOfNotMatching = 0; for (int i = 0; i < movieTags.Count; i++) { if (!movieTags[i].MovieId.Equals(listOfFilmsForCheck[j].Id)) { numberOfNotMatching = numberOfNotMatching + 1; } if (numberOfNotMatching == movieTags.Count) { listOfFilms.Remove(listOfFilmsForCheck[j]); } } } } } else { return(null); } } var n = listOfFilms.Count(); if (listOfFilms.Count() == 0) { return(null); } foreach (var item in listOfFilms) { MovieDomainModel model = new MovieDomainModel { Title = item.Title, Current = item.Current, Id = item.Id, Year = item.Year, Rating = item.Rating ?? 0 }; result.Add(model); } return(result); }