// 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)); }
// 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)); }