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); } }
private async Task GetCredits() { try { var result = await NPAPI.GetCredits(); ApplyCredits(result); } catch (NPAPI.SessionExpiredException) { //Send GA Event App.Current.GATracker.SendEvent("Session", "Session Expired", null, 0); //Try background login try { await NPAPI.BackgroundLogin(); await GetCredits(); } catch { Frame.Navigate(typeof(LoginPage)); } } catch (Exception e) { summaryTextBlock.Text = e.Message; } }
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); }
async private Task Login() { //Set progress progressStackPanel.Visibility = Visibility.Visible; progressRing.IsActive = true; progressTextBlock.Text = "檢查登入狀態"; try { var isLoggedIn = await NPAPI.IsLoggedIn(); var roamingSettings = ApplicationData.Current.RoamingSettings; if (!isLoggedIn) { //Not logged in, login now progressTextBlock.Text = "登入中"; throw new NPAPI.SessionExpiredException(); } //Set global cookie to current saved JSESSIONID HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter(); HttpCookie cookie = new HttpCookie("JSESSIONID", baseUri.Host, "/"); cookie.Value = roamingSettings.Values["JSESSIONID"].ToString(); filter.CookieManager.SetCookie(cookie, false); //Set progress progressTextBlock.Text = "載入中"; // GoHome(); } catch (NPAPI.SessionExpiredException) { //Send GA Event App.Current.GATracker.SendEvent("Session", "Session Expired", null, 0); //Try background login try { await NPAPI.BackgroundLogin(); await Login(); } catch { Frame.Navigate(typeof(LoginPage)); } } catch (Exception e) { //Show message progressRing.IsActive = false; progressTextBlock.Text = e.Message; } }
private async Task GetSchedule(Semester semester) { var coursesRequest = await NPAPI.GetCourses(searchForIdTextBox.Text, semester.Year, semester.SemesterNumber); if (coursesRequest.Success) { //Fill scheduleGrid FillCoursesIntoGrid(coursesRequest.Data); //Update result label searchResultLabelTextBlock.Text = name + " " + semester; //Save to roaming settings var coursesJson = JsonConvert.SerializeObject(coursesRequest.Data); var semesterJson = JsonConvert.SerializeObject(semester); SaveToSettings(localSettings, "courses", coursesJson.ToString()); SaveToSettings(localSettings, "semester", semesterJson.ToString()); //Send GA Event bool searchSelf = roamingSettings.Values.ContainsKey("id") && roamingSettings.Values["id"] as string == searchForIdTextBox.Text; App.Current.GATracker.SendEvent("Get Curriculum", semester.ToString(), searchForIdTextBox.Text, searchSelf ? 0 : 1); } else { if (coursesRequest.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 GetSchedule(semester); } else { Frame.Navigate(typeof(LoginPage)); } } else { await new MessageDialog(coursesRequest.Message).ShowAsync(); } } }
private async Task GetSchedule(Semester semester) { try { var courses = await NPAPI.GetCourses(searchForIdTextBox.Text, semester.Year, semester.SemesterNumber); //Fill scheduleGrid FillCoursesIntoGrid(courses); //Update result label searchResultLabelTextBlock.Text = name + " " + semester; //Show searchAppBarToggleButton //searchAppBarToggleButton.Visibility = Visibility.Visible; //Save to roaming settings var coursesJson = JsonConvert.SerializeObject(courses); var semesterJson = JsonConvert.SerializeObject(semester); SaveToSettings(localSettings, "courses", coursesJson.ToString()); SaveToSettings(localSettings, "semester", semesterJson.ToString()); //Send GA Event bool searchSelf = roamingSettings.Values.ContainsKey("id") && roamingSettings.Values["id"] as string == searchForIdTextBox.Text; App.Current.GATracker.SendEvent("Get Curriculum", semester.ToString(), searchForIdTextBox.Text, searchSelf ? 0 : 1); } catch (NPAPI.SessionExpiredException) { //Send GA Event App.Current.GATracker.SendEvent("Session", "Session Expired", null, 0); //Try background login try { await NPAPI.BackgroundLogin(); await GetSchedule(semester); } catch { Frame.Navigate(typeof(LoginPage)); } } catch (Exception e) { await new MessageDialog(e.Message, "錯誤").ShowAsync(); } }
private async Task GetAttendenceAndHonors() { semestersComboBox.ItemsSource = null; semestersComboBox.Items.Clear(); semestersComboBox.Items.Add("讀取中..."); semestersComboBox.SelectedIndex = 0; try { var result = await NPAPI.GetAttendenceAndHonors(); semestersComboBox.ItemsSource = result.Semesters; if (semestersComboBox.Items.Count > 0) { semestersComboBox.SelectedIndex = 0; } } catch (NPAPI.SessionExpiredException) { //Send GA Event App.Current.GATracker.SendEvent("Session", "Session Expired", null, 0); //Try background login try { await NPAPI.BackgroundLogin(); } catch { Frame.Navigate(typeof(LoginPage)); } } catch (Exception e) { semestersComboBox.ItemsSource = null; semestersComboBox.Items.Clear(); semestersComboBox.Items.Add(e.Message); semestersComboBox.SelectedIndex = 0; } }
private async Task GetMidAlert() { courseNameTextBlock.Text = ""; try { var midAlerts = await NPAPI.GetMidAlerts(); courseNameTextBlock.Text = "(請選擇)"; titleTextBlock.Text = midAlerts.Semester + " 期中預警"; listView.ItemsSource = midAlerts.Alerts; //Send GA Event string id = ApplicationData.Current.RoamingSettings.Values.ContainsKey("id") ? ApplicationData.Current.RoamingSettings.Values["id"] as string : "N/A"; App.Current.GATracker.SendEvent("Mid Alert", "Get Mid Alert", id, 0); } catch (NPAPI.SessionExpiredException) { //Send GA Event App.Current.GATracker.SendEvent("Session", "Session Expired", null, 0); //Try background login try { await NPAPI.BackgroundLogin(); await GetMidAlert(); } catch { Frame.Navigate(typeof(LoginPage)); } } catch (Exception e) { listView.Items.Clear(); listView.Items.Add("讀取失敗,請稍後再試。"); listView.Items.Add(e.Message); } }