public CL_AnimeEpisode_User GetUserContract(int userid) { SVR_AnimeEpisode_User rr = GetUserRecord(userid); if (rr != null) { return(rr.Contract); } using (var upd = Repo.Instance.AnimeEpisode_User.BeginAddOrUpdate(() => GetUserRecord(userid))) { upd.Entity.PlayedCount = 0; upd.Entity.StoppedCount = 0; upd.Entity.WatchedCount = 0; upd.Entity.AnimeEpisodeID = AnimeEpisodeID; upd.Entity.AnimeSeriesID = AnimeSeriesID; upd.Entity.JMMUserID = userid; upd.Entity.WatchedDate = GetVideoLocals().Select(vid => vid.GetUserRecord(userid)) .FirstOrDefault(vid => vid?.WatchedDate != null)?.WatchedDate; rr = upd.Commit(); } return(rr.Contract); }
public CL_AnimeEpisode_User GetUserContract(int userid, ISessionWrapper session = null) { lock (_lock) //Make it atomic on creation { SVR_AnimeEpisode_User rr = GetUserRecord(userid); if (rr != null) { return(rr.Contract); } rr = new SVR_AnimeEpisode_User { PlayedCount = 0, StoppedCount = 0, WatchedCount = 0, AnimeEpisodeID = this.AnimeEpisodeID, AnimeSeriesID = this.AnimeSeriesID, JMMUserID = userid, WatchedDate = null }; if (session != null) { RepoFactory.AnimeEpisode_User.SaveWithOpenTransaction(session, rr); } else { RepoFactory.AnimeEpisode_User.Save(rr); } return(rr.Contract); } }
public CL_AnimeEpisode_User GetUserContract(int userid, ISessionWrapper session = null) { SVR_AnimeEpisode_User rr = GetUserRecord(userid); if (rr != null) { return(rr.Contract); } rr = new SVR_AnimeEpisode_User { PlayedCount = 0, StoppedCount = 0, WatchedCount = 0, AnimeEpisodeID = AnimeEpisodeID, AnimeSeriesID = AnimeSeriesID, JMMUserID = userid, WatchedDate = GetVideoLocals().Select(vid => vid.GetUserRecord(userid)) .FirstOrDefault(vid => vid?.WatchedDate != null)?.WatchedDate }; if (session != null) { RepoFactory.AnimeEpisode_User.SaveWithOpenTransaction(session, rr); } else { RepoFactory.AnimeEpisode_User.Save(rr); } return(rr.Contract); }
public void SaveWatchedStatus(bool watched, int userID, DateTime?watchedDate, bool updateWatchedDate) { SVR_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 SVR_AnimeEpisode_User { PlayedCount = 0, StoppedCount = 0, 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; } RepoFactory.AnimeEpisode_User.Save(epUserRecord); } else { if (epUserRecord != null) { RepoFactory.AnimeEpisode_User.Delete(epUserRecord.AnimeEpisode_UserID); } } }
public void SaveWatchedStatus(bool watched, int userID, DateTime?watchedDate, bool updateWatchedDate) { SVR_AnimeEpisode_User epUserRecord = GetUserRecord(userID); if (watched) { // lets check if an update is actually required if (epUserRecord?.WatchedDate != null && watchedDate != null && epUserRecord.WatchedDate.Equals(watchedDate.Value) || (epUserRecord?.WatchedDate == null && watchedDate == null)) { return; } if (epUserRecord == null) { epUserRecord = new SVR_AnimeEpisode_User { PlayedCount = 0, StoppedCount = 0, WatchedCount = 0 } } ; epUserRecord.AnimeEpisodeID = AnimeEpisodeID; epUserRecord.AnimeSeriesID = AnimeSeriesID; epUserRecord.JMMUserID = userID; epUserRecord.WatchedCount++; if (watchedDate.HasValue) { if (updateWatchedDate) { epUserRecord.WatchedDate = watchedDate.Value; } } if (!epUserRecord.WatchedDate.HasValue) { epUserRecord.WatchedDate = DateTime.Now; } RepoFactory.AnimeEpisode_User.Save(epUserRecord); } else { if (epUserRecord != null) { RepoFactory.AnimeEpisode_User.Delete(epUserRecord.AnimeEpisode_UserID); } } }
public void SaveWatchedStatus(bool watched, int userID, DateTime?watchedDate, bool updateWatchedDate) { SVR_AnimeEpisode_User epUserRecord = GetUserRecord(userID); if (watched) { using (var upd = Repo.Instance.AnimeEpisode_User.BeginAddOrUpdate(() => GetUserRecord(userID))) { // lets check if an update is actually required if (upd.Entity?.WatchedDate != null && watchedDate != null && upd.Entity.WatchedDate.Equals(watchedDate.Value) || (upd.Entity?.WatchedDate == null && watchedDate == null)) { return; } upd.Entity.AnimeEpisodeID = AnimeEpisodeID; upd.Entity.AnimeSeriesID = AnimeSeriesID; upd.Entity.JMMUserID = userID; upd.Entity.WatchedCount++; if (watchedDate.HasValue) { if (updateWatchedDate) { upd.Entity.WatchedDate = watchedDate.Value; } } if (!upd.Entity.WatchedDate.HasValue) { upd.Entity.WatchedDate = DateTime.Now; } // lets check if an update is actually required if (upd.Entity?.WatchedDate != null && watchedDate != null && upd.Entity.WatchedDate.Equals(watchedDate.Value) || (upd.Entity?.WatchedDate == null && watchedDate == null)) { return; } upd.Entity.AnimeEpisodeID = AnimeEpisodeID; upd.Entity.AnimeSeriesID = AnimeSeriesID; upd.Entity.JMMUserID = userID; upd.Entity.WatchedCount++; if (watchedDate.HasValue) { if (updateWatchedDate) { upd.Entity.WatchedDate = watchedDate.Value; } } if (!upd.Entity.WatchedDate.HasValue) { upd.Entity.WatchedDate = DateTime.Now; } epUserRecord = upd.Commit(); } } else { if (epUserRecord != null) { Repo.Instance.AnimeEpisode_User.Delete(epUserRecord.AnimeEpisode_UserID); } } }