You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

242 lines
7.3 KiB

//
// 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()
}
}