898 lines
33 KiB
Swift
898 lines
33 KiB
Swift
//
|
|
// 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
|
|
}
|
|
}
|
|
|
|
}
|