public static void SetWatched(SiteDB db, long SeriesId, long[] EpisodeIds, long UserId) { ////take the array of Ids and mark them as watched. Any WatchedEpisodes not in the list should be marked as unwatched by removing them. //grab all watched episodes for this series & user. List<WatchedEpisode> lstWatchedEpisodes = db.WatchedEpisodes.Where(oo => oo.Episode.SeriesId == SeriesId && oo.UserId == UserId).ToList(); if (EpisodeIds != null) { //loop threw new list of watched Episodes foreach (long id in EpisodeIds) { if (lstWatchedEpisodes.Count(oo => oo.EpisodeId == id) == 0) { //add new record. WatchedEpisode newWatchedEpisode = new WatchedEpisode(); newWatchedEpisode.EpisodeId = id; newWatchedEpisode.UserId = UserId; newWatchedEpisode.Created = DateTime.Now; db.WatchedEpisodes.Add(newWatchedEpisode); } } } //delete all records not in new list of watched Episodes foreach (WatchedEpisode we in lstWatchedEpisodes.Where(oo => EpisodeIds == null || !EpisodeIds.Contains(oo.EpisodeId))) { db.WatchedEpisodes.Remove(we); } //save. db.SaveChanges(); }
public static void SetWatched(SiteDB db, long EpisodeId, long UserId, bool Watched) { //find the WatchedEpisode record. WatchedEpisode watchedEpisode = db.WatchedEpisodes.SingleOrDefault(oo => oo.EpisodeId == EpisodeId && oo.UserId == UserId); if (watchedEpisode != null) { //chech if we should mark watched or unwatched. if (!Watched) { //mark episode unwatched by deleting the WatchedEpisode record. db.WatchedEpisodes.Remove(watchedEpisode); } } else if (Watched) { //mark episode watched by adding a WatchedEpisode record. watchedEpisode = new WatchedEpisode(); watchedEpisode.EpisodeId = EpisodeId; watchedEpisode.UserId = UserId; watchedEpisode.Created = DateTime.Now; db.WatchedEpisodes.Add(watchedEpisode); } //save changes. db.SaveChanges(); }
public static void SetWatched(SiteDB db, long SeriesId, int Season, long UserId, bool Watched) { ////take the array of Ids and mark them as watched. Any WatchedEpisodes not in the list should be marked as unwatched by removing them. //grab all watched episodes for this series, user, and Season. List<WatchedEpisode> lstWatchedEpisodes = db.WatchedEpisodes.Where(oo => oo.Episode.SeriesId == SeriesId && oo.UserId == UserId && oo.Episode.Season == Season).ToList(); //get list of EpisodeIds based on Season. List<long> lstEpisodeIds = new List<long>(); //get list of EpisodeIds based on Season if we're marking as Watched. if (Watched) { lstEpisodeIds = db.Episodes.Where(oo => oo.SeriesId == SeriesId && oo.Season == Season).Select(oo => oo.EpisodeId).ToList(); } //loop threw new list of watched Episodes foreach (long id in lstEpisodeIds) { if (lstWatchedEpisodes.Count(oo => oo.EpisodeId == id) == 0) { //add new record. WatchedEpisode newWatchedEpisode = new WatchedEpisode(); newWatchedEpisode.EpisodeId = id; newWatchedEpisode.UserId = UserId; newWatchedEpisode.Created = DateTime.Now; db.WatchedEpisodes.Add(newWatchedEpisode); } } //delete all records not in new list of watched Episodes foreach (WatchedEpisode we in lstWatchedEpisodes.Where(oo => !lstEpisodeIds.Contains(oo.EpisodeId))) { db.WatchedEpisodes.Remove(we); } //save. db.SaveChanges(); }