Exemplo n.º 1
0
        /// <summary>
        /// Permet d'enlever une vidéo du model, ainsi que les informations
        /// d'épisode TmDb (voir Saison si plus d'épisode).
        /// </summary>
        /// <param name="video"></param>
        internal void RemoveVideo(ShowInformation video)
        {
            ShowInformation.Remove(video);

            TvEpisode episodeToDelete = TvEpisodes.FirstOrDefault(x => x.SeasonNumber == video.Saison &&
                                                                  x.EpisodeNumber == video.Episode);

            if (episodeToDelete != null)
            {
                TvEpisodes.Remove(episodeToDelete);

                if (TvEpisodes.All(x => x.SeasonNumber != video.Saison))
                {
                    TvSeason saison = TvSeasons.FirstOrDefault(x => x.SeasonNumber == video.Saison);

                    if (saison != null)
                    {
                        TvSeasons.Remove(saison);
                    }
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Retourne les épisodes par rapport à une saison.
 /// </summary>
 /// <param name="saison"></param>
 public IEnumerable <TvEpisode> GetEpisodes(int saison)
 {
     return(TvEpisodes.Where(x => x.SeasonNumber == saison).ToList());
 }
Exemplo n.º 3
0
 /// <summary>
 /// Retourne une indication si le ShowModel connait l'épisode de la saison demandé.
 /// </summary>
 /// <param name="seasonNumber"></param>
 /// <param name="episodeNumber"></param>
 /// <returns></returns>
 internal bool HaveEpisode(short seasonNumber, short episodeNumber)
 {
     return(TvEpisodes.Any(x => x.SeasonNumber == seasonNumber &&
                           x.EpisodeNumber == episodeNumber));
 }
Exemplo n.º 4
0
        // Response 3
        // GET: /tvseries
        //public IActionResult Index()
        //{
        //    var result = _db.TvSer;
        //    return Ok();
        //}
        public async Task <IActionResult> Get(long Id)
        {
            /*{
             *  TvSeries.Id,
             *  TvSeries.Title,
             *  TvSeries.StoryLine,
             *  TvSeries.PublishDate,
             *  TvSeries.Image.ImageUrl,
             *  TvSeries.Duration,
             *  TvSeries.ContentRating.Name,
             *  TvSeries.AvgRating,
             *  TvSeries.VotesCount,
             *  TvSeries.TvEpisode.Count(),
             *  Crew : {
             *      Cast: {
             *
             *  }
             *  }
             *  Platforms: [ { Platform.Name },... ],
             *  Seasons: [  **OrderBy SeasonNumber
             *            {
             *              Season.Id,
             *              Season.SeasonNumber,
             *            },...
             *  ]
             *
             * }*/

            // Complexity: ?
            var tvEpisodeIds = await(from TvEpisode in db.TvEpisodes
                                     where TvEpisode.Season.TvSeriesId == Id
                                     select TvEpisode.Id).ToListAsync();

            var castPeople = (from TvEpisodeCast in db.TvEpisodeCasts
                              where TvEpisodeCast.TvEpisode.Season.TvSeriesId == Id
                              select new
            {
                PersonId = TvEpisodeCast.Person.Id,
                TvEpisodeCast.Person.FullName,
                TvEpisodeCast.Person.Image.ImageUrl,
                TvEpisodeCast.Person.BirthDate,
                TvEpisodeCast.Person.DeathDate
            })
                             .Distinct();

            var castCharacters = (from TvEpisodeCastCharacter in db.TvEpisodeCastCharacters
                                  where TvEpisodeCastCharacter.TvEpisodeCast.TvEpisode.Season.TvSeriesId == Id
                                  select new
            {
                TvEpisodeCastCharacter.TvEpisodeCast.PersonId,
                TvEpisodeCastCharacter.Character
            }).Distinct();

            var cast = (from Person in castPeople
                        let TvEpisodes = (from TvEpisodeCastCharacter in db.TvEpisodeCastCharacters
                                          where TvEpisodeCastCharacter.TvEpisodeCast.PersonId == Person.PersonId
                                          let TvEpisode = TvEpisodeCastCharacter.TvEpisodeCast.TvEpisode
                                                          select new
            {
                TvEpisode.Id,
                //TvEpisode.Title,
                TvEpisode.AirDate
            }).Distinct()
                                         select new
            {
                Person,
                //TvEpisodes,
                characters = (from TvEpisodeCastCharacter in castCharacters
                              where TvEpisodeCastCharacter.PersonId == Person.PersonId
                              select TvEpisodeCastCharacter.Character).Distinct().ToList(),
                episodesCount = TvEpisodes.Count(),
                firstAppearence = TvEpisodes.Min(x => x.AirDate),
                lastAppearence = TvEpisodes.Max(x => x.AirDate)
            }).ToList();


            var directors = (await(from TvEpisodeDirector in db.TvEpisodeDirectors
                                   where TvEpisodeDirector.TvEpisode.Season.TvSeriesId == Id
                                   select new
            {
                Person = new
                {
                    PersonId = TvEpisodeDirector.Person.Id,
                    TvEpisodeDirector.Person.FullName,
                    TvEpisodeDirector.Person.Image.ImageUrl
                },
                TvEpisodeDirector.TvEpisode.AirDate
            }).ToListAsync())
                            .GroupBy(
                d => d.Person,
                d => d.AirDate,
                (person, airdates) => new
            {
                person,
                episodesCount   = airdates.Count(),
                firstAppearence = airdates.Max(),
                lastAppearence  = airdates.Min()
            });
            var writers = (await(from TvEpisodeWriter in db.TvEpisodeWriters
                                 where TvEpisodeWriter.TvEpisode.Season.TvSeriesId == Id
                                 select new
            {
                Person = new
                {
                    PersonId = TvEpisodeWriter.Person.Id,
                    TvEpisodeWriter.Person.FullName,
                    TvEpisodeWriter.Person.Image.ImageUrl
                },
                TvEpisodeWriter.TvEpisode.AirDate
            }).ToListAsync())
                          .GroupBy(
                d => d.Person,
                d => d.AirDate,
                (person, airdates) => new
            {
                person,
                episodesCount   = airdates.Count(),
                firstAppearence = airdates.Max(),
                lastAppearence  = airdates.Min()
            });
            var producers = (await(from TvEpisodeProducer in db.TvEpisodeProducers
                                   where TvEpisodeProducer.TvEpisode.Season.TvSeriesId == Id
                                   select new
            {
                Person = new
                {
                    PersonId = TvEpisodeProducer.Person.Id,
                    TvEpisodeProducer.Person.FullName,
                    TvEpisodeProducer.Person.Image.ImageUrl
                },
                TvEpisodeProducer.TvEpisode.AirDate
            }).ToListAsync())
                            .GroupBy(
                d => d.Person,
                d => d.AirDate,
                (person, airdates) => new
            {
                person,
                episodesCount   = airdates.Count(),
                firstAppearence = airdates.Max(),
                lastAppearence  = airdates.Min()
            });
            //var cast = await   (from TvEpisodeCast in db.TvEpisodeCasts
            //                    where TvEpisodeCast.TvEpisode.Season.TvSeriesId == Id
            //                    orderby TvEpisodeCast.Importance
            //                    group TvEpisodeCast by TvEpisodeCast.Person into PersonGroup
            //                    select new
            //                    {
            //                        person = new
            //                        {
            //                            PersonGroup.Key.Id,
            //                            PersonGroup.Key.FullName,
            //                            PersonGroup.Key.BirthDate,
            //                            PersonGroup.Key.DeathDate,
            //                            PersonGroup.Key.Image.ImageUrl
            //                        },
            //                        characters = (from TvEpisodeCast in PersonGroup
            //                                      from TvEpisodeCastCharacter in db.TvEpisodeCastCharacters
            //                                      where TvEpisodeCast.PersonId == PersonGroup.Key.Id
            //                                      where TvEpisodeCastCharacter.TvEpisodeCastId == TvEpisodeCast.Id
            //                                      select TvEpisodeCastCharacter.Character.Name).ToList()
            //                    }).ToListAsync();

            // Complexity: 1
            var seasons = (from Season in db.Seasons
                           where Season.TvSeriesId == Id
                           orderby Season.SeasonNumber
                           select new { Season.Id, Season.SeasonNumber });

            // Complexity: n
            var episodesCount = (from TvEpisode in db.TvEpisodes
                                 from season in seasons
                                 where TvEpisode.SeasonId == season.Id
                                 select true).Count();
            // Complexity: n?
            var platforms = (from TvSeriesPlatform in db.TvSeriesPlatforms
                             from Platform in db.Platforms
                             where TvSeriesPlatform.TvSeriesId == Id
                             where TvSeriesPlatform.PlatformId == Platform.Id
                             select Platform).ToList();
            // Complexity: 1
            var tvSeries = (from TvSeries in db.TvSeries
                            where TvSeries.Id == Id
                            select new
            {
                TvSeries.Id,
                TvSeries.Title,
                TvSeries.StoryLine,
                TvSeries.PublishDate,
                TvSeries.Image.ImageUrl,
                TvSeries.Duration,
                ContentRating = TvSeries.ContentRating.Name,
                episodesCount,
                TvSeries.AvgRating,
                TvSeries.VotesCount,
                Platforms = platforms,
                Seasons = seasons.ToList(),
                Crew = new
                {
                    directors,
                    writers,
                    producers,
                    cast
                }
            });



            if (!tvSeries.Any())
            {
                return(NotFound(new ResWrapper {
                    Status = "NotFound", args = new { Id }
                }));
            }

            return(Ok(new ResWrapper {
                Status = "OK", Data = tvSeries.Single(), args = new { Id }
            }));
        }