コード例 #1
0
        private async Task SearchForId(string id)
        {
            var semestersRequest = await NPAPI.GetSemesters(id);

            bool saveSearchId = true;

            if (semestersRequest.Success)
            {
                //Update label
                name = semestersRequest.Name;
                searchResultLabelTextBlock.Text = name;

                //Update comoboBox
                semesterComboBox.ItemsSource = semestersRequest.Semesters;
                if (semesterComboBox.Items.Count > 0)
                {
                    semesterComboBox.SelectedIndex = 0;
                }
                semesterComboBox.Visibility = semesterComboBox.Items.Count > 0 ? Visibility.Visible : Visibility.Collapsed;

                //Save request to roaming settings
                SaveToSettings(localSettings, "name", name);
                var semestersJson = JsonConvert.SerializeObject(semestersRequest.Semesters);
                SaveToSettings(localSettings, "semesters", semestersJson.ToString());

                //Send GA Event
                bool searchSelf = roamingSettings.Values.ContainsKey("id") && roamingSettings.Values["id"] as string == id;
                App.Current.GATracker.SendEvent("Get Semesters", null, id, searchSelf ? 0 : 1);
            }
            else
            {
                if (semestersRequest.Error == NPAPI.RequestResult.ErrorType.Unauthorized)
                {
                    //Send GA Event
                    App.Current.GATracker.SendEvent("Session", "Session Expired", null, 0);

                    //Try background login
                    var result = await NPAPI.BackgroundLogin();

                    if (result.Success)
                    {
                        await SearchForId(id);
                    }
                    else
                    {
                        Frame.Navigate(typeof(LoginPage));
                    }
                }
                else
                {
                    await new MessageDialog(semestersRequest.Message).ShowAsync();
                    saveSearchId = false;
                }
            }

            if (saveSearchId)
            {
                SaveToSettings(localSettings, "searchId", id);
            }
        }
コード例 #2
0
        private async Task SearchForId(string id)
        {
            //Disable user input
            searchForIdTextBox.IsEnabled = searchSelfButton.IsEnabled = semesterComboBox.IsEnabled = getSemestersButton.IsEnabled = false;

            try
            {
                var semestersRequest = await NPAPI.GetSemesters(id);

                //Update label
                name = semestersRequest.Name;
                searchResultLabelTextBlock.Text = name;

                //Update comoboBox
                semesterComboBox.ItemsSource = semestersRequest.Semesters;
                if (semesterComboBox.Items.Count > 0)
                {
                    semesterComboBox.SelectedIndex = 0;
                }

                //Save request to local settings
                SaveToSettings(localSettings, "name", name);
                var semestersJson = JsonConvert.SerializeObject(semestersRequest.Semesters);
                SaveToSettings(localSettings, "semesters", semestersJson.ToString());

                //Send GA Event
                bool searchSelf = roamingSettings.Values.ContainsKey("id") && roamingSettings.Values["id"] as string == id;
                App.Current.GATracker.SendEvent("Get Semesters", null, id, searchSelf ? 0 : 1);

                //Save search id
                SaveToSettings(localSettings, "searchId", id);
            }
            catch (NPAPI.SessionExpiredException)
            {
                //Send GA Event
                App.Current.GATracker.SendEvent("Session", "Session Expired", null, 0);

                //Try background login
                try
                {
                    await NPAPI.BackgroundLogin();
                    await SearchForId(id);
                }
                catch
                {
                    Frame.Navigate(typeof(LoginPage));
                }
            }
            catch (Exception e)
            {
                await new MessageDialog(e.Message, "錯誤").ShowAsync();
            }

            //Enableuser input
            searchForIdTextBox.IsEnabled = searchSelfButton.IsEnabled = semesterComboBox.IsEnabled = getSemestersButton.IsEnabled = true;

            semesterComboBox.Focus(FocusState.Programmatic);
        }