Example #1
0
        public void ToggleWatchedStatus(bool watched, bool promptForRating)
        {
            bool currentStatus = IsWatched == 1;

            if (currentStatus == watched)
            {
                return;
            }

            JMMServerBinary.Contract_ToggleWatchedStatusOnEpisode_Response response = JMMServerVM.Instance.clientBinaryHTTP.ToggleWatchedStatusOnEpisode(AnimeEpisodeID, watched,
                                                                                                                                                         JMMServerVM.Instance.CurrentUser.JMMUserID);
            if (!string.IsNullOrEmpty(response.ErrorMessage))
            {
                BaseConfig.MyAnimeLog.Write("Error in ToggleWatchedStatus: " + response.ErrorMessage);
                return;
            }

            if (promptForRating && BaseConfig.Settings.DisplayRatingDialogOnCompletion)
            {
                JMMServerBinary.Contract_AnimeSeries contract = JMMServerVM.Instance.clientBinaryHTTP.GetSeries(response.AnimeEpisode.AnimeSeriesID,
                                                                                                                JMMServerVM.Instance.CurrentUser.JMMUserID);
                if (contract != null)
                {
                    AnimeSeriesVM ser = new AnimeSeriesVM(contract);
                    Utils.PromptToRateSeriesOnCompletion(ser);
                }
            }
        }
        private void CommandBinding_ToggleWatchedStatus(object sender, ExecutedRoutedEventArgs e)
        {
            object obj = e.Parameter;

            if (obj == null)
            {
                return;
            }

            this.Cursor    = Cursors.Wait;
            this.IsEnabled = false;

            bool newStatus = false;

            try
            {
                if (obj.GetType() == typeof(VideoDetailedVM))
                {
                    VideoDetailedVM vid = obj as VideoDetailedVM;
                    newStatus = !vid.Watched;
                    JMMServerVM.Instance.clientBinaryHTTP.ToggleWatchedStatusOnVideo(vid.VideoLocalID, newStatus, JMMServerVM.Instance.CurrentUser.JMMUserID.Value);

                    MainListHelperVM.Instance.UpdateHeirarchy(vid);
                }

                if (obj.GetType() == typeof(AnimeEpisodeVM))
                {
                    AnimeEpisodeVM ep = obj as AnimeEpisodeVM;
                    newStatus = !ep.Watched;
                    JMMServerBinary.Contract_ToggleWatchedStatusOnEpisode_Response response = JMMServerVM.Instance.clientBinaryHTTP.ToggleWatchedStatusOnEpisode(ep.AnimeEpisodeID,
                                                                                                                                                                 newStatus, JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
                    if (!string.IsNullOrEmpty(response.ErrorMessage))
                    {
                        MessageBox.Show(response.ErrorMessage, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }

                    MainListHelperVM.Instance.UpdateHeirarchy(response.AnimeEpisode);
                }
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
            finally
            {
                this.Cursor    = Cursors.Arrow;
                this.IsEnabled = true;
            }
        }
        /// <summary>
        /// This event bubbles up from PlayEpisodeControl
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CommandBinding_ToggleWatchedStatus(object sender, ExecutedRoutedEventArgs e)
        {
            object obj = e.Parameter;

            if (obj == null)
            {
                return;
            }

            this.Cursor = Cursors.Wait;

            try
            {
                Window        parentWindow = Window.GetWindow(this);
                AnimeSeriesVM serTemp      = null;
                bool          newStatus    = false;

                if (obj.GetType() == typeof(VideoDetailedVM))
                {
                    VideoDetailedVM vid = obj as VideoDetailedVM;
                    newStatus = !vid.Watched;
                    JMMServerVM.Instance.clientBinaryHTTP.ToggleWatchedStatusOnVideo(vid.VideoLocalID, newStatus, JMMServerVM.Instance.CurrentUser.JMMUserID.Value);

                    MainListHelperVM.Instance.UpdateHeirarchy(vid);

                    serTemp = MainListHelperVM.Instance.GetSeriesForVideo(vid.VideoLocalID);
                }

                if (obj.GetType() == typeof(AnimeEpisodeVM))
                {
                    AnimeEpisodeVM ep = obj as AnimeEpisodeVM;
                    newStatus = !ep.Watched;
                    JMMServerBinary.Contract_ToggleWatchedStatusOnEpisode_Response response = JMMServerVM.Instance.clientBinaryHTTP.ToggleWatchedStatusOnEpisode(ep.AnimeEpisodeID,
                                                                                                                                                                 newStatus, JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
                    if (!string.IsNullOrEmpty(response.ErrorMessage))
                    {
                        MessageBox.Show(response.ErrorMessage, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }

                    MainListHelperVM.Instance.UpdateHeirarchy(response.AnimeEpisode);

                    serTemp = MainListHelperVM.Instance.GetSeriesForEpisode(ep);
                }

                if (obj.GetType() == typeof(PlaylistItemVM))
                {
                    PlaylistItemVM pli = obj as PlaylistItemVM;
                    AnimeEpisodeVM ep  = pli.PlaylistItem as AnimeEpisodeVM;

                    newStatus = !ep.Watched;
                    JMMServerBinary.Contract_ToggleWatchedStatusOnEpisode_Response response = JMMServerVM.Instance.clientBinaryHTTP.ToggleWatchedStatusOnEpisode(ep.AnimeEpisodeID,
                                                                                                                                                                 newStatus, JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
                    if (!string.IsNullOrEmpty(response.ErrorMessage))
                    {
                        MessageBox.Show(response.ErrorMessage, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }

                    MainListHelperVM.Instance.UpdateHeirarchy(response.AnimeEpisode);

                    serTemp = MainListHelperVM.Instance.GetSeriesForEpisode(ep);
                }

                PlaylistVM pl = this.DataContext as PlaylistVM;
                if (pl == null)
                {
                    return;
                }

                pl.PopulatePlaylistObjects();
                ShowNextEpisode();

                if (newStatus == true && serTemp != null)
                {
                    Utils.PromptToRateSeries(serTemp, parentWindow);
                }
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
            finally
            {
                this.Cursor = Cursors.Arrow;
            }
        }