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