Beispiel #1
0
        // GET: Series/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var seasons = await _context.Seasons.Include(s => s.Episodes)
                          .FirstOrDefaultAsync(m => m.ID == id);

            List <EpisodesViewModel> episodes = new List <EpisodesViewModel>();

            foreach (var episode in seasons.Episodes)
            {
                episodes.Add(new EpisodesViewModel()
                {
                    ID = episode.Season.ID, Titel = episode.Season.Titel, Nr = episode.Season.Nr
                });
            }
            if (seasons == null)
            {
                return(NotFound());
            }
            var model = new SeasonDetailViewModel()
            {
                ID = seasons.ID, Titel = seasons.Titel, Episodes = episodes, Rating = seasons.Rating
            };

            return(View(model));
        }
        public IActionResult View(SeasonDetailViewModel episodeVM, int seriesId, int seasonId)
        {
            int index = episodeVM.Episodes.Count - 1;
            EpisodeViewModel newEpisode = episodeVM.Episodes[index];

            Episode episode = new Episode
            {
                Title       = newEpisode.Title,
                Description = newEpisode.Description,
                PlayTime    = new TimeSpan(newEpisode.PlayTimeHours, newEpisode.PlayTimeMinutes, 0),
                ReleaseDate = newEpisode.ReleaseDate,
                SeasonId    = seasonId
            };

            _database.Episodes.Add(episode);
            _database.SaveChanges();

            return(RedirectToAction("View", new { SeriesId = seriesId, SeasonId = seasonId }));
        }
        public IActionResult View(int seriesId, int seasonId)
        {
            Season         season       = _database.Seasons.FirstOrDefault(a => a.SeriesId == seriesId && a.Id == seasonId);
            Series         series       = _database.Series.FirstOrDefault(a => a.Id == seriesId);
            List <Season>  otherSeasons = _database.Seasons.Where(a => a.SeriesId == seriesId).ToList();
            List <Episode> episodes     = _database.Episodes.Where(a => a.SeasonId == seasonId).ToList();

            SeasonDetailViewModel seasonDetail = new SeasonDetailViewModel()
            {
                SeriesTitle  = series.Title,
                SeasonId     = seasonId,
                SeriesId     = seriesId,
                SeasonNumber = season.SeasonNumber,
                Photo        = series.Photo
            };

            int episodenumber = 1;

            episodes.OrderBy(a => a.ReleaseDate);

            seasonDetail.Episodes = new List <EpisodeViewModel>();

            foreach (var episode in episodes)
            {
                EpisodeViewModel episodeVM = new EpisodeViewModel
                {
                    EpisodeNumber = episodenumber,
                    Description   = episode.Description,
                    PlayTime      = episode.PlayTime,
                    ReleaseDate   = episode.ReleaseDate,
                    Title         = episode.Title
                };

                seasonDetail.Episodes.Add(episodeVM);
                episodenumber++;
            }

            seasonDetail.Episodes.Add(new EpisodeViewModel {
                ReleaseDate = DateTime.Now
            });

            foreach (var seasonItem in otherSeasons)
            {
                List <Episode> episodeItems = _database.Episodes.Where(a => a.SeasonId == seasonItem.Id).ToList();
                DateTime       startDate    = episodeItems[0].ReleaseDate;
                DateTime       endDate      = episodeItems[episodeItems.Count - 1].ReleaseDate;


                SeasonViewModel seasonVM = new SeasonViewModel
                {
                    Id           = seasonItem.Id,
                    SeasonNumber = seasonItem.SeasonNumber,
                    Episodes     = seasonItem.Episodes.Count(),
                    StartDate    = startDate,
                    EndDate      = endDate
                };

                seasonDetail.Seasons.Add(seasonVM);
            }

            return(View(seasonDetail));
        }
Beispiel #4
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));
        }