Пример #1
0
        public async Task <ActionResult <DetailsMovieDTO> > Get(int id)
        {
            var movie = await context.Movies.Where(x => x.Id == id)
                        .Include(movie => movie.MoviesGenres).ThenInclude(MG => MG.Genre)
                        .Include(movie => movie.MoviesActors).ThenInclude(movieActor => movieActor.Person)
                        .FirstOrDefaultAsync();

            if (movie == null)
            {
                return(NotFound());
            }

            var voteAverage = 0.0;
            var uservote    = 0;

            if (await context.MovieRatings.AnyAsync(x => x.MovieId == id))
            {
                voteAverage = await context.MovieRatings
                              .Where(x => x.MovieId == id)
                              .AverageAsync(x => x.Rate);
            }

            if (HttpContext.User.Identity.IsAuthenticated)
            {
                var user = await userManager.FindByEmailAsync(HttpContext.User.Identity.Name);

                var userId = user.Id;
                Console.Write($"UserID: {userId}");
                var uservoteDb = await context.MovieRatings
                                 .FirstOrDefaultAsync(x => x.MovieId == id && x.UserId == userId);

                Console.Write($"User Rating: {uservoteDb.Rate}");
                if (uservoteDb != null)
                {
                    uservote = uservoteDb.Rate;
                }
            }



            movie.MoviesActors = movie.MoviesActors.OrderBy(x => x.Order).ToList();

            var model = new DetailsMovieDTO();

            model.Movie  = movie;
            model.Genres = movie.MoviesGenres.Select(x => x.Genre).ToList();
            model.Actors = movie.MoviesActors.Select(x =>
                                                     new Person
            {
                Name      = x.Person.Name,
                Picture   = x.Person.Picture,
                Character = x.Character,
                Id        = x.PersonId
            }).ToList();

            model.UserVote    = uservote;
            model.AverageVote = voteAverage;

            return(model);
        }
Пример #2
0
        public async Task <ActionResult <DetailsMovieDTO> > Get(int id)
        {
            var movie = await context.Movies.Where(x => x.Id == id)
                        .Include(x => x.MoviesGenres).ThenInclude(x => x.Genre)
                        .Include(x => x.MoviesActors).ThenInclude(x => x.Person)
                        .FirstOrDefaultAsync();

            if (movie == null)
            {
                return(NotFound());
            }

            movie.MoviesActors = movie.MoviesActors.OrderBy(x => x.Order).ToList();

            var model = new DetailsMovieDTO();

            model.Movie  = movie;
            model.Genres = movie.MoviesGenres.Select(x => x.Genre).ToList();
            model.Actors = movie.MoviesActors.Select(x =>
                                                     new Person
            {
                Name      = x.Person.Name,
                Picture   = x.Person.Picture,
                Character = x.Character,
                Id        = x.PersonId
            }).ToList();

            return(model);
        }
Пример #3
0
        public async Task <ActionResult <DetailsMovieDTO> > GetMovieDetails(int id)
        {
            var movie = await _context.Movies.Where(x => x.Id == id)
                        .Include(x => x.MoviesGenres).ThenInclude(x => x.Genre)
                        .Include(x => x.MoviesActors).ThenInclude(x => x.Person)
                        .FirstOrDefaultAsync();

            if (movie == null)
            {
                return(NotFound());
            }

            // Get the Average Rating of the current movie
            var averageVote = 0.0;
            var userVote    = 0;

            if (await _context.MovieRatings.AnyAsync(x => x.MovieId == id))
            {
                averageVote = await _context.MovieRatings.Where(x => x.MovieId == id)
                              .AverageAsync(x => x.Rate);

                // Check if User is logged in
                if (HttpContext.User.Identity.IsAuthenticated)
                {
                    var user = await _userManager.FindByNameAsync(HttpContext.User.Identity.Name);

                    //var user = await _userManager.FindByEmailAsync(HttpContext.User.Identity.Name);
                    var userId = user.Id;

                    var userVoteDB = await _context.MovieRatings
                                     .FirstOrDefaultAsync(x => x.MovieId == id && x.UserId == userId);

                    if (userVoteDB != null)
                    {
                        userVote = userVoteDB.Rate;
                    }
                }
            }

            movie.MoviesActors = movie.MoviesActors.OrderBy(x => x.Order).ToList();

            var model = new DetailsMovieDTO();

            model.Movie  = movie;
            model.Genres = movie.MoviesGenres.Select(x => x.Genre).ToList();
            model.Actors = movie.MoviesActors.Select(x => new Person
            {
                Name      = x.Person.Name,
                Picture   = x.Person.Picture,
                Character = x.Character,
                Id        = x.PersonId
            }
                                                     ).ToList();

            model.UserVote    = userVote;
            model.AverageVote = averageVote;

            return(model);
        }
