public static void InitCache() { string t = "AnimeEpisodes_User"; ServerState.Instance.CurrentSetupStatus = string.Format(JMMServer.Properties.Resources.Database_Cache, t, string.Empty); AnimeEpisode_UserRepository repo = new AnimeEpisode_UserRepository(); Cache = new PocoCache <int, AnimeEpisode_User>(repo.InternalGetAll(), a => a.AnimeEpisode_UserID); Series = Cache.CreateIndex(a => a.AnimeSeriesID); UsersEpisodes = Cache.CreateIndex(a => a.JMMUserID, a => a.AnimeEpisodeID); Users = Cache.CreateIndex(a => a.JMMUserID); Episodes = Cache.CreateIndex(a => a.AnimeEpisodeID); UsersSeries = Cache.CreateIndex(a => a.JMMUserID, a => a.AnimeSeriesID); int cnt = 0; List <AnimeEpisode_User> sers = Cache.Values.Where(a => a.ContractVersion < AnimeEpisode_User.CONTRACT_VERSION || a.AnimeEpisode_UserID == 0).ToList(); int max = sers.Count; foreach (AnimeEpisode_User g in sers) { repo.Save(g); cnt++; if (cnt % 10 == 0) { ServerState.Instance.CurrentSetupStatus = string.Format(JMMServer.Properties.Resources.Database_Cache, t, " DbRegen - " + cnt + "/" + max); } } ServerState.Instance.CurrentSetupStatus = string.Format(JMMServer.Properties.Resources.Database_Cache, t, " DbRegen - " + max + "/" + max); }
public void IncrementEpisodeStats(int animeEpisodeID, int userID, int statCountType) { try { AnimeEpisodeRepository repEpisodes = new AnimeEpisodeRepository(); AnimeEpisode ep = repEpisodes.GetByID(animeEpisodeID); if (ep == null) return; AnimeEpisode_UserRepository repEpisodeUsers = new AnimeEpisode_UserRepository(); AnimeEpisode_User epUserRecord = ep.GetUserRecord(userID); if (epUserRecord == null) { epUserRecord = new AnimeEpisode_User(); epUserRecord.PlayedCount = 0; epUserRecord.StoppedCount = 0; epUserRecord.WatchedCount = 0; } epUserRecord.AnimeEpisodeID = ep.AnimeEpisodeID; epUserRecord.AnimeSeriesID = ep.AnimeSeriesID; epUserRecord.JMMUserID = userID; //epUserRecord.WatchedDate = DateTime.Now; switch ((StatCountType)statCountType) { case StatCountType.Played: epUserRecord.PlayedCount++; break; case StatCountType.Stopped: epUserRecord.StoppedCount++; break; case StatCountType.Watched: epUserRecord.WatchedCount++; break; } repEpisodeUsers.Save(epUserRecord); AnimeSeries ser = ep.GetAnimeSeries(); if (ser == null) return; AnimeSeries_UserRepository repSeriesUser = new AnimeSeries_UserRepository(); AnimeSeries_User userRecord = ser.GetUserRecord(userID); if (userRecord == null) userRecord = new AnimeSeries_User(userID, ser.AnimeSeriesID); switch ((StatCountType)statCountType) { case StatCountType.Played: userRecord.PlayedCount++; break; case StatCountType.Stopped: userRecord.StoppedCount++; break; case StatCountType.Watched: userRecord.WatchedCount++; break; } repSeriesUser.Save(userRecord); } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } }
public void SaveWatchedStatus(bool watched, int userID, DateTime? watchedDate, bool updateWatchedDate) { AnimeEpisode_UserRepository repEpisodeUsers = new AnimeEpisode_UserRepository(); AnimeEpisode_User epUserRecord = this.GetUserRecord(userID); if (watched) { // lets check if an update is actually required if (epUserRecord != null) { if (epUserRecord.WatchedDate.HasValue && watchedDate.HasValue && epUserRecord.WatchedDate.Value.Equals(watchedDate.Value)) { // this will happen when we are adding a new file for an episode where we already had another file // and the file/episode was watched already return; } } if (epUserRecord == null) { epUserRecord = new AnimeEpisode_User(); epUserRecord.PlayedCount = 0; epUserRecord.StoppedCount = 0; epUserRecord.WatchedCount = 0; } epUserRecord.AnimeEpisodeID = this.AnimeEpisodeID; epUserRecord.AnimeSeriesID = this.AnimeSeriesID; epUserRecord.JMMUserID = userID; epUserRecord.WatchedCount++; if (watchedDate.HasValue) { if (updateWatchedDate) epUserRecord.WatchedDate = watchedDate.Value; } if (!epUserRecord.WatchedDate.HasValue) epUserRecord.WatchedDate = DateTime.Now; repEpisodeUsers.Save(epUserRecord); } else { if (epUserRecord != null) repEpisodeUsers.Delete(epUserRecord.AnimeEpisode_UserID); } }