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.
203 lines
5.5 KiB
203 lines
5.5 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: class {
|
|
func `continue`(model: KycForm1Model)
|
|
func show(model: KycModel)
|
|
func addModel(model: KycForm1Model)
|
|
}
|
|
|
|
protocol KYCForm2Delegate: class {
|
|
func addModel(model: KycForm2Model)
|
|
func `continue`(model: KycForm2Model)
|
|
}
|
|
|
|
protocol KYCForm3Delegate: class {
|
|
func isAllCompleted(isCompletedKYC3: Bool) -> Bool
|
|
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.sanfrancisco(.bold, size: 14)
|
|
}
|
|
|
|
// 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
|
|
}
|
|
}
|
|
}
|
|
|
|
var presenter: KycModuleInterface?
|
|
|
|
// MARK: VC's Life cycle
|
|
|
|
override func viewDidLoad() {
|
|
buttonBarView.selectedBar.backgroundColor = Constants.xlbarButtonTextColor
|
|
settings.style.buttonBarBackgroundColor = .themeMainBackground
|
|
settings.style.buttonBarItemBackgroundColor = .themeMainBackground
|
|
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 = {(
|
|
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
|
|
}
|
|
super.viewDidLoad()
|
|
self.setup()
|
|
}
|
|
|
|
override func viewControllers(
|
|
for pagerTabStripController: PagerTabStripViewController
|
|
) -> [UIViewController] {
|
|
self.form1 = KycForm1Wireframe().getMainViewWithDelegate(delegate: self)
|
|
self.form2 = KycForm2Wireframe().getMainViewWithDelegate(delegate: self)
|
|
self.form3 = KycForm3Wireframe().getMainViewWithDelegate(delegate: self)
|
|
return [form1, form2, form3]
|
|
}
|
|
|
|
// MARK: IBActions
|
|
|
|
// MARK: Other Functions
|
|
|
|
private func setup() {
|
|
// all setup should be done here
|
|
self.requestModel = KYCRequestModel()
|
|
self.setupPicturedNavBar()
|
|
self.navigationItem.setHidesBackButton(true, animated: true)
|
|
}
|
|
|
|
func initiateSubmitProcess() {
|
|
// first validate.
|
|
guard let requestModel = self.requestModel else {return}
|
|
self.presenter?.submit(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(error: String) {
|
|
self.alert(type: .error, 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 isAllCompleted(isCompletedKYC3: Bool) -> Bool {
|
|
return requestModel?.kycForm1?.isCompleted ?? false &&
|
|
requestModel?.kycForm2?.isCompleted ?? false &&
|
|
isCompletedKYC3
|
|
}
|
|
|
|
func submit(model: KycForm3Model) {
|
|
self.requestModel?.kycForm3 = model
|
|
self.initiateSubmitProcess()
|
|
}
|
|
}
|