Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }