123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- using InABox.Clients;
- using InABox.Configuration;
- using InABox.Mobile;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using Xamarin.Essentials;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- using XF.Material.Forms.UI.Dialogs;
- using Comal.Classes;
- using Email = Xamarin.Essentials.Email;
- using InABox.Core;
- using System.Linq;
- using System.Threading;
- using System.Threading.Tasks;
- using InABox.Rpc;
- namespace comal.timesheets
- {
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class SettingsPage
- {
- private int count;
- private DatabaseSettings _settings;
-
- public SettingsPage()
- {
- _settings = new LocalConfiguration<DatabaseSettings>().Load();
-
- InitializeComponent();
- <<<<<<< HEAD
- =======
-
- >>>>>>> 157e2e53c724ac158405ab5d124be7d214b4e5e7
- }
- private void ExitBtn_Clicked(object sender, EventArgs e)
- {
- Navigation.PopAsync();
- }
- <<<<<<< HEAD
- private async void Save_OnClicked(object sender, EventArgs e)
- =======
- private async void Save_OnClicked(object sender, EventArgs args)
- >>>>>>> 157e2e53c724ac158405ab5d124be7d214b4e5e7
- {
- _settings.URLs = stringList.SaveItems();
- _settings.UserID = userIDEnt.Text.Trim();
- _settings.Password = passwordEnt.Text.Trim();
- new LocalConfiguration<DatabaseSettings>().Save(_settings);
- ClientFactory.InvalidateUser();
- if (App.Current.Properties.ContainsKey("SessionID"))
- App.Current.Properties.Remove("SessionID");
-
- TransportStatus connection = TransportStatus.None;
- using (await MaterialDialog.Instance.LoadingDialogAsync(message: "Connecting"))
- {
- await Task.Run(() =>
- {
- return connection = App.ConnectTransport(_settings.URLs);
- });
- }
- if (connection != TransportStatus.OK)
- {
- await DisplayAlert("Connection Error", $"Unable to establish a connection!\n\nERR: {connection}", "OK");
- return;
- }
-
- //Navigation.PopToRootAsync(true);
- Navigation.PushAsync(new PinLoginPage());
- }
-
- #region Populate Screen
- private void Populate()
- {
- try
- {
- stringList.LoadList(_settings.URLs);
- userIDEnt.Text = _settings.UserID;
- passwordEnt.Text = _settings.Password;
- deviceIDEnt.Text = MobileUtils.GetDeviceID();
- appVersionEnt.Text = MobileUtils.AppVersion.InstalledVersionNumber;
- }
- catch { }
- }
-
- protected override async void OnAppearing()
- {
-
- base.OnAppearing();
-
- Populate();
-
- bool isLatest = true;
- try
- {
- isLatest = await MobileUtils.AppVersion.IsUsingLatestVersion();
- }
- catch (Exception eLatest)
- {
- }
- if (isLatest)
- {
- updateVersionBtn.IsEnabled = false;
- updateVersionBtn.Text = "App is up to date";
- }
- else if (!isLatest)
- {
- try
- {
- string latestVersionNumber = await MobileUtils.AppVersion.GetLatestVersionNumber();
- updateVersionBtn.IsEnabled = true;
- updateVersionBtn.Text = "Update App Version (" + latestVersionNumber + ")";
- }
- catch { }
- }
-
- }
- #endregion
- #region Buttons
- private async void SendErrorsBtn_Clicked(object sender, EventArgs e)
- {
- try
- {
- const string errorFilename = "Fatal.log";
- string libraryPath = "";
- if (Device.RuntimePlatform.Equals(Device.Android))
- libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
- else if (Device.RuntimePlatform.Equals(Device.iOS))
- libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Resources);
- var errorFilePath = Path.Combine(libraryPath, errorFilename);
- if (!File.Exists(errorFilePath))
- {
- return;
- }
- var errorText = File.ReadAllText(errorFilePath);
- var message = new EmailMessage
- {
- Subject = "Error Logs from " + App.Data.Me?.Name ?? "Unknown Employee",
- Body = errorText,
- To = new List<string> { "support@prsdigital.com.au" }
- };
- await Email.ComposeAsync(message);
- File.Delete(errorFilePath);
- }
- catch { }
- }
- private void UpdateVersionBtn_Clicked(Object sender, EventArgs e)
- {
- Dispatcher.BeginInvokeOnMainThread(() => { MobileUtils.AppVersion.OpenAppInStore(); });
- }
- private async void ChangePasswordBtn_Clicked(object sender, EventArgs e)
- {
- // if (count == 3)
- // {
- // DisplayAlert("Alert", "You have attempted incorrectly " + count + " times and cannot try again. Please contact your system administrator.", "OK");
- // return;
- // }
- // CoreTable table = new Client<User>().Query(new Filter<User>(x => x.UserID).IsEqualTo(ClientFactory.UserID),
- // new Columns<User>(x => x.Password));
- // if (table.Rows.Any())
- // {
- // string p = table.Rows.FirstOrDefault().Values[0].ToString();
- // string userInput = await DisplayPromptAsync("Alert", "Enter Current Password", "OK", "Cancel");
- // if (!string.IsNullOrWhiteSpace(userInput) && userInput != "Cancel")
- // {
- // if (p != userInput)
- // {
- // count++;
- // DisplayAlert("Alert", "Password is incorrect. You have attempted " + count + " times out of 3.", "OK");
- // return;
- // }
- // else if (p == userInput)
- // {
- // PasswordResetPage page = new PasswordResetPage(ClientFactory.UserID);
- // page.OnPasswordReset += (() =>
- // {
- // Navigation.PopToRootAsync();
- // PinLoginPage pinpage = new PinLoginPage();
- // Navigation.PushAsync(pinpage);
- // });
- // Navigation.PushAsync(page);
- // }
- // }
- // }
- //
- }
- private void ViewLogsButton_Clicked(object sender, EventArgs e)
- {
- Navigation.PushAsync(new LogViewer());
- }
-
- #endregion
-
- }
- }
|