Пример #4
0
        public async Task <DetailsMovieDTO> GetDetailsMovieDTO(int id)
        {
            var movie = await context.Movies.Where(x => x.Id == id)
                        .Include(x => x.MoviesGenres).ThenInclude(x => x.Genre)
                        .Include(x => x.MoviesActors).ThenInclude(x => x.Person)
                        .AsNoTracking()
                        .FirstOrDefaultAsync();

            if (movie == null)
            {
                return(null);
            }

            var voteAverage = 0.0;
            var uservote    = 0;

            if (await context.MovieRatings.AnyAsync(x => x.MovieId == id))
            {
                voteAverage = await context.MovieRatings.Where(x => x.MovieId == id)
                              .AverageAsync(x => x.Rate);

                var userId = await authenticationStateService.GetCurrentUserId();

                if (userId != null)
                {
                    var userVoteDB = await context.MovieRatings
                                     .FirstOrDefaultAsync(x => x.MovieId == id && x.UserId == userId);

                    if (userVoteDB != null)
                    {
                        uservote = userVoteDB.Rate;
                    }
                }
            }

            movie.MoviesActors = movie.MoviesActors.OrderBy(x => x.Order).ToList();

            var model = new DetailsMovieDTO();

            model.Movie  = movie;
            model.Genres = movie.MoviesGenres.Select(x => x.Genre).ToList();
            model.Actors = movie.MoviesActors.Select(x =>
                                                     new Person
            {
                Name      = x.Person.Name,
                Picture   = x.Person.Picture,
                Character = x.Character,
                Id        = x.PersonId
            }).ToList();

            model.UserVote    = uservote;
            model.AverageVote = voteAverage;
            return(model);
        }
Пример #5
0
        public async Task <ActionResult <DetailsMovieDTO> > Get(int id)
        {
            var movie = await dbcontext.MoviesRecords.Where(x => x.Id == id)
                        .Include(x => x.GenresList).ThenInclude(x => x.Genre)
                        .Include(x => x.ActorList).ThenInclude(x => x.Person)
                        .FirstOrDefaultAsync();

            if (movie == null)
            {
                return(NotFound());
            }

            var voteAverage = 0.0;
            var userRating  = 0;

            if (await dbcontext.MovieRatings.AnyAsync(x => x.MovieId == id))
            {
                voteAverage = await dbcontext.MovieRatings.Where(x => x.MovieId == id).AverageAsync(x => x.Rate);

                if (HttpContext.User.Identity.IsAuthenticated)
                {
                    var user = await userManager.FindByEmailAsync(HttpContext.User.Identity.Name);

                    var userId = user.Id;

                    var userVoteFromDb = await dbcontext.MovieRatings.FirstOrDefaultAsync(x => x.MovieId == id && x.UserId == userId);

                    if (userVoteFromDb != null)
                    {
                        userRating = userVoteFromDb.Rate;
                    }
                }
            }

            movie.ActorList = movie.ActorList.OrderBy(x => x.Order).ToList();

            var model = new DetailsMovieDTO
            {
                MovieItem = movie,
                Genres    = movie.GenresList.Select(x => x.Genre).ToList(),
                Actors    = movie.ActorList.Select(x =>
                                                   new Person
                {
                    Name      = x.Person.Name,
                    Picture   = x.Person.Picture,
                    Character = x.CharacterName,
                    Id        = x.PersonId
                }).ToList(),
                UserVote    = userRating,
                AverageVote = voteAverage
            };

            return(model);
        }
Пример #6
0
        public async Task <ActionResult <DetailsMovieDTO> > Get(int id)
        {
            var movie = await context.Movies.Where(e => e.Id == id)
                        .Include(e => e.MoviesGenres).ThenInclude(e => e.Genre)
                        .Include(e => e.MoviesActors).ThenInclude(e => e.Person)
                        .FirstOrDefaultAsync();

            if (movie == null)
            {
                return(NotFound());
            }

            var voteAvarage = 0.0;
            var uservote    = 0;

            if (await context.MovieRatings.AnyAsync(e => e.MovieId == id))
            {
                voteAvarage = await context.MovieRatings.Where(e => e.MovieId == id)
                              .AverageAsync(e => e.Rate);

                if (HttpContext.User.Identity.IsAuthenticated)
                {
                    var user = await userManager.FindByEmailAsync(HttpContext.User.Identity.Name);

                    var userId = user.Id;

                    var userVoteDB = await context.MovieRatings
                                     .FirstOrDefaultAsync(e => e.MovieId == id && e.UserId == userId);

                    if (userVoteDB != null)
                    {
                        uservote = userVoteDB.Rate;
                    }
                }
            }

            movie.MoviesActors = movie.MoviesActors.OrderBy(e => e.Order).ToList();
            var model = new DetailsMovieDTO();

            model.Movie  = movie;
            model.Genres = movie.MoviesGenres.Select(e => e.Genre).ToList();
            model.Actors = movie.MoviesActors.Select(e =>
                                                     new Person {
                Name      = e.Person.Name,
                Picture   = e.Person.Picture,
                Character = e.Character,
                Id        = e.PersonId
            }).ToList();

            model.AverageVote = voteAvarage;
            model.UserVote    = uservote;
            return(model);
        }
Пример #7
0
 protected async override Task OnInitializedAsync()
 {
     model = await moviesRepository.GetDetailsMovieDTO(MovieId);
 }