Example #1
0
        public async Task <IActionResult> Post(Resources.Movie movieData)
        {
            Movie movie = _mapper.Map <Movie>(movieData);
            await movieRepository.Create(movie);

            await unitOfWork.CompleteAsync();

            movieData.IdMovie = movie.IdMovie;
            MovieData data = _mapper.Map <MovieData>(movieData);

            data = await movieDataRepository.Create(data);

            await unitOfWork.CompleteAsync();

            foreach (var genre in movieData.Genres)
            {
                await genreRepository.Create(new MovieDataGenre(data.IdMovieData, genre.Id));
            }
            foreach (var language in movieData.Languages)
            {
                await languageRepository.Create(new MovieDataLanguage(data.IdMovieData, language.Id));
            }
            await unitOfWork.CompleteAsync();

            return(Ok(_mapper.Map <Resources.Movie>(data)));
        }
Example #2
0
        public async Task <IActionResult> Get(int id)
        {
            Movie movie = await movieRepository.Get(id);

            Resources.Movie result = _mapper.Map <Resources.Movie>(movie);
            return(Ok(result));
        }
Example #3
0
        public async Task <IActionResult> Put([FromBody] Resources.UserPoints points)
        {
            List <Resources.Recommendation> recommendations = new List <Resources.Recommendation>();

            (await genreRepository.GetAll()).Where(g => g.IdGenre == points.Genre.Id)
            .Join(movieDataRepository.GetAll().Result, g => g.IdMovieData, md => md.IdMovieData, (g, md) => md)
            .ToList().ForEach(movie =>
            {
                Resources.Movie data          = _mapper.Map <Resources.Movie>(movie);
                int score                     = ScoreHelper.GetRecommendationScore(points, data, movieDataRepository, reviewRepository);
                Resources.Recommendation temp = new Resources.Recommendation {
                    Movie = data, Score = score
                };
                recommendations.Add(temp);
            });
            return(Ok(recommendations.OrderByDescending(val => val.Score).Take(10)));
        }
Example #4
0
        public static int GetRecommendationScore(Resources.UserPoints points, Resources.Movie movie, IMovieDataRepository movieDataRepository, IReviewRepository reviewRepository)
        {
            int imdb    = movie.Imdb.GetValueOrDefault();
            int ms      = movie.MetaScore.GetValueOrDefault();
            int com     = ScoreHelper.GetMovieCommunityScore(movie.IdMovie.Value, reviewRepository);
            int platFav = 0;
            int pop     = ScoreHelper.GetMoviePopularity(movie.IdMovie.Value, movieDataRepository, reviewRepository);

            if (movie.PlatFav)
            {
                platFav = 100;
            }

            int score = (imdb * points.Imdb / 100) + (ms * points.MetaScore / 100) + (com * points.Community / 100) + (platFav * points.PlatFav / 100)
                        + (pop * points.Popularity / 100);

            return(score);
        }