public static void CreateAnimeEpisode(this AniDB_Episode episode, ISession session, int animeSeriesID) { // check if there is an existing episode for this EpisodeID SVR_AnimeEpisode existingEp = RepoFactory.AnimeEpisode.GetByAniDBEpisodeID(episode.EpisodeID); if (existingEp == null) { SVR_AnimeEpisode animeEp = new SVR_AnimeEpisode(); animeEp.Populate(episode); animeEp.AnimeSeriesID = animeSeriesID; RepoFactory.AnimeEpisode.Save(animeEp); } else { if (existingEp.AnimeSeriesID != animeSeriesID) { existingEp.AnimeSeriesID = animeSeriesID; } existingEp.PlexContract = null; RepoFactory.AnimeEpisode.Save(existingEp); foreach (var episodeUser in RepoFactory.AnimeEpisode_User.GetByEpisodeID(existingEp.AnimeEpisodeID)) { RepoFactory.AnimeEpisode_User.SaveWithOpenTransaction(session, episodeUser); } } }
public static void CreateAnimeEpisode(this AniDB_Episode episode, ISession session, int animeSeriesID) { // check if there is an existing episode for this EpisodeID SVR_AnimeEpisode existingEp = RepoFactory.AnimeEpisode.GetByAniDBEpisodeID(episode.EpisodeID) ?? new SVR_AnimeEpisode(); existingEp.Populate(episode); existingEp.AnimeSeriesID = animeSeriesID; RepoFactory.AnimeEpisode.Save(existingEp); // We might have removed our AnimeEpisode_User records when wiping out AnimeEpisodes, recreate them if there's watched files var vlUsers = existingEp?.GetVideoLocals() .SelectMany(a => RepoFactory.VideoLocalUser.GetByVideoLocalID(a.VideoLocalID)).ToList(); // get the list of unique users var users = vlUsers.Select(a => a.JMMUserID).Distinct(); if (vlUsers.Count > 0) { // per user. An episode is watched if any file is foreach (int uid in users) { // get the last watched file var vlUser = vlUsers.Where(a => a.JMMUserID == uid && a.WatchedDate != null) .MaxBy(a => a.WatchedDate).FirstOrDefault(); // create or update the record var epUser = RepoFactory.AnimeEpisode_User.GetByUserIDAndEpisodeID(uid, existingEp.AnimeEpisodeID); if (epUser == null) { epUser = new SVR_AnimeEpisode_User { JMMUserID = uid, WatchedDate = vlUser?.WatchedDate, PlayedCount = vlUser != null ? 1 : 0, WatchedCount = vlUser != null ? 1 : 0, AnimeSeriesID = animeSeriesID, AnimeEpisodeID = existingEp.AnimeEpisodeID }; RepoFactory.AnimeEpisode_User.Save(epUser); } } } else { // since these are created with VideoLocal_User, // these will probably never exist, but if they do, cover our bases foreach (var episodeUser in RepoFactory.AnimeEpisode_User.GetByEpisodeID(existingEp.AnimeEpisodeID)) { RepoFactory.AnimeEpisode_User.Save(episodeUser); } } }
public static void CreateAnimeEpisode(this AniDB_Episode episode, ISession session, int animeSeriesID) { // check if there is an existing episode for this EpisodeID SVR_AnimeEpisode existingEp = RepoFactory.AnimeEpisode.GetByAniDBEpisodeID(episode.EpisodeID); if (existingEp == null) { SVR_AnimeEpisode animeEp = new SVR_AnimeEpisode(); animeEp.Populate(episode); animeEp.AnimeSeriesID = animeSeriesID; RepoFactory.AnimeEpisode.Save(animeEp); } }