public Contract_AnimeSeries_SaveResponse SaveSeries(Contract_AnimeSeries_Save contract, int userID) { Contract_AnimeSeries_SaveResponse contractout = new Contract_AnimeSeries_SaveResponse(); contractout.ErrorMessage = ""; contractout.AnimeSeries = null; try { AnimeSeriesRepository repSeries = new AnimeSeriesRepository(); AnimeSeries ser = null; int? oldGroupID = null; if (contract.AnimeSeriesID.HasValue) { ser = repSeries.GetByID(contract.AnimeSeriesID.Value); if (ser == null) { contractout.ErrorMessage = "Could not find existing series with ID: " + contract.AnimeSeriesID.Value.ToString(); return contractout; } // check if we are moving a series oldGroupID = ser.AnimeGroupID; } else { ser = new AnimeSeries(); ser.DateTimeCreated = DateTime.Now; ser.DefaultAudioLanguage = ""; ser.DefaultSubtitleLanguage = ""; ser.MissingEpisodeCount = 0; ser.MissingEpisodeCountGroups = 0; ser.LatestLocalEpisodeNumber = 0; ser.SeriesNameOverride = ""; } ser.AnimeGroupID = contract.AnimeGroupID; ser.AniDB_ID = contract.AniDB_ID; ser.DefaultAudioLanguage = contract.DefaultAudioLanguage; ser.DefaultSubtitleLanguage = contract.DefaultSubtitleLanguage; ser.DateTimeUpdated = DateTime.Now; ser.SeriesNameOverride = contract.SeriesNameOverride; ser.DefaultFolder = contract.DefaultFolder; AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository(); AniDB_Anime anime = repAnime.GetByAnimeID(ser.AniDB_ID); if (anime == null) { contractout.ErrorMessage = string.Format("Could not find anime record with ID: {0}", ser.AniDB_ID); return contractout; } repSeries.Save(ser); // update stats for groups //ser.TopLevelAnimeGroup.UpdateStatsFromTopLevel(true ,true, true); ser.QueueUpdateStats(); if (oldGroupID.HasValue) { AnimeGroupRepository repGroups = new AnimeGroupRepository(); AnimeGroup grp = repGroups.GetByID(oldGroupID.Value); if (grp != null) { grp.TopLevelAnimeGroup.UpdateStatsFromTopLevel(true, true, true); } } List<CrossRef_AniDB_TvDBV2> xrefs = ser.GetCrossRefTvDBV2(); List<CrossRef_AniDB_MAL> xrefMAL = ser.CrossRefMAL; List<TvDB_Series> sers = new List<TvDB_Series>(); foreach (CrossRef_AniDB_TvDBV2 xref in xrefs) sers.Add(xref.GetTvDBSeries()); CrossRef_AniDB_Other xrefMovie = ser.CrossRefMovieDB; MovieDB_Movie movie = null; if (xrefMovie != null) movie = xrefMovie.GetMovieDB_Movie(); contractout.AnimeSeries = ser.ToContract(anime, xrefs, ser.CrossRefMovieDB, ser.GetUserRecord(userID), sers, xrefMAL, false, null, null, null, null,movie); return contractout; } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); contractout.ErrorMessage = ex.Message; return contractout; } }
public Contract_AnimeSeries_SaveResponse SaveSeries(Contract_AnimeSeries_Save contract, int userID) { Contract_AnimeSeries_SaveResponse contractout = new Contract_AnimeSeries_SaveResponse(); contractout.ErrorMessage = ""; contractout.AnimeSeries = null; try { AnimeSeries ser = null; int? oldGroupID = null; if (contract.AnimeSeriesID.HasValue) { ser = RepoFactory.AnimeSeries.GetByID(contract.AnimeSeriesID.Value); if (ser == null) { contractout.ErrorMessage = "Could not find existing series with ID: " + contract.AnimeSeriesID.Value.ToString(); return contractout; } // check if we are moving a series oldGroupID = ser.AnimeGroupID; } else { ser = new AnimeSeries(); ser.DateTimeCreated = DateTime.Now; ser.DefaultAudioLanguage = ""; ser.DefaultSubtitleLanguage = ""; ser.MissingEpisodeCount = 0; ser.MissingEpisodeCountGroups = 0; ser.LatestLocalEpisodeNumber = 0; ser.SeriesNameOverride = ""; } ser.AnimeGroupID = contract.AnimeGroupID; ser.AniDB_ID = contract.AniDB_ID; ser.DefaultAudioLanguage = contract.DefaultAudioLanguage; ser.DefaultSubtitleLanguage = contract.DefaultSubtitleLanguage; ser.DateTimeUpdated = DateTime.Now; ser.SeriesNameOverride = contract.SeriesNameOverride; ser.DefaultFolder = contract.DefaultFolder; AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(ser.AniDB_ID); if (anime == null) { contractout.ErrorMessage = string.Format("Could not find anime record with ID: {0}", ser.AniDB_ID); return contractout; } // update stats for groups //ser.TopLevelAnimeGroup.UpdateStatsFromTopLevel(true ,true, true); //Update and Save ser.UpdateStats(true, true, true); if (oldGroupID.HasValue) { AnimeGroup grp = RepoFactory.AnimeGroup.GetByID(oldGroupID.Value); if (grp != null) { grp.TopLevelAnimeGroup.UpdateStatsFromTopLevel(true, true, true); } } contractout.AnimeSeries = ser.GetUserContract(userID); return contractout; } catch (Exception ex) { logger.Error( ex,ex.ToString()); contractout.ErrorMessage = ex.Message; return contractout; } }