// // AGBPolicyController.swift // Befund // // Created by Artur Savitskiy on 11.10.22. // Copyright © 2022 MVZ Dr. Stein und Kollegen. All rights reserved. // import Foundation import UIKit import WebKit class AGBPolicyController: UIViewController, UIAlertViewDelegate { private let webView: WKWebView = { let preferences = WKPreferences() preferences.javaScriptEnabled = true let configuration = WKWebViewConfiguration() configuration.preferences = preferences let webView = WKWebView(frame: .zero, configuration: configuration) return webView }() @IBOutlet weak var webViewOverlay: UIView! @IBOutlet weak var btnAcceptAGB: UIButton! @IBOutlet weak var labelAcceptAGB: UILabel! override func viewDidLoad() { super.viewDidLoad() self.Initialize() } private var flagPreviewOnly = false private var url2Load: String = "" private var buttonTitle: String = "" private var labelTitle: String = "" private let noConnectionTemplate : String = #"

[NO_CONNECTION]

"# public static func InitWebViewController(url: String, previewOnly: Bool, btnText: String, labText: String) -> AGBPolicyController { let storyboard = UIStoryboard(name: "Main", bundle: nil) let settingsAGBController = storyboard.instantiateViewController(identifier: "AGBPolicy") as AGBPolicyController settingsAGBController.flagPreviewOnly = previewOnly settingsAGBController.url2Load = url settingsAGBController.buttonTitle = btnText settingsAGBController.labelTitle = labText return settingsAGBController } private func Initialize() { view.backgroundColor = .systemBackground self.webViewOverlay.addSubview(webView) self.webView.sizeToFit() var loadUrl: URL if (InternetConnectionManager.isConnectedToNetwork()) { if (url2Load.isEmpty) { guard let stdurl = URL(string: Core.Lang.Get(key: "AGB_POLICY_LINK")) else { return } loadUrl = stdurl } else { guard let url = URL(string: url2Load) else { return } loadUrl = url } webView.load(URLRequest(url: loadUrl)) } else { var html2Load : String if (url2Load.isEmpty) { html2Load = Core.Lang.Get(key: "APP_MUST_BE_CLOSED") } else { if(labelTitle.contains("FAQ")) { html2Load = Core.Lang.Get(key: "NO_FAQ_AVAILABLE") } else { html2Load = Core.Lang.Get(key: "NO_AGB_AVAILABLE") } } webView.loadHTMLString(noConnectionTemplate.replacing("[NO_CONNECTION]",with: html2Load), baseURL: nil) } } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) if (!flagPreviewOnly) { self.btnAcceptAGB.setTitle(Core.Lang.Get(key: "BTN_ACCEPT_PRIVACY_POLICY"), for: .normal) self.labelAcceptAGB.text = Core.Lang.Get(key: "LBL_PRIVACY_POLICY") self.btnAcceptAGB.isEnabled = false var settings = Core.Models.Settings.loadFromFile(atPath: Core.System.SettingsPath()) if (settings == nil) { settings = Core.Models.Settings() settings?.save(atPath: Core.System.SettingsPath()) } let flagAGB = (settings?.policyAGBExplained ?? false) if (!flagAGB) { if(!InternetConnectionManager.isConnectedToNetwork()) { let ac = UIAlertController(title: Core.Lang.Get(key: "LBL_SUPPORT_TOPIC_TROUBLE"), message: Core.Lang.Get(key: "ERROR_PRIVACY_POLICY_NEEDS_CONNECTION"), preferredStyle: .alert) ac.addAction(UIAlertAction(title: "OK", style: .default, handler: failedWithAlertOk)) self.present(ac, animated: true, completion: nil) } else { flagPreviewOnly = false webView.frame = self.webViewOverlay.bounds self.btnAcceptAGB.isEnabled = true } } else { flagPreviewOnly = true webView.frame = self.webViewOverlay.bounds self.btnAcceptAGB.isEnabled = true } } else { self.btnAcceptAGB.setTitle( buttonTitle, for: .normal) self.labelAcceptAGB.text = labelTitle webView.frame = self.webViewOverlay.bounds self.btnAcceptAGB.isEnabled = true } } func failedWithAlertOk(alert: UIAlertAction!) { flagPreviewOnly=true webView.frame = self.webViewOverlay.bounds self.btnAcceptAGB.isHidden = true } @IBAction func AcceptButtonClick(_ sender: Any) { if (flagPreviewOnly) { self.return2MainWindow() } else { let settings = Core.Models.Settings.loadFromFile(atPath: Core.System.SettingsPath()) if (!settings!.policyAGBExplained) { settings!.policyAGBExplained = true _ = settings!.save(atPath: Core.System.SettingsPath()) } UIApplication.shared.windows[0].rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SelectLabor") } } private func return2MainWindow() { self.view.endEditing(true) self.dismiss(animated: true, completion: nil) } }