/// <summary> /// Asynchronous processing of the login button click. /// </summary> async void LoginButton_TouchUpInsideAsync() { try { // Clear the last displayed status. StatusLabel.Text = ""; // The facade calls Concur API to login using the ClientID, LoginID, and Password entered by the user in the UI. await ClientLibraryFacade.LoginAsync( LoginIdTextField.Text, PasswordTextField.Text, ClientIdTextField.Text); // The facade calls Concur API to get the configuration this user should use when creating expense reports. // Then get the list of allowed Payment Types and allowed Expense Types for this user for creating expense reports. var groupConfig = await ClientLibraryFacade.GetGroupConfigurationAsync(); PaymentTypes = groupConfig.PaymentTypes; ExpenseTypes = groupConfig.Policies.First(p => p.IsDefault.Value == true).ExpenseTypes; // Display the Payment Types and the Expense Types (ExpenseTypePicker.Model as MyPickerModel).MyItems = ExpenseTypes.Select(t => t.Name).ToList(); (PaymentTypePicker.Model as MyPickerModel).MyItems = PaymentTypes.Select(t => t.Name).ToList(); // Refresh controls used for displaying and selecting Payment Type and Expense Type. ExpenseTypePicker.ReloadAllComponents(); PaymentTypePicker.ReloadAllComponents(); SetButtonTitleAsPickerSelection(ExpenseTypeExpandButton, ExpenseTypePicker); SetButtonTitleAsPickerSelection(PaymentTypeExpandButton, PaymentTypePicker); CreateReportButton.Enabled = true; } catch (Exception e) { DisplayException(e); } }