Exemplo n.º 1
0
        /// <summary>
        /// Saves a new watching session session and creates a new series/season/episode if necessary
        /// </summary>
        /// <param name="episodeEntry">Aen episode entry</param>
        /// <returns>A JSON representation of a timeline entry</returns>
        public JsonResult QuickSave(TvSerieEpisodeEntry episodeEntry)
        {
            // Used to emulate a failure
            if (episodeEntry.EpisodeTitle == "FAIL") {
                throw new Exception("Une erreur");
            }

            TvWatchingSession watchingSession;
            using (var uow = new UnitOfWork(true)) {
                var serie = uow.TvSeries.FindByTitle(episodeEntry.Title) ?? new TvSerie() { Title = episodeEntry.Title };

                var season = serie.Seasons.SingleOrDefault(x => x.Number == episodeEntry.SeasonNb);
                if (season == null) {
                    season = new TvSerieSeason() { Number = episodeEntry.SeasonNb };
                    serie.AddSeason(season);
                }

                var episode = season.Episodes.SingleOrDefault(x => x.Number == episodeEntry.EpisodeNb);
                if (episode == null) {
                    episode = new TvSerieEpisode() { Number = episodeEntry.EpisodeNb, Title = episodeEntry.EpisodeTitle };
                    season.AddEpisode(episode);
                }

                watchingSession = new TvWatchingSession() { Date = DateTime.ParseExact(episodeEntry.EntryDate, "dd/MM/yyyy", null) };
                episode.AddWatchingSession(watchingSession);

                uow.TvSeries.SaveOrUpdate(serie);
                uow.Commit();
            }

            var timelineEntry = new TimelineEntry(watchingSession, this);
            return Json(timelineEntry);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Saves or updates an episode and returns
        /// </summary>
        /// <param name="episode">A TV series episode</param>
        /// <returns>A JSON TV series episode</returns>
        public JsonResult SaveOrUpdateEpisode(TvSerieEpisode episode)
        {
            using (var uow = new UnitOfWork(true)) {
                var tvSerie = uow.TvSeries.Find(episode.TvSerieId);
                var season = tvSerie.Seasons.Single(x => x.Id == episode.SeasonId);
                var newEpisode = episode;

                if (newEpisode.Id == 0) {
                    season.AddEpisode(newEpisode);
                } else {
                    newEpisode = season.Episodes.Single(x => x.Id == episode.Id);
                    newEpisode.Number = episode.Number;
                    newEpisode.Title = episode.Title;
                    newEpisode.Director = episode.Director;
                }

                uow.TvSeries.SaveOrUpdate(tvSerie);
                uow.Commit();

                return Json(newEpisode);
            }
        }