|
|
@@ -1,4 +1,5 @@
|
|
|
using System;
|
|
|
+using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Threading.Tasks;
|
|
|
using Comal.Classes;
|
|
|
@@ -26,8 +27,9 @@ namespace PRS.Mobile
|
|
|
private SubPage _page;
|
|
|
private String _pin = "";
|
|
|
private String _2fa = "";
|
|
|
-
|
|
|
- private DatabaseSettings _settings { get; set; }
|
|
|
+
|
|
|
+ private Dictionary<String, MobileDatabaseSettings> _settings = new Dictionary<string, MobileDatabaseSettings>();
|
|
|
+ private MobileDatabaseSettings _default = new MobileDatabaseSettings();
|
|
|
|
|
|
public PinLoginPage()
|
|
|
{
|
|
|
@@ -73,16 +75,19 @@ namespace PRS.Mobile
|
|
|
_status.Text = "Connecting...";
|
|
|
await Task.Run(() =>
|
|
|
{
|
|
|
- if ((_settings.URLs?.Any(x=>!String.IsNullOrWhiteSpace(x)) == true)
|
|
|
- && !string.IsNullOrWhiteSpace(_settings.UserID)
|
|
|
- && !string.IsNullOrWhiteSpace(_settings.Password)
|
|
|
- )
|
|
|
- connection = App.ConnectTransport(_settings.URLs);
|
|
|
+ if ((_default.URLs?.Any(x => !String.IsNullOrWhiteSpace(x)) == true)
|
|
|
+ && !string.IsNullOrWhiteSpace(_default.UserID)
|
|
|
+ && !string.IsNullOrWhiteSpace(_default.Password)
|
|
|
+ )
|
|
|
+ {
|
|
|
+ CoreRepository.CacheID = _default.CacheID;
|
|
|
+ connection = App.ConnectTransport(_default.URLs);
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
if (connection != TransportStatus.OK)
|
|
|
{
|
|
|
- if(_settings.URLs.Any() && !string.IsNullOrWhiteSpace(_settings.UserID))
|
|
|
+ if(_default.URLs.Any() && !string.IsNullOrWhiteSpace(_default.UserID))
|
|
|
await DisplayAlert("Connection Error", $"Unable to establish a connection!\n\nERR: {connection}", "OK");
|
|
|
|
|
|
Navigation.PushAsync(new SettingsPage());
|
|
|
@@ -112,7 +117,7 @@ namespace PRS.Mobile
|
|
|
|
|
|
// If we _should_ have been able to log in (ie we have a username)
|
|
|
// show an error message. Otherwise, jump to the PIN page
|
|
|
- if (!String.IsNullOrWhiteSpace(_settings.UserID))
|
|
|
+ if (!String.IsNullOrWhiteSpace(_default.UserID))
|
|
|
await DisplayAlert("Error logging in", "Invalid User ID, Password or PIN", "OK");
|
|
|
|
|
|
SelectSubPage(SubPage.Pin);
|
|
|
@@ -187,11 +192,15 @@ namespace PRS.Mobile
|
|
|
DateTime expiry = DateTime.Parse(settings[2]);
|
|
|
if (expiry > DateTime.Now)
|
|
|
{
|
|
|
- _settings = new DatabaseSettings();
|
|
|
- _settings.URLs = urls;
|
|
|
- _settings.UserID = user;
|
|
|
- _settings.Password = password;
|
|
|
- new LocalConfiguration<DatabaseSettings>().Save(_settings);
|
|
|
+ _default = new MobileDatabaseSettings();
|
|
|
+ _default.URLs = urls;
|
|
|
+ _default.UserID = user;
|
|
|
+ _default.Password = password;
|
|
|
+ _default.IsDefault = true;
|
|
|
+ _default.CacheID = Guid.NewGuid();
|
|
|
+ _settings.Clear();
|
|
|
+ _settings["Autoconfigured"] = _default;
|
|
|
+ new LocalConfiguration<MobileDatabaseSettings>().SaveAll(_settings);
|
|
|
DisplayAlert("Autoconfiguration", "Configuration Updated Successfully!!", "OK");
|
|
|
}
|
|
|
else
|
|
|
@@ -214,34 +223,77 @@ namespace PRS.Mobile
|
|
|
|
|
|
private void LoadSettings()
|
|
|
{
|
|
|
+
|
|
|
+ // var old = new DatabaseSettings()
|
|
|
+ // {
|
|
|
+ // URLs = new String[]
|
|
|
+ // {
|
|
|
+ // "demo.prsdigital.com.au:8033",
|
|
|
+ // "demo2.prsdigital.com.au:8033",
|
|
|
+ // },
|
|
|
+ // UserID = "GUEST",
|
|
|
+ // Password = "guest"
|
|
|
+ // };
|
|
|
+ // new LocalConfiguration<DatabaseSettings>().Save(old);
|
|
|
+ // _settings = new LocalConfiguration<MobileDatabaseSettings>().LoadAll();
|
|
|
+ // foreach (var key in _settings.Keys)
|
|
|
+ // new LocalConfiguration<MobileDatabaseSettings>(key).Delete();
|
|
|
+
|
|
|
+ _settings = new LocalConfiguration<MobileDatabaseSettings>().LoadAll();
|
|
|
+
|
|
|
+ // Migrate from Old Database Settings (if present)
|
|
|
+ if (!_settings.Any())
|
|
|
+ {
|
|
|
+ var oldsettings = new LocalConfiguration<DatabaseSettings>().LoadAll();
|
|
|
+ foreach (var key in oldsettings.Keys)
|
|
|
+ {
|
|
|
+ if (oldsettings[key].URLs?.Any() == true)
|
|
|
+ {
|
|
|
+ var newsetting = new MobileDatabaseSettings()
|
|
|
+ {
|
|
|
+ URLs = oldsettings[key].URLs,
|
|
|
+ UserID = oldsettings[key].UserID,
|
|
|
+ Password = oldsettings[key].Password,
|
|
|
+ IsDefault = String.IsNullOrWhiteSpace(key),
|
|
|
+ CacheID = Guid.NewGuid()
|
|
|
+ };
|
|
|
+ _settings[String.IsNullOrWhiteSpace(key) ? "Default Profile" : key] = newsetting;
|
|
|
+ }
|
|
|
+
|
|
|
+ new LocalConfiguration<MobileDatabaseSettings>().SaveAll(_settings);
|
|
|
+ new LocalConfiguration<DatabaseSettings>().Delete();
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- _settings = new LocalConfiguration<DatabaseSettings>().Load();
|
|
|
+ // Contruct Defaults if required
|
|
|
+ if (!_settings.Any())
|
|
|
+ {
|
|
|
+ _default = new MobileDatabaseSettings();
|
|
|
+ _default.URLs = new String[]
|
|
|
+ {
|
|
|
+ "demo.prsdigital.com.au:8033",
|
|
|
+ "demo2.prsdigital.com.au:8033",
|
|
|
+ };
|
|
|
+ _default.UserID = "GUEST";
|
|
|
+ _default.Password = "guest";
|
|
|
+ _default.IsDefault = true;
|
|
|
+ _default.CacheID = Guid.NewGuid();
|
|
|
+ _settings["Demo Database"] = _default;
|
|
|
+ new LocalConfiguration<MobileDatabaseSettings>().SaveAll(_settings);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Retrieve the Default (or the first, if there is no default)
|
|
|
+ _default = _settings.Any(x => x.Value.IsDefault)
|
|
|
+ ? _settings.FirstOrDefault(x => x.Value.IsDefault).Value
|
|
|
+ : _settings.First().Value;
|
|
|
+ if (_default.CacheID == Guid.Empty)
|
|
|
+ {
|
|
|
+ _default.CacheID = Guid.NewGuid();
|
|
|
+ new LocalConfiguration<MobileDatabaseSettings>().SaveAll(_settings);
|
|
|
+ }
|
|
|
|
|
|
- // Nothing? Populate with Defaults
|
|
|
- if (!_settings.URLs.Any())
|
|
|
- {
|
|
|
- _settings.URLs = new String[]
|
|
|
- {
|
|
|
- //"remote.com-al.com.au:8050",
|
|
|
- //"192.168.0.247:8050",
|
|
|
- //"192.168.100.54:8050",3
|
|
|
- //"remote.com-al.com.au:8030",
|
|
|
- //"192.168.100.242:8030",
|
|
|
- "demo.prsdigital.com.au:8033",
|
|
|
- "demo2.prsdigital.com.au:8033",
|
|
|
- //"demo3.prsdigital.com.au:8003"
|
|
|
- };
|
|
|
- //_settings.UserID = "frank";
|
|
|
- //_settings.Password = "frankvb22";
|
|
|
- _settings.UserID = "GUEST";
|
|
|
- _settings.Password = "guest";
|
|
|
- //_settings.UserID = "ADMIN";
|
|
|
- //_settings.Password = "admin";
|
|
|
- new LocalConfiguration<DatabaseSettings>().Save(_settings);
|
|
|
- }
|
|
|
-
|
|
|
- //TODO - re enable this when this app is not just the site module
|
|
|
- //App.IsSharedDevice = String.IsNullOrWhiteSpace(_settings.UserID);
|
|
|
+ //TODO - re enable this when this app is not just the site module
|
|
|
+ //App.IsSharedDevice = String.IsNullOrWhiteSpace(_settings.UserID);
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -259,8 +311,8 @@ namespace PRS.Mobile
|
|
|
|
|
|
if (result == ValidationStatus.INVALID)
|
|
|
{
|
|
|
- if (!String.IsNullOrWhiteSpace(_settings.UserID) && !String.IsNullOrWhiteSpace(_settings.Password))
|
|
|
- result = ClientFactory.Validate(_settings.UserID, _settings.Password);
|
|
|
+ if (!String.IsNullOrWhiteSpace(_default.UserID) && !String.IsNullOrWhiteSpace(_default.Password))
|
|
|
+ result = ClientFactory.Validate(_default.UserID, _default.Password);
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
@@ -285,7 +337,7 @@ namespace PRS.Mobile
|
|
|
|
|
|
private void LaunchMainPage()
|
|
|
{
|
|
|
- Device.BeginInvokeOnMainThread(() => SelectSubPage(String.IsNullOrWhiteSpace(_settings.UserID) ? SubPage.Pin : SubPage.Autologin));
|
|
|
+ Device.BeginInvokeOnMainThread(() => SelectSubPage(String.IsNullOrWhiteSpace(_default.UserID) ? SubPage.Pin : SubPage.Autologin));
|
|
|
|
|
|
App.Data.Setup();
|
|
|
|
|
|
@@ -419,8 +471,8 @@ namespace PRS.Mobile
|
|
|
var user = new User() { ID = ClientFactory.UserGuid };
|
|
|
user.Password = NewPassword.Text;
|
|
|
new Client<User>().Save(user, "Password updated by User from Timebench");
|
|
|
- _settings.Password = user.Password;
|
|
|
- new LocalConfiguration<DatabaseSettings>().Save(_settings);
|
|
|
+ _default.Password = user.Password;
|
|
|
+ new LocalConfiguration<MobileDatabaseSettings>().SaveAll(_settings);
|
|
|
|
|
|
LaunchMainPage();
|
|
|
}
|