예제 #1
0
        //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;
        }
예제 #2
0
 public WatchListEntryViewModel(WatchListShow show, WatchListEpisode episode)
 {
     _show = show;
     _episode = episode;
 }