public override bool EditShow(int id, ShowBindingModel show)
        {
            BaseViewModel toBeChanged = views.FirstOrDefault(v => v.Id == id);
            BingeShow     chosen      = tvShows.FirstOrDefault(s => s.Id == id);

            if (toBeChanged != null)
            {
                views.Remove(toBeChanged);

                chosen.UpdateData(show);
                Thread save = new Thread(SaveShows);
                save.Start();

                toBeChanged = new BingeViewModel(chosen);

                if (BingeEnd(toBeChanged, chosen))
                {
                    return(false);
                }

                return(true);
            }

            return(false);
        }
        public bool NextEpisode(int id)
        {
            BingeViewModel toBeChanged = views.FirstOrDefault(v => v.Id == id);
            BingeShow      chosen      = tvShows.FirstOrDefault(s => s.Id == id);

            if (chosen != null)
            {
                chosen.CurrentEpisode++;
                toBeChanged.CurrentEpisode++;

                if (!AddEpisodeInfo(toBeChanged))
                {
                    chosen.CurrentEpisode = 1;
                    chosen.CurrentSeason++;
                    toBeChanged.CurrentEpisode = 1;
                    toBeChanged.CurrentSeason++;

                    if (BingeEnd(toBeChanged, chosen))
                    {
                        return(false);
                    }
                }

                return(true);
            }

            return(false);
        }
        public override bool AddShow(ShowBindingModel show)
        {
            string urlPath = String.Format(Constants.GetSearch, GetSlug(show.Name));

            SearchInfoRoot data = WebParser <SearchInfoRoot> .GetInfo(urlPath);

            BingeShow newShow = new BingeShow()
            {
                Id             = data.data[0].id,
                Title          = data.data[0].seriesName,
                CurrentEpisode = show.CurrentEpisode,
                CurrentSeason  = show.CurrentSeason,
            };

            BingeViewModel newView = new BingeViewModel(newShow);

            if (BingeEnd(newView, newShow))
            {
                return(false);
            }

            Thread save = new Thread(AddAndSave);

            save.Start(newShow);

            views.Add(newView);

            return(true);
        }
Esempio n. 4
0
        public MainPage()
        {
            InitializeComponent();
            //InitializeComponent(new Uri("ms-appx:///DeviceFamily-Mobile///MainPage.xaml", UriKind.Absolute));

            _binge             = new BingeViewModel();
            NomText.Visibility = Visibility.Collapsed;
            // Refresh bing list after a new binge is added
            _binge.BingeCompleted += s => { ReloadHistory(); };
            BingePane.DataContext  = _binge;
        }
        public void RemoveShow(int id)
        {
            BingeViewModel toBeRemoved = views.FirstOrDefault(v => v.Id == id);

            if (toBeRemoved != null)
            {
                views.Remove(toBeRemoved);

                Thread remove = new Thread(PermanentlyRemove);
                remove.Start(id);
            }
        }
        public override void GenerateViews()
        {
            views = new ObservableCollection <BaseViewModel>();

            for (int i = 0; i < tvShows.Count; i++)
            {
                BingeViewModel newModel = new BingeViewModel(tvShows[i]);

                AddEpisodeInfo(newModel);

                views.Add(newModel);
            }
        }
        private bool BingeEnd(BingeViewModel model, BingeShow show)
        {
            if (!AddEpisodeInfo(model))
            {
                if (IsOngoing(show))
                {
                    MoveToFollow(show);
                    Thread remove = new Thread(PermanentlyRemove);
                    remove.Start(show.Id);
                }
                else
                {
                    Thread remove = new Thread(PermanentlyRemove);
                    remove.Start(show.Id);
                }

                return(true);
            }

            return(false);
        }
        private bool AddEpisodeInfo(BingeViewModel model)
        {
            string          epPath = String.Format(Constants.GetAllEpisodes, model.Id, model.CurrentSeason);
            EpisodeInfoRoot ep;

            string         totalPath = String.Format(Constants.GetTotal, model.Id);
            SeasonDataRoot total;

            try
            {
                ep = WebParser <EpisodeInfoRoot> .GetInfo(epPath);

                total = WebParser <SeasonDataRoot> .GetInfo(totalPath);
            }
            catch (HttpRequestException e)
            {
                if (e.HResult == 404)
                {
                    return(false);
                }

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }

            try
            {
                model.UpdateEpisodeInfo(ep.data, total.data);
            }
            catch (Exception)
            {
                return(false);
            }

            return(true);
        }