/// <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); }
public ActionResult SaveOrUpdateSeason(TvSerieSeason season, HttpPostedFileBase posterFile) { if (!string.IsNullOrEmpty(season.PosterFileName)) { season.PosterFileName = Path.GetFileName(season.PosterFileName); } if (posterFile != null && posterFile.ContentLength > 0) { var fileName = Path.GetFileName(posterFile.FileName); var directory = Server.MapPath("~/Content/images/tvSeries"); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } // Saves the original image if (fileName != null) { var originalFilePath = Path.Combine(directory, fileName); posterFile.SaveAs(originalFilePath); ThumbnailHandler.CreateAllThumbs(originalFilePath); } } using (var uow = new UnitOfWork(true)) { var tvSerie = uow.TvSeries.Find(season.TvSerieId); if (season.Id == 0) { tvSerie.AddSeason(season); } else { var oldSeason = tvSerie.Seasons.Single(x => x.Id == season.Id); oldSeason.IsDone = season.IsDone; oldSeason.Number = season.Number; oldSeason.ReleaseDate = season.ReleaseDate; oldSeason.PosterFileName = season.PosterFileName; } uow.TvSeries.SaveOrUpdate(tvSerie); uow.Commit(); return RedirectToAction("View", new { id = tvSerie.Id }); } }