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