Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }