//TODO: Event based and asynch public bool AddShow(string userName, string sourceId) { var user = _session.Load<User>(User.IdFromUserName(userName)); if (user == null || user.WatchList == null || user.WatchList.Shows == null) return false; if (user.WatchList == null) user.WatchList = new WatchList(); var shows = user.WatchList.Shows == null ? new List<WatchListShow>() : new List<WatchListShow>(user.WatchList.Shows); //We already have this show if (shows.Any(x => x.SourceId.Equals(sourceId))) return true; var source = new DbShowSource(_session); var sourceShow = source.GetById(sourceId); if (sourceShow == null) { //Try seeding it, this should be asynch later with reporting back var updater = new ShowUpdater(_session, _eventSink); updater.SeedShow(sourceId); sourceShow = source.GetById(sourceId); if (sourceShow == null) return false; } var wl = new WatchListShow { SourceId = sourceShow.SourceId, ShowName = sourceShow.Name, LastWatchedEpisode = null, FirstUnwatchedEpisode = Map(sourceShow.FirstEpisode) }; shows.Add(wl); user.WatchList.Shows = shows.ToArray(); _session.Store(user); _eventSink("watchlist"); //TODO: Scope to this user return true; }
public WatchListEntryViewModel(WatchListShow show, WatchListEpisode episode) { _show = show; _episode = episode; }