patbef-iOS/Befund/Controllers/AGBPolicyController.swift

191 lines
10 KiB
Swift

//
// 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 = #"<html><body style="overflow:hidden;padding:0px;margin:0px;overflow:hidden;"><div style="width: 100%; position:absolute; top:50%; margin-top:-100px; text-align: center;"><div><img width="64px" style="margin:auto" src="data:image/png;base64,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"></div><h4>[NO_CONNECTION]</h4></div></body></html>"#
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)
}
}