| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 | 
							- 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;
 
- namespace comal.timesheets
 
- {
 
-     [XamlCompilation(XamlCompilationOptions.Compile)]
 
-     public partial class SettingsPage : ContentPage
 
-     {
 
-         private int count;
 
-         public SettingsPage()
 
-         {
 
-             InitializeComponent();
 
-             NavigationPage.SetHasBackButton(this, false);
 
-             Populate();
 
-         }
 
-         private void ExitBtn_Clicked(object sender, EventArgs e)
 
-         {
 
-             Navigation.PopAsync();
 
-         }
 
-         private void SaveBtn_Clicked(object sender, EventArgs e)
 
-         {
 
-             ValidateData();
 
-         }
 
-         private async void ValidateData()
 
-         {
 
-             try
 
-             {
 
-                 App.DBSettings.URLs = stringList.SaveItems();
 
-                 App.DBSettings.UserID = userIDEnt.Text.Trim();
 
-                 App.DBSettings.Password = passwordEnt.Text.Trim();
 
-             }
 
-             catch { }
 
-             Validate();
 
-             Navigation.PopAsync();
 
-         }
 
-         private async void Validate()
 
-         {
 
-             using (await MaterialDialog.Instance.LoadingDialogAsync(message: "Validating"))
 
-             {
 
-                 try
 
-                 {
 
-                     ClientFactory.InvalidateUser();
 
-                     new LocalConfiguration<DatabaseSettings>().Delete();
 
-                     new LocalConfiguration<DatabaseSettings>().Save(App.DBSettings);
 
-                     App.DBSettings = new LocalConfiguration<DatabaseSettings>().Load();
 
-                     if (App.Current.Properties.ContainsKey("SessionID"))
 
-                         App.Current.Properties.Remove("SessionID");
 
-                     var result = JsonClient<User>.Ping(App.DBSettings.URLs, out DatabaseInfo info);
 
-                     ClientFactory.SetClientType(typeof(JsonClient<>), "TimeBench", MobileUtils.AppVersion.InstalledVersionNumber + GlobalVariables.DeviceString, result, true);
 
-                     GlobalVariables.ChangeUser = true;
 
-                     GlobalVariables.InternalOnAppearing = true;
 
-                     Navigation.PopToRootAsync(true);
 
-                     PINLoginPage pin = new PINLoginPage();
 
-                     Navigation.PushAsync(pin, true);
 
-                 }
 
-                 catch (Exception ex)
 
-                 {
 
-                     var log = new MobileLogging(LogType.BackgroundProcess, "Change user from Settings Page", ex.Message + ex.StackTrace, this.GetType().Name);
 
-                 }
 
-             }
 
-         }
 
-         #region Populate Screen
 
-         private void Populate()
 
-         {
 
-             try
 
-             {
 
-                 stringList.LoadList(App.DBSettings.URLs);
 
-                 userIDEnt.Text = App.DBSettings.UserID;
 
-                 passwordEnt.Text = App.DBSettings.Password;
 
-                 deviceIDEnt.Text = MobileUtils.GetDeviceID();
 
-                 appVersionEnt.Text = MobileUtils.AppVersion.InstalledVersionNumber;
 
-             }
 
-             catch { }
 
-         }
 
-         private void CheckErrorLogs()
 
-         {
 
-             const string errorFilename = "Errorscache.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);
 
-             if (!string.IsNullOrWhiteSpace(errorText))
 
-                 errorLogsBtn.IsVisible = true;
 
-             else
 
-                 errorLogsBtn.IsVisible = false;
 
-         }
 
-         protected override async void OnAppearing()
 
-         {
 
-             CheckErrorLogs();
 
-             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 { }
 
-             }
 
-             const string errorFilename = "Fatal.log";
 
-             var libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
 
-             var errorFilePath = Path.Combine(libraryPath, errorFilename);
 
-             if (File.Exists(errorFilePath))
 
-             {
 
-                 sendErrorsBtn.IsEnabled = true;
 
-             }
 
-             base.OnAppearing();
 
-         }
 
-         #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 " + GlobalVariables.EmpName,
 
-                     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 async void ErrorLogsBtn_Clicked(object sender, EventArgs e)
 
-         {
 
-             const string errorFilename = "Errorscache.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 " + GlobalVariables.EmpName,
 
-                     Body = errorText,
 
-                     To = new List<string> { "support@prsdigital.com.au" }
 
-                 };
 
-                 await Email.ComposeAsync(message);
 
-                 File.Delete(errorFilePath);
 
-             
 
-         }
 
-         #endregion
 
-     }
 
- }
 
 
  |