示例#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);
        }
示例#2
0
        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 });
            }
        }