Exemplo n.º 1
0
        // GET: Seasons
        public async Task <IActionResult> Index(long?seriesId)
        {
            var seasons = await _context.Seasons.Include(s => s.Series)
                          .Include(s => s.Episodes)
                          .Where(x => x.SeriesId == seriesId)
                          .ToListAsync();

            var viewModel = new SeasonIndexListViewModel
            {
                SeriesId   = seriesId,
                ViewModels = new List <SeasonIndexViewModel>()
            };

            List <DataPointLine> LineChartDataPoints = new List <DataPointLine>();

            foreach (var season in seasons)
            {
                var seasonViewModel = new SeasonIndexViewModel
                {
                    Id               = season.Id,
                    Name             = season.Name,
                    SeasonNumber     = season.SeasonNumber,
                    NumberOfEpisodes = season.NumberOfEpisodes,
                };

                if (season.AiredFrom != null)
                {
                    seasonViewModel.AiredFrom = season.AiredFrom.Value.ToString("dd MMMM yyyy");
                }

                viewModel.ViewModels.Add(seasonViewModel);


                var meanRating = season.Episodes.Sum(x => x.UserRating) / season.Episodes.Count();

                var dataPoint = new DataPointLine(Convert.ToDouble(meanRating), "S" + season.SeasonNumber.ToString());
                LineChartDataPoints.Add(dataPoint);
            }

            ViewBag.DataPointsLine = JsonConvert.SerializeObject(LineChartDataPoints);

            return(View(viewModel));
        }
Exemplo n.º 2
0
        // GET: Seasons/Details/5
        public async Task <IActionResult> Details(long?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            string userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

            var season = await _context.Seasons
                         .Include(s => s.Series)
                         .Include(s => s.Episodes)
                         .FirstOrDefaultAsync(m => m.Id == id);

            var viewModel = new SeasonDetailViewModel
            {
                Id           = season.Id,
                SeriesId     = season.SeriesId,
                Name         = season.Name,
                Overview     = season.Overview,
                SeasonNumber = season.SeasonNumber,
            };

            if (season.AiredFrom != null)
            {
                viewModel.AiredFrom = season.AiredFrom.Value.ToString("dd MMMM yyyy");
            }

            viewModel.Episodes = new List <EpisodeOnSeasonViewModel>();

            List <DataPointLine> LineChartDataPoints = new List <DataPointLine>();

            foreach (var episode in season.Episodes)
            {
                var episodeViewModel = new EpisodeOnSeasonViewModel
                {
                    Id                = episode.Id,
                    Name              = episode.Name,
                    Overview          = episode.Overview,
                    EpisodeNumber     = episode.SeasonEpisodeNumber,
                    EpisodeSiteRating = episode.UserRating
                };

                if (episode.Aired != null)
                {
                    episodeViewModel.Aired = episode.Aired.Value.ToString("dd MMMM yyyy");
                }

                var userEpisode = await _context.UserEpisodes
                                  .Where(x => x.EpisodeId == episode.Id && x.UserId == userId)
                                  .FirstOrDefaultAsync();

                if (userEpisode != null)
                {
                    episodeViewModel.Rating = (EpisodeRating)userEpisode.Rating;
                }

                viewModel.Episodes.Add(episodeViewModel);

                var dataPoint = new DataPointLine(Convert.ToDouble(episode.UserRating), "E" + episode.SeasonEpisodeNumber.ToString());
                LineChartDataPoints.Add(dataPoint);
            }

            ViewBag.DataPointsLine = JsonConvert.SerializeObject(LineChartDataPoints);

            viewModel.Episodes = viewModel.Episodes.OrderBy(x => x.EpisodeNumber).ToList();


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

            return(View(viewModel));
        }