Refactoring WiP
This commit is contained in:
parent
6fa82e6ed7
commit
c48ed5d7ad
|
@ -72,7 +72,6 @@
|
||||||
6E3CAB682891506900E3064D /* LoginController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E3CAB672891506900E3064D /* LoginController.swift */; };
|
6E3CAB682891506900E3064D /* LoginController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E3CAB672891506900E3064D /* LoginController.swift */; };
|
||||||
6E53C5E128BCA87C008125AC /* ScannerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E53C5E028BCA87C008125AC /* ScannerController.swift */; };
|
6E53C5E128BCA87C008125AC /* ScannerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E53C5E028BCA87C008125AC /* ScannerController.swift */; };
|
||||||
6E53C5E328BCDAB3008125AC /* SelectLaborController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E53C5E228BCDAB3008125AC /* SelectLaborController.swift */; };
|
6E53C5E328BCDAB3008125AC /* SelectLaborController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E53C5E228BCDAB3008125AC /* SelectLaborController.swift */; };
|
||||||
6E6F186528A8EC6900610A59 /* OEGDController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F186428A8EC6900610A59 /* OEGDController.swift */; };
|
|
||||||
6E6F186728AC4D8600610A59 /* SupportController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F186628AC4D8600610A59 /* SupportController.swift */; };
|
6E6F186728AC4D8600610A59 /* SupportController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F186628AC4D8600610A59 /* SupportController.swift */; };
|
||||||
6E74190D28EDABF9001632A6 /* faq.html in Resources */ = {isa = PBXBuildFile; fileRef = 6E74190C28EDABF9001632A6 /* faq.html */; };
|
6E74190D28EDABF9001632A6 /* faq.html in Resources */ = {isa = PBXBuildFile; fileRef = 6E74190C28EDABF9001632A6 /* faq.html */; };
|
||||||
6E74190F28EDBB9F001632A6 /* privacy_policy.html in Resources */ = {isa = PBXBuildFile; fileRef = 6E74190E28EDBB9F001632A6 /* privacy_policy.html */; };
|
6E74190F28EDBB9F001632A6 /* privacy_policy.html in Resources */ = {isa = PBXBuildFile; fileRef = 6E74190E28EDBB9F001632A6 /* privacy_policy.html */; };
|
||||||
|
@ -86,8 +85,6 @@
|
||||||
6EA6D4F1289BCB870009F0E7 /* PIN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA6D4F0289BCB870009F0E7 /* PIN.swift */; };
|
6EA6D4F1289BCB870009F0E7 /* PIN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA6D4F0289BCB870009F0E7 /* PIN.swift */; };
|
||||||
6EA6D4F3289BF9B40009F0E7 /* ViewControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA6D4F2289BF9B40009F0E7 /* ViewControllerExtension.swift */; };
|
6EA6D4F3289BF9B40009F0E7 /* ViewControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA6D4F2289BF9B40009F0E7 /* ViewControllerExtension.swift */; };
|
||||||
6EA6D4F5289D14AE0009F0E7 /* CheckBoxButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA6D4F4289D14AE0009F0E7 /* CheckBoxButton.swift */; };
|
6EA6D4F5289D14AE0009F0E7 /* CheckBoxButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA6D4F4289D14AE0009F0E7 /* CheckBoxButton.swift */; };
|
||||||
6EA6D4F728A106060009F0E7 /* OEGD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA6D4F628A106060009F0E7 /* OEGD.swift */; };
|
|
||||||
6EA6D4F928A10F310009F0E7 /* OEGDFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA6D4F828A10F310009F0E7 /* OEGDFile.swift */; };
|
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
|
@ -194,7 +191,6 @@
|
||||||
6E3CAB672891506900E3064D /* LoginController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginController.swift; sourceTree = "<group>"; };
|
6E3CAB672891506900E3064D /* LoginController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginController.swift; sourceTree = "<group>"; };
|
||||||
6E53C5E028BCA87C008125AC /* ScannerController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScannerController.swift; sourceTree = "<group>"; };
|
6E53C5E028BCA87C008125AC /* ScannerController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScannerController.swift; sourceTree = "<group>"; };
|
||||||
6E53C5E228BCDAB3008125AC /* SelectLaborController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectLaborController.swift; sourceTree = "<group>"; };
|
6E53C5E228BCDAB3008125AC /* SelectLaborController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectLaborController.swift; sourceTree = "<group>"; };
|
||||||
6E6F186428A8EC6900610A59 /* OEGDController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OEGDController.swift; sourceTree = "<group>"; };
|
|
||||||
6E6F186628AC4D8600610A59 /* SupportController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportController.swift; sourceTree = "<group>"; };
|
6E6F186628AC4D8600610A59 /* SupportController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportController.swift; sourceTree = "<group>"; };
|
||||||
6E74190C28EDABF9001632A6 /* faq.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = faq.html; sourceTree = "<group>"; };
|
6E74190C28EDABF9001632A6 /* faq.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = faq.html; sourceTree = "<group>"; };
|
||||||
6E74190E28EDBB9F001632A6 /* privacy_policy.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = privacy_policy.html; sourceTree = "<group>"; };
|
6E74190E28EDBB9F001632A6 /* privacy_policy.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = privacy_policy.html; sourceTree = "<group>"; };
|
||||||
|
@ -208,8 +204,6 @@
|
||||||
6EA6D4F0289BCB870009F0E7 /* PIN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PIN.swift; sourceTree = "<group>"; };
|
6EA6D4F0289BCB870009F0E7 /* PIN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PIN.swift; sourceTree = "<group>"; };
|
||||||
6EA6D4F2289BF9B40009F0E7 /* ViewControllerExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewControllerExtension.swift; sourceTree = "<group>"; };
|
6EA6D4F2289BF9B40009F0E7 /* ViewControllerExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewControllerExtension.swift; sourceTree = "<group>"; };
|
||||||
6EA6D4F4289D14AE0009F0E7 /* CheckBoxButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckBoxButton.swift; sourceTree = "<group>"; };
|
6EA6D4F4289D14AE0009F0E7 /* CheckBoxButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckBoxButton.swift; sourceTree = "<group>"; };
|
||||||
6EA6D4F628A106060009F0E7 /* OEGD.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OEGD.swift; sourceTree = "<group>"; };
|
|
||||||
6EA6D4F828A10F310009F0E7 /* OEGDFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OEGDFile.swift; sourceTree = "<group>"; };
|
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
@ -280,8 +274,6 @@
|
||||||
6995E6A2283C011A003ABF6C /* Session.swift */,
|
6995E6A2283C011A003ABF6C /* Session.swift */,
|
||||||
699DCADF283F81E10072D121 /* Settings.swift */,
|
699DCADF283F81E10072D121 /* Settings.swift */,
|
||||||
6E3CAB63287C7E3300E3064D /* Labor.swift */,
|
6E3CAB63287C7E3300E3064D /* Labor.swift */,
|
||||||
6EA6D4F628A106060009F0E7 /* OEGD.swift */,
|
|
||||||
6EA6D4F828A10F310009F0E7 /* OEGDFile.swift */,
|
|
||||||
);
|
);
|
||||||
path = Models;
|
path = Models;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -325,7 +317,6 @@
|
||||||
696B7548283685E000C8637D /* Controllers */ = {
|
696B7548283685E000C8637D /* Controllers */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
6E6F186428A8EC6900610A59 /* OEGDController.swift */,
|
|
||||||
69B7A113281C59F000A249C6 /* ViewController.swift */,
|
69B7A113281C59F000A249C6 /* ViewController.swift */,
|
||||||
69AB1FA92842572D008045E1 /* PDFViewController.swift */,
|
69AB1FA92842572D008045E1 /* PDFViewController.swift */,
|
||||||
6E3CAB652889AD6A00E3064D /* SettingsController.swift */,
|
6E3CAB652889AD6A00E3064D /* SettingsController.swift */,
|
||||||
|
@ -725,13 +716,11 @@
|
||||||
69A0CA57281D7B5F00DEA57A /* Curve25519.swift in Sources */,
|
69A0CA57281D7B5F00DEA57A /* Curve25519.swift in Sources */,
|
||||||
6E78B22928D376AA00F2DA82 /* KeyboardExtension.swift in Sources */,
|
6E78B22928D376AA00F2DA82 /* KeyboardExtension.swift in Sources */,
|
||||||
698D54F428301C6800766CE3 /* Subscribe.swift in Sources */,
|
698D54F428301C6800766CE3 /* Subscribe.swift in Sources */,
|
||||||
6EA6D4F928A10F310009F0E7 /* OEGDFile.swift in Sources */,
|
|
||||||
69AB1FA028422AAC008045E1 /* Download.swift in Sources */,
|
69AB1FA028422AAC008045E1 /* Download.swift in Sources */,
|
||||||
698D54F2283015E000766CE3 /* EncryptedRequest.swift in Sources */,
|
698D54F2283015E000766CE3 /* EncryptedRequest.swift in Sources */,
|
||||||
699DCADE283F7DFF0072D121 /* Results.swift in Sources */,
|
699DCADE283F7DFF0072D121 /* Results.swift in Sources */,
|
||||||
6EA6D4EF289BC8C80009F0E7 /* Support.swift in Sources */,
|
6EA6D4EF289BC8C80009F0E7 /* Support.swift in Sources */,
|
||||||
6E3CAB662889AD6A00E3064D /* SettingsController.swift in Sources */,
|
6E3CAB662889AD6A00E3064D /* SettingsController.swift in Sources */,
|
||||||
6EA6D4F728A106060009F0E7 /* OEGD.swift in Sources */,
|
|
||||||
696DF3992838DD6800E710BD /* Device.swift in Sources */,
|
696DF3992838DD6800E710BD /* Device.swift in Sources */,
|
||||||
69B7A110281C59F000A249C6 /* AppDelegate.swift in Sources */,
|
69B7A110281C59F000A249C6 /* AppDelegate.swift in Sources */,
|
||||||
6E2A3E2628A706FB002EB204 /* UIDownPicker.m in Sources */,
|
6E2A3E2628A706FB002EB204 /* UIDownPicker.m in Sources */,
|
||||||
|
@ -740,7 +729,6 @@
|
||||||
694FF36B282FB4FA0070C3F2 /* PublicKey.swift in Sources */,
|
694FF36B282FB4FA0070C3F2 /* PublicKey.swift in Sources */,
|
||||||
699DCAE5283FC7B90072D121 /* DE.swift in Sources */,
|
699DCAE5283FC7B90072D121 /* DE.swift in Sources */,
|
||||||
69F4DE99281C8DE60030D34D /* AES.swift in Sources */,
|
69F4DE99281C8DE60030D34D /* AES.swift in Sources */,
|
||||||
6E6F186528A8EC6900610A59 /* OEGDController.swift in Sources */,
|
|
||||||
694E9F782841127300431F95 /* ResultsTableViewCell.swift in Sources */,
|
694E9F782841127300431F95 /* ResultsTableViewCell.swift in Sources */,
|
||||||
69B7A112281C59F000A249C6 /* SceneDelegate.swift in Sources */,
|
69B7A112281C59F000A249C6 /* SceneDelegate.swift in Sources */,
|
||||||
69F4DE93281C88600030D34D /* Security.swift in Sources */,
|
69F4DE93281C88600030D34D /* Security.swift in Sources */,
|
||||||
|
|
|
@ -12,8 +12,7 @@ import UIKit
|
||||||
|
|
||||||
class LoginController: UIViewController, UITextFieldDelegate, UIAlertViewDelegate
|
class LoginController: UIViewController, UITextFieldDelegate, UIAlertViewDelegate
|
||||||
{
|
{
|
||||||
public static var CurrentViewController: LoginController? = nil
|
private var Settings: Core.Models.Settings? = nil
|
||||||
public static var Settings: Core.Models.Settings? = nil
|
|
||||||
|
|
||||||
@IBOutlet weak var loginPassword_PassworArea: UIView!
|
@IBOutlet weak var loginPassword_PassworArea: UIView!
|
||||||
|
|
||||||
|
@ -78,8 +77,7 @@ class LoginController: UIViewController, UITextFieldDelegate, UIAlertViewDelegat
|
||||||
*/
|
*/
|
||||||
private func Initialize()
|
private func Initialize()
|
||||||
{
|
{
|
||||||
LoginController.CurrentViewController = self
|
Settings = Core.Models.Settings.loadFromFile(atPath: Core.System.SettingsPath())
|
||||||
LoginController.Settings = Core.Models.Settings.loadFromFile(atPath: Core.System.SettingsPath())
|
|
||||||
self.loginPasswordView_txtPassword.delegate = self
|
self.loginPasswordView_txtPassword.delegate = self
|
||||||
self.loginPasswordView_txtPassword.enablePasswordToggle()
|
self.loginPasswordView_txtPassword.enablePasswordToggle()
|
||||||
|
|
||||||
|
@ -115,6 +113,11 @@ class LoginController: UIViewController, UITextFieldDelegate, UIAlertViewDelegat
|
||||||
self.hideKeyboardWhenTappedAround()
|
self.hideKeyboardWhenTappedAround()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func GetHost()-> Core.Https.Servers
|
||||||
|
{
|
||||||
|
return (Settings!.labor?.host ?? .DEVELOPMENT)
|
||||||
|
}
|
||||||
|
|
||||||
@objc func ShowPinHinweis()
|
@objc func ShowPinHinweis()
|
||||||
{
|
{
|
||||||
self.passwordReset_Status.text = ""
|
self.passwordReset_Status.text = ""
|
||||||
|
@ -153,7 +156,7 @@ class LoginController: UIViewController, UITextFieldDelegate, UIAlertViewDelegat
|
||||||
self.passwordReset_txtPassword.text = Core.Lang.Get(key: "LBL_NEW_PASSWORD")
|
self.passwordReset_txtPassword.text = Core.Lang.Get(key: "LBL_NEW_PASSWORD")
|
||||||
self.passwordReset_txtPasswordConfirm.text = Core.Lang.Get(key: "LBL_PASSWORD_CONFIRM")
|
self.passwordReset_txtPasswordConfirm.text = Core.Lang.Get(key: "LBL_PASSWORD_CONFIRM")
|
||||||
|
|
||||||
self.loginPasswordView_LaborLogo.image = LoginController.Settings?.labor?.logo
|
self.loginPasswordView_LaborLogo.image = Settings?.labor?.logo
|
||||||
}
|
}
|
||||||
|
|
||||||
internal func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
internal func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
||||||
|
@ -200,7 +203,7 @@ class LoginController: UIViewController, UITextFieldDelegate, UIAlertViewDelegat
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let password = self.loginPasswordView_txtPassword.text ?? ""
|
let password = self.loginPasswordView_txtPassword.text ?? ""
|
||||||
let encrypted_pwd = Core.Security.AES.Decrypt(value: LoginController.Settings?.hashed_private_key ?? "", password: String( decoding:Core.Security.AES.GetKey(password: password), as: UTF8.self))
|
let encrypted_pwd = Core.Security.AES.Decrypt(value: Settings?.hashed_private_key ?? "", password: String( decoding:Core.Security.AES.GetKey(password: password), as: UTF8.self))
|
||||||
if(encrypted_pwd==nil)
|
if(encrypted_pwd==nil)
|
||||||
{
|
{
|
||||||
self.loginPasswordView_Status.text=Core.Lang.Get(key: "ERROR_INVALID_PASSWORD")
|
self.loginPasswordView_Status.text=Core.Lang.Get(key: "ERROR_INVALID_PASSWORD")
|
||||||
|
@ -292,7 +295,7 @@ class LoginController: UIViewController, UITextFieldDelegate, UIAlertViewDelegat
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let oldPasswordDecrypted = Core.Models.Request.ChangeVerificatorHashProvider.GetDecryptedOldPasswordByPin(settings: LoginController.Settings!, pin: pin)
|
let oldPasswordDecrypted = Core.Models.Request.ChangeVerificatorHashProvider.GetDecryptedOldPasswordByPin(settings: Settings!, pin: pin)
|
||||||
|
|
||||||
if(oldPasswordDecrypted == nil)
|
if(oldPasswordDecrypted == nil)
|
||||||
{
|
{
|
||||||
|
@ -314,20 +317,18 @@ class LoginController: UIViewController, UITextFieldDelegate, UIAlertViewDelegat
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let changeVerificatorHash = Core.Models.Request.ChangeVerificatorHashProvider.PrepareChangeVerificatorHash(settings: LoginController.Settings!, oldPassword: oldPasswordDecrypted!, newPassword: newPass, newPin: pinNew)
|
let changeVerificatorHash = Core.Models.Request.ChangeVerificatorHashProvider.PrepareChangeVerificatorHash(settings: Settings!, oldPassword: oldPasswordDecrypted!, newPassword: newPass, newPin: pinNew)
|
||||||
|
|
||||||
let requestKeyPair = Core.Security.Curve25519.GenerateKeyPair()
|
let requestKeyPair = Core.Security.Curve25519.GenerateKeyPair()
|
||||||
|
|
||||||
Core.Https.Request.KeyExchangeAsync(host: (LoginController.Settings!.labor?.host ?? .DEVELOPMENT), keyPair: requestKeyPair,
|
Core.Https.Request.KeyExchangeAsync(host: GetHost(), keyPair: requestKeyPair,
|
||||||
onSuccess: {
|
onSuccess: {
|
||||||
publicKey in
|
publicKey in
|
||||||
|
|
||||||
let sharedKey = requestKeyPair.GetSharedKey(peerPublicKeyBase64: publicKey.key)
|
let sharedKey = requestKeyPair.GetSharedKey(peerPublicKeyBase64: publicKey.key)
|
||||||
let encryptedRequest = Core.Models.Request.EncryptedRequest(descriptor: "ChangeVerificatorHash", contentObject: changeVerificatorHash, requestType: .REQUEST_VERIFICATOR_HASH, key: sharedKey!)
|
let encryptedRequest = Core.Models.Request.EncryptedRequest(descriptor: "ChangeVerificatorHash", contentObject: changeVerificatorHash, requestType: .REQUEST_VERIFICATOR_HASH, key: sharedKey!)
|
||||||
|
|
||||||
let currentHost = ViewController.Settings!.labor?.host ?? .DEVELOPMENT
|
Core.Https.Request.EncryptedRequestAsync(host: self.GetHost(), controller: "results", action: "update_verificator_hash", request: encryptedRequest, serverPublicKey: publicKey, keyPair: requestKeyPair, onSuccess: {
|
||||||
|
|
||||||
Core.Https.Request.EncryptedRequestAsync(host: currentHost, controller: "results", action: "update_verificator_hash", request: encryptedRequest, serverPublicKey: publicKey, keyPair: requestKeyPair, onSuccess: {
|
|
||||||
|
|
||||||
encryptedResponse in
|
encryptedResponse in
|
||||||
|
|
||||||
|
@ -338,7 +339,7 @@ class LoginController: UIViewController, UITextFieldDelegate, UIAlertViewDelegat
|
||||||
if(encryptedResponse.descriptor!.lowercased() == "success")
|
if(encryptedResponse.descriptor!.lowercased() == "success")
|
||||||
{
|
{
|
||||||
var errMsg: String? = nil
|
var errMsg: String? = nil
|
||||||
LoginController.Settings = Core.Models.Request.ChangeVerificatorHashProvider.SaveChangedVerificatorBySuccess(settings: LoginController.Settings!, oldPassword: oldPasswordDecrypted!, newPassword: newPass, pin: (changeVerificatorHash.pin ?? ""), errorMsg: &errMsg)
|
self.Settings = Core.Models.Request.ChangeVerificatorHashProvider.SaveChangedVerificatorBySuccess(settings: self.Settings!, oldPassword: oldPasswordDecrypted!, newPassword: newPass, pin: (changeVerificatorHash.pin ?? ""), errorMsg: &errMsg)
|
||||||
|
|
||||||
if(errMsg != nil)
|
if(errMsg != nil)
|
||||||
{
|
{
|
||||||
|
@ -459,20 +460,18 @@ class LoginController: UIViewController, UITextFieldDelegate, UIAlertViewDelegat
|
||||||
{
|
{
|
||||||
let requestKeyPair = Core.Security.Curve25519.GenerateKeyPair()
|
let requestKeyPair = Core.Security.Curve25519.GenerateKeyPair()
|
||||||
|
|
||||||
Core.Https.Request.KeyExchangeAsync(host: (LoginController.Settings!.labor?.host ?? .DEVELOPMENT), keyPair: requestKeyPair,
|
Core.Https.Request.KeyExchangeAsync(host: GetHost(), keyPair: requestKeyPair,
|
||||||
onSuccess: {
|
onSuccess: {
|
||||||
publicKey in
|
publicKey in
|
||||||
|
|
||||||
let getPIN = Core.Models.Request.GetPIN()
|
let getPIN = Core.Models.Request.GetPIN()
|
||||||
getPIN.udid = LoginController.Settings!.udid;
|
getPIN.udid = self.Settings!.udid;
|
||||||
getPIN.verificator_hash = LoginController.Settings!.verificator_hash;
|
getPIN.verificator_hash = self.Settings!.verificator_hash;
|
||||||
let sharedKey = requestKeyPair.GetSharedKey(peerPublicKeyBase64: publicKey.key)
|
let sharedKey = requestKeyPair.GetSharedKey(peerPublicKeyBase64: publicKey.key)
|
||||||
|
|
||||||
let encryptedRequest = Core.Models.Request.EncryptedRequest(descriptor: "PIN", contentObject: getPIN, requestType: .REQUEST_GET_PIN, key: sharedKey!)
|
let encryptedRequest = Core.Models.Request.EncryptedRequest(descriptor: "PIN", contentObject: getPIN, requestType: .REQUEST_GET_PIN, key: sharedKey!)
|
||||||
|
|
||||||
let currentHost = ViewController.Settings!.labor?.host ?? .DEVELOPMENT
|
Core.Https.Request.EncryptedRequestAsync(host: self.GetHost(), controller: "results", action: "pin", request: encryptedRequest, serverPublicKey: publicKey, keyPair: requestKeyPair, onSuccess: {
|
||||||
|
|
||||||
Core.Https.Request.EncryptedRequestAsync(host: currentHost, controller: "results", action: "pin", request: encryptedRequest, serverPublicKey: publicKey, keyPair: requestKeyPair, onSuccess: {
|
|
||||||
|
|
||||||
encryptedResponse in
|
encryptedResponse in
|
||||||
|
|
||||||
|
|
|
@ -1,897 +0,0 @@
|
||||||
//
|
|
||||||
// OEGDController.swift
|
|
||||||
// Befund
|
|
||||||
//
|
|
||||||
// Created by Artur Savitskiy on 03.08.22.
|
|
||||||
// Copyright © 2022 MVZ Dr. Stein und Kollegen. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
import UIKit
|
|
||||||
|
|
||||||
//import "DownPicker.h"
|
|
||||||
|
|
||||||
class OEGDController: UIViewController, UITextFieldDelegate, UIScrollViewDelegate, UpdatingParentCheckBox
|
|
||||||
{
|
|
||||||
public enum OEGDEditType: Int
|
|
||||||
{
|
|
||||||
case New
|
|
||||||
case Edit
|
|
||||||
}
|
|
||||||
public var currentMode: OEGDEditType = OEGDEditType.New
|
|
||||||
|
|
||||||
private var Genders: NSMutableArray =
|
|
||||||
[ Core.Lang.Get(key: "LBL_GENDER_M")
|
|
||||||
, Core.Lang.Get(key: "LBL_GENDER_W")
|
|
||||||
, Core.Lang.Get(key: "LBL_GENDER_D")
|
|
||||||
, Core.Lang.Get(key: "LBL_GENDER_X")]
|
|
||||||
|
|
||||||
@IBOutlet weak var editPopup_HeightScrollView: NSLayoutConstraint!
|
|
||||||
@IBOutlet weak var mainOEGD_HeightScrollView: NSLayoutConstraint!
|
|
||||||
|
|
||||||
public static var Settings: Core.Models.Settings? = nil
|
|
||||||
|
|
||||||
|
|
||||||
@IBOutlet weak var LBL_TITLE: UILabel!
|
|
||||||
//@IBOutlet weak var LBL_BACK: UILabel!
|
|
||||||
@IBOutlet weak var mainOEGD_MenuBtn: UIButton!
|
|
||||||
@IBOutlet weak var mainOEGD_BackBtn: UIButton!
|
|
||||||
@IBOutlet weak var LBL_NO_OEGD: UILabel!
|
|
||||||
|
|
||||||
//new or edit OEGD popup
|
|
||||||
@IBOutlet weak var LBL_EDIT_TITLE: UILabel!
|
|
||||||
|
|
||||||
@IBOutlet weak var editPopup_Overlay: UIView!
|
|
||||||
@IBOutlet weak var editPopup_Content: UIView!
|
|
||||||
@IBOutlet weak var editPopup_ScrollView: UIScrollView!
|
|
||||||
|
|
||||||
@IBOutlet weak var editOEGD_txtTitle: UITextField!
|
|
||||||
@IBOutlet weak var editOEGD_txtFirstname: UITextField!
|
|
||||||
@IBOutlet weak var editOEGD_txtLastname: UITextField!
|
|
||||||
@IBOutlet weak var editOEGD_txtAddLastname: UITextField!
|
|
||||||
@IBOutlet weak var editOEGD_txtPrefix: UITextField!
|
|
||||||
@IBOutlet weak var editOEGD_txtGender: UITextField!
|
|
||||||
var genderDownPicker: DownPicker!
|
|
||||||
|
|
||||||
@IBOutlet weak var editOEGD_txtBirthday: UITextField!
|
|
||||||
let editOEGD_dtBirthday = UIDatePicker()
|
|
||||||
@IBOutlet weak var editOEGD_txtStreet: UITextField!
|
|
||||||
@IBOutlet weak var editOEGD_txtZip: UITextField!
|
|
||||||
@IBOutlet weak var editOEGD_txtCity: UITextField!
|
|
||||||
@IBOutlet weak var editOEGD_txtTelefon: UITextField!
|
|
||||||
@IBOutlet weak var editOEGD_CWAPolicyView: UIView!
|
|
||||||
@IBOutlet weak var editOEGD_CWAPolicyBtn: UIButton!
|
|
||||||
@IBOutlet weak var editOEGD_CreateBtn: UIButton!
|
|
||||||
@IBOutlet weak var editOEGD_BackBtn: UIButton!
|
|
||||||
@IBOutlet weak var editOEGD_Status: UILabel!
|
|
||||||
|
|
||||||
//OEGD Options-Popup
|
|
||||||
|
|
||||||
@IBOutlet weak var optionsPopup_Overlay: UIView!
|
|
||||||
@IBOutlet weak var optionsPopup_Content: UIView!
|
|
||||||
@IBOutlet weak var optionsPopup_ButtonsContent: UIView!
|
|
||||||
|
|
||||||
@IBOutlet weak var optionsPopup_EditContent: UIView!
|
|
||||||
@IBOutlet weak var optionsPopup_AddContent: UIView!
|
|
||||||
@IBOutlet weak var optionsPopup_DeleteContent: UIView!
|
|
||||||
|
|
||||||
@IBOutlet weak var optionsOEGD_AddBtn: UIButton!
|
|
||||||
@IBOutlet weak var optionsOEGD_EditBtn: UIButton!
|
|
||||||
@IBOutlet weak var optionsOEGD_DeleteBtn: UIButton!
|
|
||||||
@IBOutlet weak var optionsOEGD_CancelBtn: UIButton!
|
|
||||||
|
|
||||||
@IBOutlet weak var optionsPopup_ConfirmDelete: UIView!
|
|
||||||
@IBOutlet weak var optionsOEGD_DeleteTitle: UILabel!
|
|
||||||
@IBOutlet weak var optionsOEGD_DeleteNoBtn: UIButton!
|
|
||||||
@IBOutlet weak var optionsOEGD_DeleteYesBtn: UIButton!
|
|
||||||
|
|
||||||
|
|
||||||
//CWA-Policy Popup
|
|
||||||
@IBOutlet weak var LBL_POLICY_TITLE: UILabel!
|
|
||||||
@IBOutlet weak var policyPopup_Overlay: UIView!
|
|
||||||
@IBOutlet weak var policyPopup_AcceptView: UIView!
|
|
||||||
@IBOutlet weak var policyPopup_PolicyText: UILabel!
|
|
||||||
@IBOutlet weak var policyPopup_btnAcceptPolicy: UIButton!
|
|
||||||
|
|
||||||
@IBOutlet var editPopup_Checkbox: CheckBoxButton!
|
|
||||||
public var confirmCheckBox:CheckBoxButton! {
|
|
||||||
get {
|
|
||||||
return editPopup_Checkbox
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@IBOutlet weak var pageControl: UIPageControl!
|
|
||||||
@IBOutlet weak var scrollView: UIScrollView!
|
|
||||||
|
|
||||||
@IBOutlet weak var qrImage: UIImageView!
|
|
||||||
|
|
||||||
private var OEGDFiles: [Core.Models.OEGDFile] = []
|
|
||||||
private var CurrentOEGDFile: Core.Models.OEGDFile? = nil
|
|
||||||
|
|
||||||
private let CWAPolicyLink = "https://www.limbachgruppe.com/datenschutz"
|
|
||||||
|
|
||||||
private var blinkTimer: Timer? = nil
|
|
||||||
|
|
||||||
private var isAlpha1: Bool = true
|
|
||||||
|
|
||||||
private let menuBtnWidth = 90.0
|
|
||||||
private let menuBtnHeight = 65.0
|
|
||||||
|
|
||||||
override func viewDidLoad()
|
|
||||||
{
|
|
||||||
super.viewDidLoad()
|
|
||||||
self.Initialize()
|
|
||||||
}
|
|
||||||
|
|
||||||
override func viewDidAppear(_ animated: Bool) {
|
|
||||||
super.viewDidAppear(animated)
|
|
||||||
self.SetLabels()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func FormMenuButton()
|
|
||||||
{
|
|
||||||
if(self.OEGDFiles.count==0)
|
|
||||||
{
|
|
||||||
if (self.blinkTimer==nil)
|
|
||||||
{
|
|
||||||
self.blinkTimer = Timer.scheduledTimer(timeInterval: 0.7, target: self, selector: #selector(self.alarmAlertActivate), userInfo: nil, repeats: true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (self.blinkTimer != nil)
|
|
||||||
{
|
|
||||||
self.blinkTimer!.invalidate()
|
|
||||||
self.blinkTimer = nil
|
|
||||||
let menuImg = UIImage(named: "ic_dehaze")?.image(alpha: 1.0, targetSize: CGSize(width: menuBtnWidth, height: menuBtnHeight))
|
|
||||||
self.mainOEGD_MenuBtn.setImage(menuImg, for: .normal)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private func Initialize()
|
|
||||||
{
|
|
||||||
//OEGDController.CurrentViewController = self
|
|
||||||
OEGDController.Settings = Core.Models.Settings.loadFromFile(atPath: Core.System.SettingsPath())
|
|
||||||
|
|
||||||
|
|
||||||
self.editOEGD_txtTitle.delegate = self
|
|
||||||
self.editOEGD_txtFirstname.delegate = self
|
|
||||||
self.editOEGD_txtLastname.delegate = self
|
|
||||||
self.editOEGD_txtAddLastname.delegate = self
|
|
||||||
self.editOEGD_txtPrefix.delegate = self
|
|
||||||
self.editOEGD_txtGender.delegate = self
|
|
||||||
self.editOEGD_txtBirthday.delegate = self
|
|
||||||
self.editOEGD_txtStreet.delegate = self
|
|
||||||
self.editOEGD_txtZip.delegate = self
|
|
||||||
self.editOEGD_txtCity.delegate = self
|
|
||||||
self.editOEGD_txtTelefon.delegate = self
|
|
||||||
|
|
||||||
self.editOEGD_txtTitle.returnKeyType = .next
|
|
||||||
self.editOEGD_txtFirstname.returnKeyType = .next
|
|
||||||
self.editOEGD_txtLastname.returnKeyType = .next
|
|
||||||
self.editOEGD_txtAddLastname.returnKeyType = .next
|
|
||||||
self.editOEGD_txtPrefix.returnKeyType = .next
|
|
||||||
self.editOEGD_txtGender.returnKeyType = .next
|
|
||||||
self.editOEGD_txtBirthday.returnKeyType = .next
|
|
||||||
self.editOEGD_txtStreet.returnKeyType = .next
|
|
||||||
self.editOEGD_txtZip.returnKeyType = .next
|
|
||||||
self.editOEGD_txtCity.returnKeyType = .next
|
|
||||||
self.editOEGD_txtTelefon.returnKeyType = .done
|
|
||||||
|
|
||||||
self.addDoneToolbar([self.editOEGD_txtTitle, self.editOEGD_txtFirstname, self.editOEGD_txtLastname, self.editOEGD_txtAddLastname, self.editOEGD_txtPrefix, self.editOEGD_txtGender, self.editOEGD_txtStreet, self.editOEGD_txtZip, self.editOEGD_txtCity, self.editOEGD_txtTelefon])
|
|
||||||
|
|
||||||
self.hideKeyboardWhenTappedAround()
|
|
||||||
self.createDatePicker()
|
|
||||||
|
|
||||||
self.optionsPopup_Overlay.frame = self.view.frame
|
|
||||||
self.view.addSubview(self.optionsPopup_Overlay)
|
|
||||||
optionsPopup_Overlay.isHidden = true
|
|
||||||
|
|
||||||
optionsPopup_ConfirmDelete.isHidden = true
|
|
||||||
|
|
||||||
self.editPopup_Overlay.frame = self.view.frame
|
|
||||||
self.view.addSubview(self.editPopup_Overlay)
|
|
||||||
editPopup_Overlay.isHidden = true
|
|
||||||
|
|
||||||
self.policyPopup_Overlay.frame = self.view.frame
|
|
||||||
self.view.addSubview(self.policyPopup_Overlay)
|
|
||||||
policyPopup_Overlay.isHidden = true
|
|
||||||
|
|
||||||
self.editPopup_Checkbox = CheckBoxButton(frame: CGRect(x: 20, y: 10, width: 30, height: 30))
|
|
||||||
self.editOEGD_CWAPolicyView.addSubview(self.editPopup_Checkbox)
|
|
||||||
let gesture = UITapGestureRecognizer(target: self, action: #selector(didTapCheckbox))
|
|
||||||
self.editPopup_Checkbox.addGestureRecognizer(gesture)
|
|
||||||
self.editPopup_Checkbox.setChecked(flag: true)
|
|
||||||
|
|
||||||
self.genderDownPicker = DownPicker(textField: editOEGD_txtGender, withData: (Genders as! [Any]))
|
|
||||||
|
|
||||||
self.scrollView.delegate = self
|
|
||||||
|
|
||||||
self.InitializeScrollView()
|
|
||||||
|
|
||||||
//calc top-position of round Back-button
|
|
||||||
let screenBound = UIScreen.main.bounds;
|
|
||||||
var width = CGFloat((screenBound.width * 30) / 100.0)
|
|
||||||
if(width > 100.0)
|
|
||||||
{
|
|
||||||
width = CGFloat(100.0)
|
|
||||||
}
|
|
||||||
//calc new height for ScrollView in edit OEGD
|
|
||||||
let bottom = (screenBound.height - 100) - (width / 2.0) - 30
|
|
||||||
var newHeight = bottom - self.editPopup_ScrollView.frame.origin.y
|
|
||||||
self.editPopup_HeightScrollView.constant = newHeight
|
|
||||||
//calc new height for ScrollView in main form (for QRCode), minus 10 pt for Page-control
|
|
||||||
newHeight = bottom - self.scrollView.frame.origin.y - 10
|
|
||||||
self.mainOEGD_HeightScrollView.constant = newHeight
|
|
||||||
|
|
||||||
let menuImg = UIImage(named: "ic_dehaze")?.image(alpha: 1.0, targetSize: CGSize(width: menuBtnWidth, height: menuBtnHeight))
|
|
||||||
self.mainOEGD_MenuBtn.setImage(menuImg, for: .normal)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc func alarmAlertActivate(){
|
|
||||||
UIView.animate(withDuration: 0.7) {
|
|
||||||
let menuImg = UIImage(named: "ic_dehaze")?.image(alpha: self.isAlpha1 ? 1.0: 0.0, targetSize: CGSize(width: self.menuBtnWidth, height: self.menuBtnHeight))
|
|
||||||
self.mainOEGD_MenuBtn.setImage(menuImg, for: .normal)
|
|
||||||
}
|
|
||||||
self.isAlpha1 = !self.isAlpha1
|
|
||||||
}
|
|
||||||
|
|
||||||
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
|
||||||
let pageIndex = round(scrollView.contentOffset.x/view.frame.width)
|
|
||||||
pageControl.currentPage = Int(pageIndex)
|
|
||||||
self.CurrentOEGDFile = self.OEGDFiles[Int(pageIndex)]
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
internal func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
|
||||||
self.switchBasedNextTextField(textField)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
private func switchBasedNextTextField(_ textField: UITextField) {
|
|
||||||
switch textField {
|
|
||||||
case self.editOEGD_txtTitle:
|
|
||||||
self.editOEGD_txtFirstname.becomeFirstResponder()
|
|
||||||
case self.editOEGD_txtFirstname:
|
|
||||||
self.editOEGD_txtLastname.becomeFirstResponder()
|
|
||||||
case self.editOEGD_txtLastname:
|
|
||||||
self.editOEGD_txtAddLastname.becomeFirstResponder()
|
|
||||||
case self.editOEGD_txtAddLastname:
|
|
||||||
self.editOEGD_txtPrefix.becomeFirstResponder()
|
|
||||||
case self.editOEGD_txtPrefix:
|
|
||||||
self.editOEGD_txtGender.becomeFirstResponder()
|
|
||||||
case self.editOEGD_txtGender:
|
|
||||||
self.editOEGD_txtBirthday.becomeFirstResponder()
|
|
||||||
case self.editOEGD_txtBirthday:
|
|
||||||
self.editOEGD_txtStreet.becomeFirstResponder()
|
|
||||||
case self.editOEGD_txtStreet:
|
|
||||||
self.editOEGD_txtZip.becomeFirstResponder()
|
|
||||||
case self.editOEGD_txtZip:
|
|
||||||
self.editOEGD_txtCity.becomeFirstResponder()
|
|
||||||
case self.editOEGD_txtCity:
|
|
||||||
self.editOEGD_txtTelefon.becomeFirstResponder()
|
|
||||||
default:
|
|
||||||
self.view.endEditing(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private func InitializeScrollView()
|
|
||||||
{
|
|
||||||
self.LoadOEGDs()
|
|
||||||
|
|
||||||
|
|
||||||
if(self.OEGDFiles.count>0)
|
|
||||||
{
|
|
||||||
let slides: [UISlider] = createSlides()
|
|
||||||
setupSlideScrollView(slides: slides)
|
|
||||||
|
|
||||||
scrollView.contentOffset.x = 0
|
|
||||||
pageControl.numberOfPages = slides.count
|
|
||||||
pageControl.currentPage = 0
|
|
||||||
view.bringSubviewToFront(pageControl)
|
|
||||||
|
|
||||||
self.CurrentOEGDFile = self.OEGDFiles[0]
|
|
||||||
|
|
||||||
self.scrollView.isHidden = false
|
|
||||||
self.pageControl.isHidden = false
|
|
||||||
|
|
||||||
optionsPopup_EditContent.isHidden = false
|
|
||||||
optionsPopup_DeleteContent.isHidden = false
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
self.CurrentOEGDFile = nil
|
|
||||||
|
|
||||||
self.scrollView.isHidden = true
|
|
||||||
self.pageControl.isHidden = true
|
|
||||||
|
|
||||||
optionsPopup_EditContent.isHidden = true
|
|
||||||
optionsPopup_DeleteContent.isHidden = true
|
|
||||||
}
|
|
||||||
|
|
||||||
self.FormMenuButton()
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func setupSlideScrollView(slides : [UISlider]) {
|
|
||||||
scrollView.frame = CGRect(x: 0, y: 100, width: view.frame.width, height: view.frame.height-300)
|
|
||||||
scrollView.contentSize = CGSize(width: view.frame.width * CGFloat(slides.count), height: view.frame.height-300)
|
|
||||||
scrollView.isPagingEnabled = true
|
|
||||||
|
|
||||||
for i in 0 ..< slides.count {
|
|
||||||
slides[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: view.frame.width, height: view.frame.height-200)
|
|
||||||
scrollView.addSubview(slides[i])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func createSlides() -> [UISlider] {
|
|
||||||
|
|
||||||
var slides: [UISlider] = []
|
|
||||||
|
|
||||||
let fileCounter = self.OEGDFiles.count
|
|
||||||
if ( fileCounter > 0)
|
|
||||||
{
|
|
||||||
pageControl.numberOfPages = fileCounter
|
|
||||||
for index in 0..<fileCounter
|
|
||||||
{
|
|
||||||
|
|
||||||
var json: Data
|
|
||||||
let jsonEncoder = JSONEncoder()
|
|
||||||
do{
|
|
||||||
json = try jsonEncoder.encode(self.OEGDFiles[index].OEGD)
|
|
||||||
}
|
|
||||||
catch{
|
|
||||||
json = Data()
|
|
||||||
}
|
|
||||||
|
|
||||||
let slide:UISlider = Bundle.main.loadNibNamed("UISlider", owner: self, options: nil)?.first as! UISlider
|
|
||||||
slide.loadedImg.image = self.GenerateQRCode(content: json)
|
|
||||||
slide.titleImg.text = self.OEGDFiles[index].OEGD.first_name + " " + self.OEGDFiles[index].OEGD.last_name
|
|
||||||
|
|
||||||
slides.append(slide)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return slides
|
|
||||||
}
|
|
||||||
|
|
||||||
private func GenerateQRCode(content: Data) -> UIImage
|
|
||||||
{
|
|
||||||
let context = CIContext()
|
|
||||||
let data = content
|
|
||||||
let filter = CIFilter.qrCodeGenerator()
|
|
||||||
filter.setValue(data, forKey: "inputMessage")
|
|
||||||
if let outputImage = filter.outputImage {
|
|
||||||
let transform = CGAffineTransform(scaleX: 10, y: 10)
|
|
||||||
let scaledQRImage = outputImage.transformed(by: transform)
|
|
||||||
if let cgimg = context.createCGImage(scaledQRImage, from: scaledQRImage.extent){
|
|
||||||
return UIImage(cgImage: cgimg)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return UIImage(systemName: "xmark.circle") ?? UIImage()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func PrepareEditOEGD()
|
|
||||||
{
|
|
||||||
self.currentMode = OEGDEditType.Edit
|
|
||||||
self.LBL_EDIT_TITLE.text = Core.Lang.Get(key: "LBL_EDIT_OEGD")
|
|
||||||
|
|
||||||
if (self.CurrentOEGDFile != nil)
|
|
||||||
{
|
|
||||||
let curOEGD = self.CurrentOEGDFile?.OEGD
|
|
||||||
self.editOEGD_txtTitle.text = curOEGD?.title
|
|
||||||
self.editOEGD_txtFirstname.text = curOEGD?.first_name
|
|
||||||
self.editOEGD_txtLastname.text = curOEGD?.last_name
|
|
||||||
self.editOEGD_txtAddLastname.text = curOEGD?.name_addition
|
|
||||||
self.editOEGD_txtPrefix.text = curOEGD?.prefix
|
|
||||||
|
|
||||||
let curGender = curOEGD?.gender ?? ""
|
|
||||||
if(curGender == "M")
|
|
||||||
{
|
|
||||||
self.editOEGD_txtGender.text = Genders[0] as? String
|
|
||||||
}
|
|
||||||
else if(curGender == "W")
|
|
||||||
{
|
|
||||||
self.editOEGD_txtGender.text = Genders[1] as? String
|
|
||||||
}
|
|
||||||
else if(curGender == "D")
|
|
||||||
{
|
|
||||||
self.editOEGD_txtGender.text = Genders[2] as? String
|
|
||||||
}
|
|
||||||
else if(curGender == "X")
|
|
||||||
{
|
|
||||||
self.editOEGD_txtGender.text = Genders[3] as? String
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if((curOEGD?.birthdate ?? "").count > 0)
|
|
||||||
{
|
|
||||||
let birthday = curOEGD?.GetBirthday()
|
|
||||||
if(birthday != nil)
|
|
||||||
{
|
|
||||||
self.editOEGD_dtBirthday.setDate(birthday!, animated: false)
|
|
||||||
self.editOEGD_txtBirthday.text = curOEGD?.GetFormatedBirthday()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
self.editOEGD_txtStreet.text = curOEGD?.address.street_number
|
|
||||||
self.editOEGD_txtZip.text = curOEGD?.address.zip_code
|
|
||||||
self.editOEGD_txtCity.text = curOEGD?.address.city
|
|
||||||
self.editOEGD_txtTelefon.text = curOEGD?.phone
|
|
||||||
self.editPopup_Checkbox.setChecked(flag: (curOEGD?.cwa_consent_flag ?? false))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private func PrepareNewOEGD()
|
|
||||||
{
|
|
||||||
self.currentMode = OEGDEditType.New
|
|
||||||
self.LBL_EDIT_TITLE.text = Core.Lang.Get(key: "LBL_NEW_OEGD")
|
|
||||||
|
|
||||||
self.editOEGD_txtTitle.text = nil
|
|
||||||
self.editOEGD_txtFirstname.text = nil
|
|
||||||
self.editOEGD_txtLastname.text = nil
|
|
||||||
self.editOEGD_txtAddLastname.text = nil
|
|
||||||
self.editOEGD_txtPrefix.text = nil
|
|
||||||
self.editOEGD_txtGender.text = nil
|
|
||||||
self.editOEGD_txtBirthday.text = nil
|
|
||||||
self.editOEGD_dtBirthday.setDate(Date(), animated: false)
|
|
||||||
self.editOEGD_txtStreet.text = nil
|
|
||||||
self.editOEGD_txtZip.text = nil
|
|
||||||
self.editOEGD_txtCity.text = nil
|
|
||||||
self.editOEGD_txtTelefon.text = nil
|
|
||||||
//self.editPopup_Checkbox.setChecked(flag: false)
|
|
||||||
}
|
|
||||||
|
|
||||||
private func OpenConfirmDialog()
|
|
||||||
{
|
|
||||||
let confirmText = Core.Lang.Get(key: "MSG_SURE_WANT_DELETE").replacingOccurrences(of: "[ITEM]", with: (self.CurrentOEGDFile?.OEGD.first_name ?? "") + " " + (self.CurrentOEGDFile?.OEGD.last_name ?? ""))
|
|
||||||
self.optionsOEGD_DeleteTitle.text = confirmText
|
|
||||||
|
|
||||||
self.optionsPopup_ConfirmDelete.isHidden = false
|
|
||||||
self.optionsPopup_ButtonsContent.isHidden = true
|
|
||||||
}
|
|
||||||
|
|
||||||
private func CancelConfirmDialog()
|
|
||||||
{
|
|
||||||
self.optionsPopup_ConfirmDelete.isHidden = true
|
|
||||||
self.optionsPopup_ButtonsContent.isHidden = false
|
|
||||||
}
|
|
||||||
|
|
||||||
private func DeleteCurrentOEGD()
|
|
||||||
{
|
|
||||||
if(self.CurrentOEGDFile != nil)
|
|
||||||
{
|
|
||||||
|
|
||||||
let fileName = self.CurrentOEGDFile?.filename
|
|
||||||
let filePath = Core.System.GetPathForStorageFile(filename: fileName!)
|
|
||||||
|
|
||||||
if(filePath != nil)
|
|
||||||
{
|
|
||||||
Core.System.DeleteFile(atPath: filePath!)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc func didTapCheckbox()
|
|
||||||
{
|
|
||||||
self.editPopup_Checkbox.toogle()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
func SetLabels()
|
|
||||||
{
|
|
||||||
self.LBL_TITLE.text = Core.Lang.Get(key: "LBL_OEGD")
|
|
||||||
self.LBL_NO_OEGD.text = Core.Lang.Get(key: "LBL_NO_OEGD")
|
|
||||||
//self.LBL_BACK.text = Core.Lang.Get(key: "BTN_BACK")
|
|
||||||
|
|
||||||
self.editOEGD_txtTitle.placeholder = Core.Lang.Get(key: "LBL_TITLE")
|
|
||||||
self.editOEGD_txtFirstname.placeholder = Core.Lang.Get(key: "LBL_FIRSTNAME")
|
|
||||||
self.editOEGD_txtLastname.placeholder = Core.Lang.Get(key: "LBL_LASTNAME")
|
|
||||||
self.editOEGD_txtAddLastname.placeholder = Core.Lang.Get(key: "LBL_ADDITION_NAME")
|
|
||||||
self.editOEGD_txtPrefix.placeholder = Core.Lang.Get(key: "LBL_NAME_PREFIX")
|
|
||||||
self.editOEGD_txtGender.placeholder = Core.Lang.Get(key: "LBL_GENDER")
|
|
||||||
self.editOEGD_txtBirthday.placeholder = Core.Lang.Get(key: "LBL_BIRTHDAY")
|
|
||||||
self.editOEGD_txtStreet.placeholder = Core.Lang.Get(key: "LBL_STREET")
|
|
||||||
self.editOEGD_txtZip.placeholder = Core.Lang.Get(key: "LBL_ZIP")
|
|
||||||
self.editOEGD_txtCity.placeholder = Core.Lang.Get(key: "LBL_CITY")
|
|
||||||
self.editOEGD_txtTelefon.placeholder = Core.Lang.Get(key: "LBL_TELEFON")
|
|
||||||
self.editOEGD_CWAPolicyBtn.setTitle(Core.Lang.Get(key: "BTN_ACCEPT_CWA_POLICY"), for: .normal)
|
|
||||||
self.editOEGD_Status.text = ""
|
|
||||||
self.editOEGD_CreateBtn.setTitle(Core.Lang.Get(key: "BTN_REGISTER"), for: .normal)
|
|
||||||
|
|
||||||
self.LBL_POLICY_TITLE.text = Core.Lang.Get(key: "LBL_CWA_POLICY")
|
|
||||||
self.policyPopup_PolicyText.text = Core.Lang.Get(key: "CWA_POLICY_TEXT")
|
|
||||||
self.policyPopup_btnAcceptPolicy.setTitle(Core.Lang.Get(key: "BTN_ACCEPT_CWA_POLICY"), for: .normal)
|
|
||||||
|
|
||||||
self.optionsOEGD_AddBtn.setTitle(Core.Lang.Get(key: "BTN_REGISTER"), for: .normal)
|
|
||||||
self.optionsOEGD_EditBtn.setTitle(Core.Lang.Get(key: "BTN_EDIT"), for: .normal)
|
|
||||||
self.optionsOEGD_DeleteBtn.setTitle(Core.Lang.Get(key: "BTN_DELETE"), for: .normal)
|
|
||||||
self.optionsOEGD_CancelBtn.setTitle(Core.Lang.Get(key: "BTN_CANCEL"), for: .normal)
|
|
||||||
self.optionsOEGD_DeleteYesBtn.setTitle(Core.Lang.Get(key: "BTN_YES"), for: .normal)
|
|
||||||
self.optionsOEGD_DeleteNoBtn.setTitle(Core.Lang.Get(key: "BTN_NO"), for: .normal)
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func createDatePicker()
|
|
||||||
{
|
|
||||||
self.editOEGD_dtBirthday.locale = Locale(identifier: Core.Lang.GetLocale())
|
|
||||||
self.editOEGD_dtBirthday.calendar.locale = Locale(identifier: Core.Lang.GetLocale())
|
|
||||||
self.editOEGD_dtBirthday.datePickerMode = .date
|
|
||||||
self.editOEGD_dtBirthday.preferredDatePickerStyle = .wheels
|
|
||||||
self.editOEGD_dtBirthday.maximumDate = Date()
|
|
||||||
|
|
||||||
let toolbar = UIToolbar()
|
|
||||||
let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace,
|
|
||||||
target: nil, action: nil)
|
|
||||||
|
|
||||||
let btnDone = UIBarButtonItem(title: Core.Lang.Get(key: "BTN_DONE"), style: .done, target: nil, action: #selector(editOEGD_dtBirthdayDone))
|
|
||||||
|
|
||||||
toolbar.sizeToFit()
|
|
||||||
toolbar.setItems([ flexSpace, btnDone ], animated: true)
|
|
||||||
|
|
||||||
self.editOEGD_txtBirthday.inputAccessoryView = toolbar
|
|
||||||
self.editOEGD_txtBirthday.inputView = self.editOEGD_dtBirthday
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc func editOEGD_dtBirthdayDone()
|
|
||||||
{
|
|
||||||
let dateFormatter = DateFormatter()
|
|
||||||
dateFormatter.dateFormat = "dd.MM.yyyy"
|
|
||||||
let dt = dateFormatter.string(from: self.editOEGD_dtBirthday.date)
|
|
||||||
|
|
||||||
self.editOEGD_txtBirthday.text = dt
|
|
||||||
self.editOEGD_txtBirthday.becomeFirstResponder()
|
|
||||||
|
|
||||||
self.view.endEditing(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func goBack(_ sender: Any)
|
|
||||||
{
|
|
||||||
self.view.endEditing(true)
|
|
||||||
self.dismiss(animated: true, completion: nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func mainOEGD_MenuBtn_Click(_ sender: Any)
|
|
||||||
{
|
|
||||||
self.ShowOEGDOptions()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func ShowOEGDOptions()
|
|
||||||
{
|
|
||||||
self.scrollView.isHidden = true
|
|
||||||
self.pageControl.isHidden = true
|
|
||||||
|
|
||||||
self.optionsPopup_Overlay.frame.origin = CGPoint(x: -self.optionsPopup_Overlay.frame.width, y: self.optionsPopup_Overlay.frame.origin.y)
|
|
||||||
self.optionsPopup_Overlay.isHidden = false
|
|
||||||
|
|
||||||
UIView.animate(withDuration: 0.24, animations: {
|
|
||||||
self.optionsPopup_Overlay.frame.origin = CGPoint(x: 0, y: self.optionsPopup_Overlay.frame.origin.y)
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func optionsOEGD_CancelBtn_Click(_ sender: Any)
|
|
||||||
{
|
|
||||||
self.InitializeScrollView()
|
|
||||||
self.HideOEGDOptions()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func HideOEGDOptions()
|
|
||||||
{
|
|
||||||
UIView.animate(withDuration: 0.24, animations: {
|
|
||||||
self.optionsPopup_Overlay.frame.origin = CGPoint(x: -self.optionsPopup_Overlay.frame.width, y: self.optionsPopup_Overlay.frame.origin.y)
|
|
||||||
}) {_ in
|
|
||||||
self.optionsPopup_Overlay.isHidden = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func optionsOEGD_EditBtn_Click(_ sender: Any)
|
|
||||||
{
|
|
||||||
self.PrepareEditOEGD()
|
|
||||||
self.ShowOEGDEdit()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@IBAction func optionsOEGD_AddBtn_Click(_ sender: Any)
|
|
||||||
{
|
|
||||||
self.PrepareNewOEGD()
|
|
||||||
self.ShowOEGDEdit()
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func optionsOEGD_ConfirmYesBtn_Click(_ sender: Any)
|
|
||||||
{
|
|
||||||
self.DeleteCurrentOEGD()
|
|
||||||
self.CancelConfirmDialog()
|
|
||||||
self.InitializeScrollView()
|
|
||||||
self.HideOEGDOptions()
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func optionsOEGD_ConfirmNoBtn_Click(_ sender: Any)
|
|
||||||
{
|
|
||||||
self.CancelConfirmDialog()
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func optionsOEGD_DeleteBtn_Click(_ sender: Any)
|
|
||||||
{
|
|
||||||
self.OpenConfirmDialog()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private func ShowOEGDEdit()
|
|
||||||
{
|
|
||||||
self.editPopup_Overlay.frame.origin = CGPoint(x: -self.optionsPopup_Overlay.frame.width, y: self.editPopup_Overlay.frame.origin.y)
|
|
||||||
self.editPopup_Overlay.isHidden = false
|
|
||||||
|
|
||||||
UIView.animate(withDuration: 0.24, animations: {
|
|
||||||
self.editPopup_Overlay.frame.origin = CGPoint(x: 0, y: self.optionsPopup_Overlay.frame.origin.y)
|
|
||||||
self.optionsPopup_Overlay.frame.origin = CGPoint(x: self.optionsPopup_Overlay.frame.width, y: self.optionsPopup_Overlay.frame.origin.y)
|
|
||||||
}) {_ in
|
|
||||||
self.optionsPopup_Overlay.isHidden = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private func NewOEGDCreate(filename: String?) -> Bool
|
|
||||||
{
|
|
||||||
let firstName = editOEGD_txtFirstname.text ?? ""
|
|
||||||
let lastName = editOEGD_txtLastname.text ?? ""
|
|
||||||
let gender = editOEGD_txtGender.text ?? ""
|
|
||||||
let birthday = editOEGD_txtBirthday.text ?? ""
|
|
||||||
let street = editOEGD_txtStreet.text ?? ""
|
|
||||||
let zip = editOEGD_txtZip.text ?? ""
|
|
||||||
let city = editOEGD_txtCity.text ?? ""
|
|
||||||
|
|
||||||
editOEGD_Status.text = ""
|
|
||||||
|
|
||||||
if(firstName.count==0)
|
|
||||||
{
|
|
||||||
editOEGD_Status.text = Core.Lang.Get(key: "ERROR_ENTER_FIRSTNAME")
|
|
||||||
}
|
|
||||||
else if(lastName.count == 0)
|
|
||||||
{
|
|
||||||
editOEGD_Status.text = Core.Lang.Get(key: "ERROR_ENTER_LASTNAME")
|
|
||||||
}
|
|
||||||
else if(birthday.count == 0)
|
|
||||||
{
|
|
||||||
editOEGD_Status.text = Core.Lang.Get(key: "ERROR_ENTER_BIRTHDAY")
|
|
||||||
}
|
|
||||||
else if(gender.count == 0)
|
|
||||||
{
|
|
||||||
editOEGD_Status.text = Core.Lang.Get(key: "ERROR_ENTER_GENDER")
|
|
||||||
}
|
|
||||||
else if(street.count == 0)
|
|
||||||
{
|
|
||||||
editOEGD_Status.text = Core.Lang.Get(key: "ERROR_ENTER_STREET")
|
|
||||||
}
|
|
||||||
else if(zip.count == 0)
|
|
||||||
{
|
|
||||||
editOEGD_Status.text = Core.Lang.Get(key: "ERROR_ENTER_ZIP")
|
|
||||||
}
|
|
||||||
else if(city.count == 0)
|
|
||||||
{
|
|
||||||
editOEGD_Status.text = Core.Lang.Get(key: "ERROR_ENTER_CITY")
|
|
||||||
}
|
|
||||||
else if(!editPopup_Checkbox.IsChecked())
|
|
||||||
{
|
|
||||||
editOEGD_Status.text = Core.Lang.Get(key: "ERROR_ERROR_ACCEPT_CWA_POLICY")
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
let oegd = Core.Models.OEGD()
|
|
||||||
oegd.first_name = firstName
|
|
||||||
oegd.last_name = lastName
|
|
||||||
oegd.gender = gender
|
|
||||||
|
|
||||||
oegd.title = (editOEGD_txtTitle.text ?? "")
|
|
||||||
oegd.name_addition = (editOEGD_txtAddLastname.text ?? "")
|
|
||||||
oegd.prefix = (editOEGD_txtPrefix.text ?? "")
|
|
||||||
|
|
||||||
let dateFormatter = DateFormatter()
|
|
||||||
dateFormatter.dateFormat = "yyyy-MM-dd"
|
|
||||||
oegd.birthdate = dateFormatter.string(from: self.editOEGD_dtBirthday.date)
|
|
||||||
|
|
||||||
if(gender.elementsEqual(Core.Lang.Get(key: "LBL_GENDER_M")))
|
|
||||||
{
|
|
||||||
oegd.gender = "M";
|
|
||||||
}
|
|
||||||
else if(gender.elementsEqual(Core.Lang.Get(key: "LBL_GENDER_W")))
|
|
||||||
{
|
|
||||||
oegd.gender = "W";
|
|
||||||
}
|
|
||||||
else if(gender.elementsEqual(Core.Lang.Get(key: "LBL_GENDER_D")))
|
|
||||||
{
|
|
||||||
oegd.gender = "D";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
oegd.gender = "X";
|
|
||||||
}
|
|
||||||
|
|
||||||
oegd.address.zip_code = zip
|
|
||||||
oegd.address.city = city
|
|
||||||
oegd.address.street_number = street
|
|
||||||
oegd.address.country_code = "D"
|
|
||||||
|
|
||||||
oegd.cwa_consent_flag = true
|
|
||||||
|
|
||||||
oegd.phone = (editOEGD_txtTelefon.text ?? "")
|
|
||||||
|
|
||||||
let jsonEncoder = JSONEncoder()
|
|
||||||
var jsonData: Data?
|
|
||||||
do{
|
|
||||||
jsonData = try jsonEncoder.encode(oegd)
|
|
||||||
}
|
|
||||||
catch let err
|
|
||||||
{
|
|
||||||
Core.Log.Error(err: err, namespace: "OEGDController", method: "NewOEGDCreate")
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let json = String(data: jsonData!, encoding: .utf8)
|
|
||||||
if(json != nil)
|
|
||||||
{
|
|
||||||
let password = Core.Security.AES.GetKey(password: AppDelegate.Session.DevicePassword)
|
|
||||||
let encryptedContent = Core.Security.AES.Encrypt(value: (json ?? ""), password: String(decoding: password, as: UTF8.self)) ?? ""
|
|
||||||
|
|
||||||
if (encryptedContent.count>0)
|
|
||||||
{
|
|
||||||
var fileName2Store: String
|
|
||||||
if (filename == nil)
|
|
||||||
{
|
|
||||||
let formatter = DateFormatter()
|
|
||||||
formatter.dateFormat = "yyyyMMdd_HH_mm_ss"
|
|
||||||
fileName2Store = formatter.string(from: Date()) + NSUUID().uuidString.replacingOccurrences(of: "-", with: "") + ".oegd"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fileName2Store = filename!
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Core.System.WriteToStorage(filename: fileName2Store, data: encryptedContent.data(using: .utf8)!))
|
|
||||||
{
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
editOEGD_Status.text = Core.Lang.Get(key: "ERROR_COULD_NOT_SAVE_OEGD")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
editOEGD_Status.text = Core.Lang.Get(key: "ERROR_COULD_NOT_SAVE_OEGD")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private func LoadOEGDs()
|
|
||||||
{
|
|
||||||
self.OEGDFiles = []
|
|
||||||
let oegdfiles = Core.System.GetOEGDFiles()
|
|
||||||
if(oegdfiles.count>0)
|
|
||||||
{
|
|
||||||
for oneFile in oegdfiles
|
|
||||||
{
|
|
||||||
let encrypted_content = Core.System.ReadFromStorage(filename: oneFile)
|
|
||||||
if (encrypted_content != nil)
|
|
||||||
{
|
|
||||||
let pwd = Core.Security.AES.GetKey(password: AppDelegate.Session.DevicePassword)
|
|
||||||
let json = Core.Security.AES.Decrypt(value: String(decoding: encrypted_content!, as: UTF8.self), password: String(decoding: pwd, as: UTF8.self ))
|
|
||||||
if(json != nil)
|
|
||||||
{
|
|
||||||
let jsonDecoder = JSONDecoder()
|
|
||||||
do
|
|
||||||
{
|
|
||||||
let obj = try jsonDecoder.decode(Core.Models.OEGD.self, from: (json?.data(using: .utf8))!)
|
|
||||||
|
|
||||||
let oegdFile = Core.Models.OEGDFile(OEGD: obj, filename: oneFile)
|
|
||||||
self.OEGDFiles.append(oegdFile)
|
|
||||||
|
|
||||||
}
|
|
||||||
catch let err
|
|
||||||
{
|
|
||||||
Core.Log.Error(err: err, namespace: "OEGDController", method: "LoadOEGDs")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func editOEGD_SaveBtn_Click(_ sender: Any)
|
|
||||||
{
|
|
||||||
var filename: String? = nil
|
|
||||||
if (self.currentMode == OEGDEditType.Edit)
|
|
||||||
{
|
|
||||||
filename = self.CurrentOEGDFile?.filename
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NewOEGDCreate(filename: filename))
|
|
||||||
{
|
|
||||||
self.HideOEGDEdit()
|
|
||||||
self.HideOEGDOptions()
|
|
||||||
self.InitializeScrollView()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func editOEGD_BackBtn_Click(_ sender: Any)
|
|
||||||
{
|
|
||||||
self.HideOEGDEdit()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private func HideOEGDEdit()
|
|
||||||
{
|
|
||||||
self.optionsPopup_Overlay.isHidden = false
|
|
||||||
|
|
||||||
UIView.animate(withDuration: 0.24, animations: {
|
|
||||||
self.editPopup_Overlay.frame.origin = CGPoint(x: -self.editPopup_Overlay.frame.width, y: self.optionsPopup_Overlay.frame.origin.y)
|
|
||||||
self.optionsPopup_Overlay.frame.origin = CGPoint(x: 0, y: self.optionsPopup_Overlay.frame.origin.y)
|
|
||||||
}) {_ in
|
|
||||||
self.editPopup_Overlay.isHidden = true
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func editOEGD_PolicyBtn_Click(_ sender: Any)
|
|
||||||
{
|
|
||||||
//self.ShowCWAPolicy()
|
|
||||||
//self.ShowCWAPolicyInWeb()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func ShowCWAPolicyInWeb()
|
|
||||||
{
|
|
||||||
guard let url = URL(string: CWAPolicyLink) else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
let vc = WebViewController(url: url, title: Core.Lang.Get(key: "BTN_ACCEPT_CWA_POLICY"), localUrl: url)
|
|
||||||
vc.parentView = self
|
|
||||||
let navVC = UINavigationController(rootViewController: vc)
|
|
||||||
present(navVC, animated: true)
|
|
||||||
}
|
|
||||||
|
|
||||||
private func ShowCWAPolicy()
|
|
||||||
{
|
|
||||||
self.policyPopup_Overlay.frame.origin = CGPoint(x: -self.policyPopup_Overlay.frame.width, y: self.editPopup_Overlay.frame.origin.y)
|
|
||||||
self.policyPopup_Overlay.isHidden = false
|
|
||||||
|
|
||||||
UIView.animate(withDuration: 0.24, animations: {
|
|
||||||
self.policyPopup_Overlay.frame.origin = CGPoint(x: 0, y: self.policyPopup_Overlay.frame.origin.y)
|
|
||||||
self.editPopup_Overlay.frame.origin = CGPoint(x: self.editPopup_Overlay.frame.width, y: self.editPopup_Overlay.frame.origin.y)
|
|
||||||
}) {_ in
|
|
||||||
self.editPopup_Overlay.isHidden = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func policyPopup_AcceptBtn_Click(_ sender: Any)
|
|
||||||
{
|
|
||||||
self.HideCWAPolicy()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func HideCWAPolicy()
|
|
||||||
{
|
|
||||||
self.editPopup_Checkbox.setChecked(flag: true)
|
|
||||||
|
|
||||||
self.editPopup_Overlay.isHidden = false
|
|
||||||
|
|
||||||
UIView.animate(withDuration: 0.24, animations: {
|
|
||||||
self.policyPopup_Overlay.frame.origin = CGPoint(x: -self.editPopup_Overlay.frame.width, y: self.policyPopup_Overlay.frame.origin.y)
|
|
||||||
self.editPopup_Overlay.frame.origin = CGPoint(x: 0, y: self.editPopup_Overlay.frame.origin.y)
|
|
||||||
}) {_ in
|
|
||||||
self.policyPopup_Overlay.isHidden = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -15,7 +15,6 @@ class PDFViewController: UIViewController, PDFViewDelegate
|
||||||
private var PDFViewer: PDFView!
|
private var PDFViewer: PDFView!
|
||||||
private var PDFData: Data? = nil
|
private var PDFData: Data? = nil
|
||||||
private var currentPdfDoc: PDFDocument? = nil
|
private var currentPdfDoc: PDFDocument? = nil
|
||||||
//@IBOutlet weak var LBL_BACK: UILabel!
|
|
||||||
|
|
||||||
@IBOutlet weak var mainBtnBack: UIButton!
|
@IBOutlet weak var mainBtnBack: UIButton!
|
||||||
@IBOutlet weak var mainBtnMenu: UIButton!
|
@IBOutlet weak var mainBtnMenu: UIButton!
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
//
|
//
|
||||||
// EditOEGDController.swift
|
// SettingsController.swift
|
||||||
// Befund
|
// Befund
|
||||||
//
|
//
|
||||||
// Created by Artur Savitskiy on 21.07.22.
|
// Created by Artur Savitskiy on 21.07.22.
|
||||||
|
@ -16,15 +16,13 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
{
|
{
|
||||||
case Setting
|
case Setting
|
||||||
case ChangePWD
|
case ChangePWD
|
||||||
case OEGD
|
|
||||||
case Support
|
case Support
|
||||||
case FAQ
|
case FAQ
|
||||||
case AGB
|
case AGB
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static var CurrentViewController: SettingsController? = nil
|
private var Settings: Core.Models.Settings? = nil
|
||||||
public static var Settings: Core.Models.Settings? = nil
|
|
||||||
|
|
||||||
@IBOutlet weak var settingsContent: UIView!
|
@IBOutlet weak var settingsContent: UIView!
|
||||||
|
|
||||||
|
@ -35,7 +33,6 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
//@IBOutlet weak var menuContent_labelBack: UILabel!
|
//@IBOutlet weak var menuContent_labelBack: UILabel!
|
||||||
@IBOutlet weak var menuContent_btnSettings: UIButton!
|
@IBOutlet weak var menuContent_btnSettings: UIButton!
|
||||||
@IBOutlet weak var menuContent_btnChangePassword: UIButton!
|
@IBOutlet weak var menuContent_btnChangePassword: UIButton!
|
||||||
//@IBOutlet weak var menuContent_btnOEGD: UIButton!
|
|
||||||
@IBOutlet weak var menuContent_btnSupport: UIButton!
|
@IBOutlet weak var menuContent_btnSupport: UIButton!
|
||||||
@IBOutlet weak var menuContent_btnFAQ: UIButton!
|
@IBOutlet weak var menuContent_btnFAQ: UIButton!
|
||||||
@IBOutlet weak var menuContent_btnAGB: UIButton!
|
@IBOutlet weak var menuContent_btnAGB: UIButton!
|
||||||
|
@ -45,7 +42,6 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
@IBOutlet weak var PopupSettings: UIView!
|
@IBOutlet weak var PopupSettings: UIView!
|
||||||
@IBOutlet weak var menuSettingsView: UIView!
|
@IBOutlet weak var menuSettingsView: UIView!
|
||||||
@IBOutlet weak var menuChangePWDView: UIView!
|
@IBOutlet weak var menuChangePWDView: UIView!
|
||||||
//@IBOutlet weak var menuOEGDView: UIView!
|
|
||||||
@IBOutlet weak var menuSupportView: UIView!
|
@IBOutlet weak var menuSupportView: UIView!
|
||||||
@IBOutlet weak var menuFAQView: UIView!
|
@IBOutlet weak var menuFAQView: UIView!
|
||||||
@IBOutlet weak var menuAGBView: UIView!
|
@IBOutlet weak var menuAGBView: UIView!
|
||||||
|
@ -111,8 +107,7 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
*/
|
*/
|
||||||
private func Initialize()
|
private func Initialize()
|
||||||
{
|
{
|
||||||
SettingsController.CurrentViewController = self
|
Settings = Core.Models.Settings.loadFromFile(atPath: Core.System.SettingsPath())
|
||||||
SettingsController.Settings = Core.Models.Settings.loadFromFile(atPath: Core.System.SettingsPath())
|
|
||||||
|
|
||||||
self.PopupSettings_Overlay.frame = self.view.frame
|
self.PopupSettings_Overlay.frame = self.view.frame
|
||||||
self.view.addSubview(self.PopupSettings_Overlay)
|
self.view.addSubview(self.PopupSettings_Overlay)
|
||||||
|
@ -125,7 +120,7 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
self.popupSettings_btnDE.tag = 0
|
self.popupSettings_btnDE.tag = 0
|
||||||
self.popupSettings_btnEN.tag = 1
|
self.popupSettings_btnEN.tag = 1
|
||||||
|
|
||||||
self.MarkSelectedLanguage(lang: SettingsController.Settings?.lang)
|
self.MarkSelectedLanguage(lang: Settings?.lang)
|
||||||
|
|
||||||
self.popupChangePWD_txtOldPassword.delegate = self
|
self.popupChangePWD_txtOldPassword.delegate = self
|
||||||
self.popupChangePWD_txtOldPassword.returnKeyType = .next
|
self.popupChangePWD_txtOldPassword.returnKeyType = .next
|
||||||
|
@ -198,14 +193,12 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
self.LBL_REGISTER.isHidden = !pwdIsNotDefined
|
self.LBL_REGISTER.isHidden = !pwdIsNotDefined
|
||||||
self.menuSettingsView.isHidden = pwdIsNotDefined
|
self.menuSettingsView.isHidden = pwdIsNotDefined
|
||||||
self.menuChangePWDView.isHidden = pwdIsNotDefined
|
self.menuChangePWDView.isHidden = pwdIsNotDefined
|
||||||
//self.menuOEGDView.isHidden = pwdIsNotDefined
|
|
||||||
|
|
||||||
let fullHeight = self.settingsContent.frame.size.height
|
let fullHeight = self.settingsContent.frame.size.height
|
||||||
var showHeight = self.LBL_TITLE.frame.size.height
|
var showHeight = self.LBL_TITLE.frame.size.height
|
||||||
showHeight += (pwdIsNotDefined ? self.LBL_REGISTER.frame.size.height : 0)
|
showHeight += (pwdIsNotDefined ? self.LBL_REGISTER.frame.size.height : 0)
|
||||||
showHeight += (!pwdIsNotDefined ? self.menuSettingsView.frame.size.height : 0)
|
showHeight += (!pwdIsNotDefined ? self.menuSettingsView.frame.size.height : 0)
|
||||||
showHeight += (!pwdIsNotDefined ? self.menuChangePWDView.frame.size.height : 0)
|
showHeight += (!pwdIsNotDefined ? self.menuChangePWDView.frame.size.height : 0)
|
||||||
//showHeight += (!pwdIsNotDefined ? self.menuOEGDView.frame.size.height : 0)
|
|
||||||
showHeight += self.menuSupportView.frame.size.height
|
showHeight += self.menuSupportView.frame.size.height
|
||||||
showHeight += self.menuFAQView.frame.size.height
|
showHeight += self.menuFAQView.frame.size.height
|
||||||
showHeight += self.menuAGBView.frame.size.height
|
showHeight += self.menuAGBView.frame.size.height
|
||||||
|
@ -234,10 +227,6 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
self.menuChangePWDView.frame = vFrame
|
self.menuChangePWDView.frame = vFrame
|
||||||
begY += self.menuChangePWDView.frame.size.height
|
begY += self.menuChangePWDView.frame.size.height
|
||||||
|
|
||||||
//vFrame = self.menuOEGDView.frame
|
|
||||||
//vFrame.origin.y = begY
|
|
||||||
//self.menuOEGDView.frame = vFrame
|
|
||||||
//begY += self.menuOEGDView.frame.size.height
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vFrame = self.menuSupportView.frame
|
vFrame = self.menuSupportView.frame
|
||||||
|
@ -283,9 +272,6 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
self.menuContent_btnChangePassword.setTitle(Core.Lang.Get(key: "BTN_CHANGE_PASSWORD"), for: .normal)
|
self.menuContent_btnChangePassword.setTitle(Core.Lang.Get(key: "BTN_CHANGE_PASSWORD"), for: .normal)
|
||||||
self.menuContent_btnChangePassword.tag = PopupType.ChangePWD.rawValue
|
self.menuContent_btnChangePassword.tag = PopupType.ChangePWD.rawValue
|
||||||
|
|
||||||
//self.menuContent_btnOEGD.setTitle(Core.Lang.Get(key: "BTN_OEGD"), for: .normal)
|
|
||||||
//self.menuContent_btnOEGD.tag = PopupType.OEGD.rawValue
|
|
||||||
|
|
||||||
self.menuContent_btnSupport.setTitle(Core.Lang.Get(key: "BTN_SUPPORT"), for: .normal)
|
self.menuContent_btnSupport.setTitle(Core.Lang.Get(key: "BTN_SUPPORT"), for: .normal)
|
||||||
self.menuContent_btnSupport.tag = PopupType.Support.rawValue
|
self.menuContent_btnSupport.tag = PopupType.Support.rawValue
|
||||||
|
|
||||||
|
@ -322,15 +308,15 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
|
|
||||||
self.popupSettings_labelSettings.text = Core.Lang.Get(key: "LBL_YOUR_LABOR")
|
self.popupSettings_labelSettings.text = Core.Lang.Get(key: "LBL_YOUR_LABOR")
|
||||||
self.popupSettings_labelYourLabor.text = ""
|
self.popupSettings_labelYourLabor.text = ""
|
||||||
if(SettingsController.Settings?.labor != nil)
|
if(Settings?.labor != nil)
|
||||||
{
|
{
|
||||||
self.popupSettings_labelName.text = SettingsController.Settings?.labor?.name
|
self.popupSettings_labelName.text = Settings?.labor?.name
|
||||||
self.popupSettings_labelStreet.text = SettingsController.Settings?.labor?.street
|
self.popupSettings_labelStreet.text = Settings?.labor?.street
|
||||||
self.popupSettings_labelCity.text = SettingsController.Settings?.labor?.city
|
self.popupSettings_labelCity.text = Settings?.labor?.city
|
||||||
self.popupSettings_labelTel.text = SettingsController.Settings?.labor?.tel
|
self.popupSettings_labelTel.text = Settings?.labor?.tel
|
||||||
self.popupSettings_labelWeb.text = SettingsController.Settings?.labor?.web
|
self.popupSettings_labelWeb.text = Settings?.labor?.web
|
||||||
|
|
||||||
self.popupSettings_laborLogo.image = SettingsController.Settings?.labor?.logo
|
self.popupSettings_laborLogo.image = Settings?.labor?.logo
|
||||||
|
|
||||||
if(AppDelegate.Session.Maintenance)
|
if(AppDelegate.Session.Maintenance)
|
||||||
{
|
{
|
||||||
|
@ -391,7 +377,7 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
private func CheckHostLabor()
|
private func CheckHostLabor()
|
||||||
{
|
{
|
||||||
let requestKeyPair = Core.Security.Curve25519.GenerateKeyPair()
|
let requestKeyPair = Core.Security.Curve25519.GenerateKeyPair()
|
||||||
let currentHost = (SettingsController.Settings!.labor?.host)
|
let currentHost = (Settings?.labor?.host)
|
||||||
|
|
||||||
Core.Https.Request.KeyExchangeAsync(host: currentHost!, keyPair: requestKeyPair,
|
Core.Https.Request.KeyExchangeAsync(host: currentHost!, keyPair: requestKeyPair,
|
||||||
onSuccess: {
|
onSuccess: {
|
||||||
|
@ -436,20 +422,6 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
self.present(settingsSupportController, animated: false)
|
self.present(settingsSupportController, animated: false)
|
||||||
}
|
}
|
||||||
|
|
||||||
@IBAction func ButtonOEGDOpenClick(_ sender: Any)
|
|
||||||
{
|
|
||||||
let storyboard = UIStoryboard(name: "Main", bundle: nil)
|
|
||||||
let settingsOEGDController = storyboard.instantiateViewController(identifier: "OEGDController")
|
|
||||||
|
|
||||||
settingsOEGDController.modalPresentationStyle = .fullScreen
|
|
||||||
let transition = CATransition()
|
|
||||||
transition.duration = 0.25
|
|
||||||
transition.type = .push
|
|
||||||
transition.subtype = .fromRight
|
|
||||||
self.view.window!.layer.add(transition, forKey: kCATransition)
|
|
||||||
self.present(settingsOEGDController, animated: false)
|
|
||||||
}
|
|
||||||
|
|
||||||
@IBAction func ButtonAGBOpenClick(_ sender: Any)
|
@IBAction func ButtonAGBOpenClick(_ sender: Any)
|
||||||
{
|
{
|
||||||
let localUrl = Core.Lang.Get(key: "AGB_POLICY_LINK")
|
let localUrl = Core.Lang.Get(key: "AGB_POLICY_LINK")
|
||||||
|
@ -484,8 +456,6 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
popupOverlay = self.PopupChangePWD_Overlay
|
popupOverlay = self.PopupChangePWD_Overlay
|
||||||
popup = self.PopupChangePWD
|
popup = self.PopupChangePWD
|
||||||
break
|
break
|
||||||
case .OEGD:
|
|
||||||
break
|
|
||||||
case .Support:
|
case .Support:
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
|
@ -527,8 +497,6 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
popupOverlay = self.PopupChangePWD_Overlay
|
popupOverlay = self.PopupChangePWD_Overlay
|
||||||
popup = self.PopupChangePWD
|
popup = self.PopupChangePWD
|
||||||
break
|
break
|
||||||
case .OEGD:
|
|
||||||
break
|
|
||||||
case .Support:
|
case .Support:
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
|
@ -554,15 +522,15 @@ class SettingsController: UIViewController, UITextFieldDelegate, UpdatingParentC
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
Core.Lang.SetLanguage(lang: Core.Lang.Languages.EN)
|
Core.Lang.SetLanguage(lang: Core.Lang.Languages.EN)
|
||||||
SettingsController.Settings?.lang = Core.Lang.Languages.EN
|
Settings?.lang = Core.Lang.Languages.EN
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
Core.Lang.SetLanguage(lang: Core.Lang.Languages.DE)
|
Core.Lang.SetLanguage(lang: Core.Lang.Languages.DE)
|
||||||
SettingsController.Settings?.lang = Core.Lang.Languages.DE
|
Settings?.lang = Core.Lang.Languages.DE
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
self.MarkSelectedLanguage(lang: SettingsController.Settings?.lang)
|
self.MarkSelectedLanguage(lang: Settings?.lang)
|
||||||
SettingsController.Settings?.save(atPath: Core.System.SettingsPath())
|
Settings?.save(atPath: Core.System.SettingsPath())
|
||||||
self.InitLabels()
|
self.InitLabels()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,7 @@ import UIKit
|
||||||
|
|
||||||
class SupportController: UIViewController, UITextFieldDelegate, UIAlertViewDelegate, UITextViewDelegate
|
class SupportController: UIViewController, UITextFieldDelegate, UIAlertViewDelegate, UITextViewDelegate
|
||||||
{
|
{
|
||||||
public static var CurrentViewController: SupportController? = nil
|
private var Settings: Core.Models.Settings? = nil
|
||||||
public static var Settings: Core.Models.Settings? = nil
|
|
||||||
|
|
||||||
private var SupportTopicsRegistered: NSMutableArray =
|
private var SupportTopicsRegistered: NSMutableArray =
|
||||||
[ Core.Lang.Get(key: "LBL_SUPPORT_TOPIC_INFO")
|
[ Core.Lang.Get(key: "LBL_SUPPORT_TOPIC_INFO")
|
||||||
|
@ -64,7 +63,7 @@ class SupportController: UIViewController, UITextFieldDelegate, UIAlertViewDeleg
|
||||||
|
|
||||||
private func Initialize()
|
private func Initialize()
|
||||||
{
|
{
|
||||||
SupportController.Settings = Core.Models.Settings.loadFromFile(atPath: Core.System.SettingsPath())
|
Settings = Core.Models.Settings.loadFromFile(atPath: Core.System.SettingsPath())
|
||||||
|
|
||||||
self.support_Loading.isHidden = true
|
self.support_Loading.isHidden = true
|
||||||
self.support_Status.text = ""
|
self.support_Status.text = ""
|
||||||
|
@ -81,7 +80,7 @@ class SupportController: UIViewController, UITextFieldDelegate, UIAlertViewDeleg
|
||||||
self.supportPassword_txtPassword.delegate = self
|
self.supportPassword_txtPassword.delegate = self
|
||||||
self.supportPassword_txtPassword.enablePasswordToggle()
|
self.supportPassword_txtPassword.enablePasswordToggle()
|
||||||
|
|
||||||
if(SupportController.Settings?.verificator_hash != nil && AppDelegate.Session.DevicePassword != nil)
|
if(Settings?.verificator_hash != nil && AppDelegate.Session.DevicePassword != nil)
|
||||||
{
|
{
|
||||||
self.topicDownPicker = DownPicker(textField: self.support_txtTopic, withData: (SupportTopicsRegistered as! [Any]))
|
self.topicDownPicker = DownPicker(textField: self.support_txtTopic, withData: (SupportTopicsRegistered as! [Any]))
|
||||||
}
|
}
|
||||||
|
@ -116,15 +115,15 @@ class SupportController: UIViewController, UITextFieldDelegate, UIAlertViewDeleg
|
||||||
self.supportPassword_btnBack.setTitle(Core.Lang.Get(key: "BTN_CANCEL"), for: .normal)
|
self.supportPassword_btnBack.setTitle(Core.Lang.Get(key: "BTN_CANCEL"), for: .normal)
|
||||||
self.supportPassword_btnOK.setTitle(Core.Lang.Get(key: "BTN_SEND"), for: .normal)
|
self.supportPassword_btnOK.setTitle(Core.Lang.Get(key: "BTN_SEND"), for: .normal)
|
||||||
|
|
||||||
if(SupportController.Settings?.labor != nil)
|
if(Settings?.labor != nil)
|
||||||
{
|
{
|
||||||
self.popupSettings_labelName.text = SupportController.Settings?.labor?.name
|
self.popupSettings_labelName.text = Settings?.labor?.name
|
||||||
self.popupSettings_labelStreet.text = SupportController.Settings?.labor?.street
|
self.popupSettings_labelStreet.text = Settings?.labor?.street
|
||||||
self.popupSettings_labelCity.text = SupportController.Settings?.labor?.city
|
self.popupSettings_labelCity.text = Settings?.labor?.city
|
||||||
self.popupSettings_labelTel.text = SupportController.Settings?.labor?.tel
|
self.popupSettings_labelTel.text = Settings?.labor?.tel
|
||||||
self.popupSettings_labelWeb.text = SupportController.Settings?.labor?.web
|
self.popupSettings_labelWeb.text = Settings?.labor?.web
|
||||||
|
|
||||||
self.popupSettings_laborLogo.image = SupportController.Settings?.labor?.logo
|
self.popupSettings_laborLogo.image = Settings?.labor?.logo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,7 +152,7 @@ class SupportController: UIViewController, UITextFieldDelegate, UIAlertViewDeleg
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let pwdDecrypted = Core.Security.AES.Decrypt(value: (SettingsController.Settings?.hashed_private_key ?? ""), password: pwd)
|
let pwdDecrypted = Core.Security.AES.Decrypt(value: (Settings?.hashed_private_key ?? ""), password: pwd)
|
||||||
|
|
||||||
if(pwdDecrypted != nil)
|
if(pwdDecrypted != nil)
|
||||||
{
|
{
|
||||||
|
@ -254,7 +253,7 @@ class SupportController: UIViewController, UITextFieldDelegate, UIAlertViewDeleg
|
||||||
support.topic = txtTopic
|
support.topic = txtTopic
|
||||||
support.text = txtMessage
|
support.text = txtMessage
|
||||||
support.udid = AppDelegate.Session.Device?.udid
|
support.udid = AppDelegate.Session.Device?.udid
|
||||||
support.verificator_hash = SupportController.Settings?.verificator_hash
|
support.verificator_hash = Settings?.verificator_hash
|
||||||
support.delete_device = deleteDevice
|
support.delete_device = deleteDevice
|
||||||
|
|
||||||
let currentHost = ViewController.Settings!.labor?.host ?? .DEVELOPMENT
|
let currentHost = ViewController.Settings!.labor?.host ?? .DEVELOPMENT
|
||||||
|
|
|
@ -911,7 +911,7 @@ class ViewController: UIViewController, UIAlertViewDelegate, UITextFieldDelegate
|
||||||
{
|
{
|
||||||
self.MainLoadingShow()
|
self.MainLoadingShow()
|
||||||
|
|
||||||
//MARK: Load from serverhttps://stackoverflow.com/questions/24190277/writing-handler-for-uialertaction
|
//MARK: Load from server https://stackoverflow.com/questions/24190277/writing-handler-for-uialertaction
|
||||||
let getOpened = Core.Models.Request.GetOpened()
|
let getOpened = Core.Models.Request.GetOpened()
|
||||||
getOpened.udid = AppDelegate.Session.Device!.udid
|
getOpened.udid = AppDelegate.Session.Device!.udid
|
||||||
getOpened.verificator_hash = ViewController.Settings!.verificator_hash
|
getOpened.verificator_hash = ViewController.Settings!.verificator_hash
|
||||||
|
@ -926,7 +926,8 @@ class ViewController: UIViewController, UIAlertViewDelegate, UITextFieldDelegate
|
||||||
let sharedKey = requestKeyPair.GetSharedKey(peerPublicKeyBase64: publicKey.key)
|
let sharedKey = requestKeyPair.GetSharedKey(peerPublicKeyBase64: publicKey.key)
|
||||||
let encryptedRequest = Core.Models.Request.EncryptedRequest(descriptor: "GetOpened", contentObject: getOpened, requestType: .REQUEST_GET_OPENED, key: sharedKey!)
|
let encryptedRequest = Core.Models.Request.EncryptedRequest(descriptor: "GetOpened", contentObject: getOpened, requestType: .REQUEST_GET_OPENED, key: sharedKey!)
|
||||||
|
|
||||||
Core.Https.Request.EncryptedRequestAsync(host: currentHost, controller: "results", action: "opened", request: encryptedRequest, serverPublicKey: publicKey, keyPair: requestKeyPair, onSuccess: {
|
Core.Https.Request.EncryptedRequestAsync(host: currentHost, controller: "results", action: "opened", request: encryptedRequest, serverPublicKey: publicKey, keyPair: requestKeyPair,
|
||||||
|
onSuccess: {
|
||||||
|
|
||||||
encryptedResponse in
|
encryptedResponse in
|
||||||
|
|
||||||
|
@ -1326,32 +1327,30 @@ class ViewController: UIViewController, UIAlertViewDelegate, UITextFieldDelegate
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self.PopupNewPGS_HideLoading(message: Core.Lang.Get(key: "ERROR_COULD_NOT_REGISTER_PGS"))
|
self.OnErrorLoading(error: Core.Lang.Get(key: "ERROR_COULD_NOT_REGISTER_PGS"),
|
||||||
Core.Log.Critical(msg: "Could not register", namespace: "ViewController", method: "requestPGS")
|
logmsg: "Could not register", method: "requestPGS")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onError: {
|
onError: self.OnErrorHandler)
|
||||||
error in
|
},
|
||||||
|
onError: self.OnErrorHandler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private func OnErrorHandler(error: String)->Void
|
||||||
|
{
|
||||||
|
self.OnErrorLoading(error: error, logmsg: "Server not reachable", method: "requestPGS")
|
||||||
|
}
|
||||||
|
private func OnErrorLoading(error: String, logmsg: String, method: String)
|
||||||
|
{
|
||||||
DispatchQueue.main.async
|
DispatchQueue.main.async
|
||||||
{
|
{
|
||||||
self.PopupNewPGS_HideLoading(message: error)
|
self.PopupNewPGS_HideLoading(message: error)
|
||||||
Core.Log.Critical(msg: "Server not reachable", namespace: "ViewController", method: "requestPGS")
|
Core.Log.Critical(msg: logmsg, namespace: "ViewController", method: method)
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
onError: {
|
|
||||||
error in
|
|
||||||
DispatchQueue.main.async
|
|
||||||
{
|
|
||||||
self.PopupNewPGS_HideLoading(message: error)
|
|
||||||
Core.Log.Critical(msg: "Server not reachable", namespace: "ViewController", method: "requestPGS")
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,11 +44,7 @@ extension Core.Lang
|
||||||
result.setValue( "Aktuelle PIN", forKey: "LBL_PIN")
|
result.setValue( "Aktuelle PIN", forKey: "LBL_PIN")
|
||||||
result.setValue( "Neue PIN", forKey: "LBL_NEW_PIN")
|
result.setValue( "Neue PIN", forKey: "LBL_NEW_PIN")
|
||||||
result.setValue( "Neues Passwort", forKey: "LBL_NEW_PASSWORD")
|
result.setValue( "Neues Passwort", forKey: "LBL_NEW_PASSWORD")
|
||||||
result.setValue( "Meine Patientendaten", forKey: "LBL_OEGD")
|
|
||||||
result.setValue( "Sie haben Ihre Patientendaten noch nicht erfasst. Wählen Sie das Menü unten aus, um Ihre persönlichen Daten zu erfassen.", forKey: "LBL_NO_OEGD")
|
|
||||||
result.setValue( "Bitte klicken Sie auf das QR-Code-Symbol, um den QR-Code zu scannen.\n\nDamit wird Ihre App automatisch mit dem passenden Labor verknüpft.", forKey: "LBL_SCAN_QR_CODE")
|
result.setValue( "Bitte klicken Sie auf das QR-Code-Symbol, um den QR-Code zu scannen.\n\nDamit wird Ihre App automatisch mit dem passenden Labor verknüpft.", forKey: "LBL_SCAN_QR_CODE")
|
||||||
result.setValue( "Neue Patientendaten", forKey: "LBL_NEW_OEGD")
|
|
||||||
result.setValue( "Patientendaten bearbeiten", forKey: "LBL_EDIT_OEGD")
|
|
||||||
result.setValue( "Titel", forKey: "LBL_TITLE")
|
result.setValue( "Titel", forKey: "LBL_TITLE")
|
||||||
result.setValue( "Vorname", forKey: "LBL_FIRSTNAME")
|
result.setValue( "Vorname", forKey: "LBL_FIRSTNAME")
|
||||||
result.setValue( "Nachname", forKey: "LBL_LASTNAME")
|
result.setValue( "Nachname", forKey: "LBL_LASTNAME")
|
||||||
|
@ -64,7 +60,6 @@ extension Core.Lang
|
||||||
result.setValue( "Unbekannt", forKey: "LBL_GENDER_X")
|
result.setValue( "Unbekannt", forKey: "LBL_GENDER_X")
|
||||||
result.setValue( "Telefon", forKey: "LBL_TELEFON")
|
result.setValue( "Telefon", forKey: "LBL_TELEFON")
|
||||||
result.setValue( "CWA Einverständniserklärung", forKey: "LBL_CWA_POLICY")
|
result.setValue( "CWA Einverständniserklärung", forKey: "LBL_CWA_POLICY")
|
||||||
result.setValue( "Patientendaten bearbeiten", forKey: "LBL_EDIT_OEGD")
|
|
||||||
result.setValue( "Sprache", forKey: "LBL_LANGUAGE")
|
result.setValue( "Sprache", forKey: "LBL_LANGUAGE")
|
||||||
result.setValue( "Aktuelles Passwort", forKey: "LBL_CURRENT_PASSWORD")
|
result.setValue( "Aktuelles Passwort", forKey: "LBL_CURRENT_PASSWORD")
|
||||||
//result.setValue( "Einstellungen", forKey: "LBL_SETTINGS")
|
//result.setValue( "Einstellungen", forKey: "LBL_SETTINGS")
|
||||||
|
@ -86,7 +81,6 @@ extension Core.Lang
|
||||||
|
|
||||||
result.setValue("Einstellungen", forKey: "BTN_SETTINGS")
|
result.setValue("Einstellungen", forKey: "BTN_SETTINGS")
|
||||||
result.setValue("Passwort ändern", forKey: "BTN_CHANGE_PASSWORD")
|
result.setValue("Passwort ändern", forKey: "BTN_CHANGE_PASSWORD")
|
||||||
//result.setValue("Patientendaten erfassen", forKey: "BTN_OEGD")
|
|
||||||
result.setValue("Support", forKey: "BTN_SUPPORT")
|
result.setValue("Support", forKey: "BTN_SUPPORT")
|
||||||
result.setValue("Schließen", forKey: "BTN_CLOSE")
|
result.setValue("Schließen", forKey: "BTN_CLOSE")
|
||||||
result.setValue("OK", forKey: "BTN_OK")
|
result.setValue("OK", forKey: "BTN_OK")
|
||||||
|
@ -160,8 +154,6 @@ extension Core.Lang
|
||||||
result.setValue( "Die von Ihnen eingegebene PIN ist nicht gültig", forKey: "ERROR_INVALID_PASSWORD_RESET_PIN")
|
result.setValue( "Die von Ihnen eingegebene PIN ist nicht gültig", forKey: "ERROR_INVALID_PASSWORD_RESET_PIN")
|
||||||
result.setValue( "PIN konnte vom Server nicht empfangen werden", forKey: "ERROR_COULD_NOT_GET_PIN")
|
result.setValue( "PIN konnte vom Server nicht empfangen werden", forKey: "ERROR_COULD_NOT_GET_PIN")
|
||||||
//result.setValue( "Das Passwort konnte nicht geändert werden", forKey: "ERROR_COULD_NOT_CHANGE_PASSWORD")
|
//result.setValue( "Das Passwort konnte nicht geändert werden", forKey: "ERROR_COULD_NOT_CHANGE_PASSWORD")
|
||||||
result.setValue( "Für einen OEGD-Schein benötigen wir Ihre Einverständniserklärung", forKey: "ERROR_ACCEPT_CWA_POLICY")
|
|
||||||
result.setValue( "OEGD konnte nicht gespeichert werden", forKey: "ERROR_COULD_NOT_SAVE_OEGD")
|
|
||||||
result.setValue( "Bitte geben Sie Ihren Vornamen ein", forKey: "ERROR_ENTER_FIRSTNAME")
|
result.setValue( "Bitte geben Sie Ihren Vornamen ein", forKey: "ERROR_ENTER_FIRSTNAME")
|
||||||
result.setValue( "Bitte geben Sie Ihren Nachnamen ein", forKey: "ERROR_ENTER_LASTNAME")
|
result.setValue( "Bitte geben Sie Ihren Nachnamen ein", forKey: "ERROR_ENTER_LASTNAME")
|
||||||
result.setValue( "Bitte geben Sie Ihr Geschlecht ein", forKey: "ERROR_ENTER_GENDER")
|
result.setValue( "Bitte geben Sie Ihr Geschlecht ein", forKey: "ERROR_ENTER_GENDER")
|
||||||
|
|
|
@ -45,10 +45,7 @@ extension Core.Lang
|
||||||
//result.setValue( "Error", forKey: "LBL_ERROR")
|
//result.setValue( "Error", forKey: "LBL_ERROR")
|
||||||
result.setValue( "PIN", forKey: "LBL_PIN")
|
result.setValue( "PIN", forKey: "LBL_PIN")
|
||||||
result.setValue( "New Password", forKey: "LBL_NEW_PASSWORD")
|
result.setValue( "New Password", forKey: "LBL_NEW_PASSWORD")
|
||||||
result.setValue( "OEGD", forKey: "LBL_OEGD")
|
|
||||||
result.setValue( "You currently have no OEGD", forKey: "LBL_NO_OEGD")
|
|
||||||
result.setValue( "Scan QR-Code", forKey: "LBL_SCAN_QR_CODE")
|
result.setValue( "Scan QR-Code", forKey: "LBL_SCAN_QR_CODE")
|
||||||
result.setValue( "New OEGD", forKey: "LBL_NEW_OEGD")
|
|
||||||
result.setValue( "Title", forKey: "LBL_TITLE")
|
result.setValue( "Title", forKey: "LBL_TITLE")
|
||||||
result.setValue( "Surname", forKey: "LBL_FIRSTNAME")
|
result.setValue( "Surname", forKey: "LBL_FIRSTNAME")
|
||||||
result.setValue( "Name", forKey: "LBL_LASTNAME")
|
result.setValue( "Name", forKey: "LBL_LASTNAME")
|
||||||
|
@ -64,7 +61,6 @@ extension Core.Lang
|
||||||
result.setValue( "Unknown", forKey: "LBL_GENDER_X")
|
result.setValue( "Unknown", forKey: "LBL_GENDER_X")
|
||||||
result.setValue( "Phone", forKey: "LBL_TELEFON")
|
result.setValue( "Phone", forKey: "LBL_TELEFON")
|
||||||
result.setValue( "CWA Policy", forKey: "LBL_CWA_POLICY")
|
result.setValue( "CWA Policy", forKey: "LBL_CWA_POLICY")
|
||||||
result.setValue( "Edit OEGD", forKey: "LBL_EDIT_OEGD")
|
|
||||||
result.setValue( "Language", forKey: "LBL_LANGUAGE")
|
result.setValue( "Language", forKey: "LBL_LANGUAGE")
|
||||||
result.setValue( "Current Password", forKey: "LBL_CURRENT_PASSWORD")
|
result.setValue( "Current Password", forKey: "LBL_CURRENT_PASSWORD")
|
||||||
//result.setValue( "Settings", forKey: "LBL_SETTINGS")
|
//result.setValue( "Settings", forKey: "LBL_SETTINGS")
|
||||||
|
@ -86,7 +82,6 @@ extension Core.Lang
|
||||||
|
|
||||||
result.setValue("Settings", forKey: "BTN_SETTINGS")
|
result.setValue("Settings", forKey: "BTN_SETTINGS")
|
||||||
result.setValue("Change Password", forKey: "BTN_CHANGE_PASSWORD")
|
result.setValue("Change Password", forKey: "BTN_CHANGE_PASSWORD")
|
||||||
//result.setValue("OEGD", forKey: "BTN_OEGD")
|
|
||||||
result.setValue("Support", forKey: "BTN_SUPPORT")
|
result.setValue("Support", forKey: "BTN_SUPPORT")
|
||||||
result.setValue("Close", forKey: "BTN_CLOSE")
|
result.setValue("Close", forKey: "BTN_CLOSE")
|
||||||
result.setValue("OK", forKey: "BTN_OK")
|
result.setValue("OK", forKey: "BTN_OK")
|
||||||
|
|
Binary file not shown.
|
@ -1,92 +0,0 @@
|
||||||
//
|
|
||||||
// OEGD.swift
|
|
||||||
// Befund
|
|
||||||
//
|
|
||||||
// Created by Artur Savitskiy on 08.08.22.
|
|
||||||
// Copyright © 2022 MVZ Dr. Stein und Kollegen. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
extension Core.Models
|
|
||||||
{
|
|
||||||
public class OEGD : Encodable, Decodable
|
|
||||||
{
|
|
||||||
public var last_name: String
|
|
||||||
public var first_name: String
|
|
||||||
public var birthdate: String
|
|
||||||
public var gender: String
|
|
||||||
public var title: String
|
|
||||||
public var name_addition: String
|
|
||||||
public var prefix: String
|
|
||||||
public var address: Address
|
|
||||||
public var cwa_consent_flag: Bool
|
|
||||||
public var phone: String
|
|
||||||
|
|
||||||
init()
|
|
||||||
{
|
|
||||||
self.last_name = ""
|
|
||||||
self.first_name = ""
|
|
||||||
self.birthdate = ""
|
|
||||||
self.gender = ""
|
|
||||||
self.title = ""
|
|
||||||
self.name_addition = ""
|
|
||||||
self.prefix = ""
|
|
||||||
self.address = Address.createInstance()
|
|
||||||
self.cwa_consent_flag = false
|
|
||||||
self.phone = ""
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Address : Encodable, Decodable
|
|
||||||
{
|
|
||||||
public var zip_code: String = ""
|
|
||||||
public var city: String = ""
|
|
||||||
public var street_number: String = ""
|
|
||||||
public var country_code: String = ""
|
|
||||||
|
|
||||||
public static func createInstance() -> Address
|
|
||||||
{
|
|
||||||
return Address()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns Birthday from settings
|
|
||||||
* @return returns Date
|
|
||||||
*/
|
|
||||||
public func GetBirthday() -> Date?
|
|
||||||
{
|
|
||||||
var result: Date? = nil
|
|
||||||
|
|
||||||
if(self.birthdate.count>0)
|
|
||||||
{
|
|
||||||
let dateFormatter = DateFormatter()
|
|
||||||
dateFormatter.dateFormat = "yyyy-MM-dd"
|
|
||||||
result = dateFormatter.date(from: self.birthdate)
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns Birthday as string from settings
|
|
||||||
* @return returns string
|
|
||||||
*/
|
|
||||||
public func GetFormatedBirthday() -> String?
|
|
||||||
{
|
|
||||||
var result: String? = nil
|
|
||||||
|
|
||||||
let date = self.GetBirthday()
|
|
||||||
|
|
||||||
if(date != nil)
|
|
||||||
{
|
|
||||||
let dateFormatter = DateFormatter()
|
|
||||||
dateFormatter.dateFormat = "dd.MM.yyyy"
|
|
||||||
result = dateFormatter.string(from: date!)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
//
|
|
||||||
// OEGDFile.swift
|
|
||||||
// Befund
|
|
||||||
//
|
|
||||||
// Created by Artur Savitskiy on 08.08.22.
|
|
||||||
// Copyright © 2022 MVZ Dr. Stein und Kollegen. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
extension Core.Models
|
|
||||||
{
|
|
||||||
public struct OEGDFile
|
|
||||||
{
|
|
||||||
public var OEGD: OEGD
|
|
||||||
public var filename: String
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -465,30 +465,6 @@ extension Core
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
public static func GetOEGDFiles() -> [String]
|
|
||||||
{
|
|
||||||
var result: [String] = []
|
|
||||||
let storagePath = Core.System.StorageDirectoryPath() ?? ""
|
|
||||||
|
|
||||||
if (storagePath.count>0)
|
|
||||||
{
|
|
||||||
let fileManager = FileManager.default
|
|
||||||
do{
|
|
||||||
let files = try fileManager.contentsOfDirectory(atPath: storagePath)
|
|
||||||
for oneFile in files{
|
|
||||||
if(oneFile.range(of: ".oegd") != nil)
|
|
||||||
{
|
|
||||||
result.append(oneFile)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch let err{
|
|
||||||
Core.Log.Error(err: err, namespace: "Core.System", method: "GetOEGDFiles")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func GetEncryptedFiles() -> [String]
|
public static func GetEncryptedFiles() -> [String]
|
||||||
{
|
{
|
||||||
var result: [String] = []
|
var result: [String] = []
|
||||||
|
@ -519,17 +495,6 @@ extension Core
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//delete all OEGD files
|
|
||||||
files = GetOEGDFiles()
|
|
||||||
if(files.count > 0)
|
|
||||||
{
|
|
||||||
for oneFile in files
|
|
||||||
{
|
|
||||||
DeleteFile(atPath: oneFile)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//delete log and resuld databases
|
//delete log and resuld databases
|
||||||
let curPath = DatabaseDirectoryPath() ?? ""
|
let curPath = DatabaseDirectoryPath() ?? ""
|
||||||
if (curPath.count > 0)
|
if (curPath.count > 0)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue