//
// 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 = #"
"#
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)
}
}