// // KycViewController.swift // GMERemittance // // Created by gme_2 on 12/09/2018. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit import XLPagerTabStrip protocol KYCForm1Delegate { func _continue(model: KycForm1Model) func show(model: KycModel) func addModel(model: KycForm1Model) } protocol KYCForm2Delegate { func addModel(model: KycForm2Model) func _continue(model: KycForm2Model) } protocol KYCForm3Delegate { func submit(model: KycForm3Model) } class KYCRequestModel { var kycForm1: KycForm1Model? var kycForm2: KycForm2Model? var kycForm3: KycForm3Model? } class KycViewController: ButtonBarPagerTabStripViewController { enum KycViewControllers: Int { case form1 = 0 case form2 case fomr3 } struct Constants { static let stateRedColor = UIColor.init(hex: "#EC1C24") static let stateGreenColor = UIColor.init(hex: "8CC241") static let stateLabelGreyColor = UIColor.init(hex: "4a4a4a") static let xlbarButtonTextColor = UIColor.init(hex: "#ed1c24") static let xlOldSelectedCellColor = UIColor.init(hex: "#7b7a7a") static let xlTabBarFont = UIFont(name: Fonts.Family.bold, size: 14.0)! } // MARK: IBOutlets // MARK: Properties var form1: UIViewController = UIViewController() var form2: UIViewController = UIViewController() var form3: UIViewController = UIViewController() var errorOnForm1 = false var errorOnForm2 = false var errorOnForm3 = false var requestModel: KYCRequestModel? var kycModel: KycModel? { didSet { if let vc2 = self.form2 as? KycForm2ViewController { vc2.kycModel = self.kycModel } if let vc3 = self.form3 as? KycForm3ViewController { // vc.kycModel = self.kycModel } } } var presenter: KycModuleInterface? // MARK: VC's Life cycle override func viewDidLoad() { buttonBarView.selectedBar.backgroundColor = Constants.xlbarButtonTextColor settings.style.buttonBarBackgroundColor = .white settings.style.buttonBarItemBackgroundColor = .white settings.style.buttonBarItemFont = Constants.xlTabBarFont settings.style.selectedBarHeight = 2 settings.style.selectedBarBackgroundColor = Constants.xlbarButtonTextColor settings.style.buttonBarMinimumLineSpacing = 0 settings.style.buttonBarItemsShouldFillAvailiableWidth = true settings.style.buttonBarLeftContentInset = 0 settings.style.buttonBarRightContentInset = 0 changeCurrentIndexProgressive = { [weak self] (oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in guard changeCurrentIndex == true else { return } oldCell?.label.textColor = Constants.xlOldSelectedCellColor newCell?.label.textColor = Constants.xlbarButtonTextColor // Do any additional setup after loading the view. } super.viewDidLoad() self.setup() } override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] { self.form1 = KycForm1Wireframe().getMainViewWithDelegate(delegate: self) let _ = form1.view self.form2 = KycForm2Wireframe().getMainViewWithDelegate(delegate: self) let _ = form2.view self.form3 = KycForm3Wireframe().getMainViewWithDelegate(delegate: self) let _ = form3.view return [form1, form2, form3] } // MARK: IBActions // MARK: Other Functions private func setup() { // all setup should be done here self.requestModel = KYCRequestModel() self.setupPicturedNavBar() } func initiateSubmitProcess() { // TODO: // first validate. guard let requestModel = self.requestModel else {return} self.presenter?.validate(model: requestModel) // if error show them to respect page (if possible) // then submit to server. // then show result. } private func showErrorView() { if self.errorOnForm1 { self.moveToViewController(at: KycViewControllers.form1.rawValue) }else if self.errorOnForm2 { self.moveToViewController(at: KycViewControllers.form2.rawValue) }else if errorOnForm3 { self.moveToViewController(at: KycViewControllers.fomr3.rawValue) } } } // MARK: KycViewInterface extension KycViewController: KycViewInterface { func show(resultl: (isValid: Bool, errorsDick: [String : String])) { if let viewcontroller = self.form1 as? KycForm1ViewController { viewcontroller.show(result: (doesNotSucks: resultl.isValid , errorsDick: resultl.errorsDick )) self.errorOnForm1 = !resultl.isValid self.showErrorView() } } func show(result2: (isValid: Bool, errorsDick: [String : String])) { if let viewcontroller = self.form2 as? KycForm2ViewController { self.errorOnForm2 = !result2.isValid viewcontroller.show(resut2: result2) self.showErrorView() } } func show(result3: (isValid: Bool, errorsDick: [String : String])) { if let viewcontroller = self.form3 as? KycForm3ViewController { // TODO: self.errorOnForm3 = !result3.isValid viewcontroller.show(result: (doesNotSucks: result3.isValid , errorsDick: result3.errorsDick )) self.showErrorView() } } func showOption() { let message = "Would you like to apply for penny test now?" self.alertWithOkCancel(message: message, title: "Info", okTitle: "Ok", style: UIAlertControllerStyle.alert, cancelTitle: "Cancel", OkStyle: UIAlertActionStyle.default, cancelStyle: UIAlertActionStyle.default, okAction: { self.presenter?.showPennyTest() }) { self.presenter?.goHome() } } func show(error: String) { self.alert(message: error) } func showLoading() { self.showProgressHud() } func hideLoading() { self.hideProgressHud() } } extension KycViewController: KYCForm1Delegate { func addModel(model: KycForm1Model) { self.requestModel?.kycForm1 = model } func _continue(model: KycForm1Model) { self.requestModel?.kycForm1 = model moveToViewController(at: KycViewControllers.form2.rawValue) } func view1DisappearWith(model: KycForm1Model) { self.requestModel?.kycForm1 = model } func show(model: KycModel) { self.kycModel = model } } extension KycViewController: KYCForm2Delegate { func addModel(model: KycForm2Model) { self.requestModel?.kycForm2 = model } func _continue(model: KycForm2Model) { self.requestModel?.kycForm2 = model moveToViewController(at: KycViewControllers.fomr3.rawValue) } } extension KycViewController: KYCForm3Delegate { func submit(model: KycForm3Model) { self.requestModel?.kycForm3 = model self.initiateSubmitProcess() } }