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.

233 lines
6.9 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. //
  2. // KycViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by gme_2 on 12/09/2018.
  6. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. import XLPagerTabStrip
  10. protocol KYCForm1Delegate {
  11. func _continue(model: KycForm1Model)
  12. func show(model: KycModel)
  13. func addModel(model: KycForm1Model)
  14. }
  15. protocol KYCForm2Delegate {
  16. func addModel(model: KycForm2Model)
  17. func _continue(model: KycForm2Model)
  18. }
  19. protocol KYCForm3Delegate {
  20. func submit(model: KycForm3Model)
  21. }
  22. class KYCRequestModel {
  23. var kycForm1: KycForm1Model?
  24. var kycForm2: KycForm2Model?
  25. var kycForm3: KycForm3Model?
  26. }
  27. class KycViewController: ButtonBarPagerTabStripViewController {
  28. enum KycViewControllers: Int {
  29. case form1 = 0
  30. case form2
  31. case fomr3
  32. }
  33. struct Constants {
  34. static let stateRedColor = UIColor.init(hex: "#EC1C24")
  35. static let stateGreenColor = UIColor.init(hex: "8CC241")
  36. static let stateLabelGreyColor = UIColor.init(hex: "4a4a4a")
  37. static let xlbarButtonTextColor = UIColor.init(hex: "#ed1c24")
  38. static let xlOldSelectedCellColor = UIColor.init(hex: "#7b7a7a")
  39. static let xlTabBarFont = UIFont(name: Fonts.Family.bold, size: 14.0)!
  40. }
  41. // MARK: IBOutlets
  42. // MARK: Properties
  43. var form1: UIViewController = UIViewController()
  44. var form2: UIViewController = UIViewController()
  45. var form3: UIViewController = UIViewController()
  46. var errorOnForm1 = false
  47. var errorOnForm2 = false
  48. var errorOnForm3 = false
  49. var requestModel: KYCRequestModel?
  50. var kycModel: KycModel? {
  51. didSet {
  52. if let vc2 = self.form2 as? KycForm2ViewController {
  53. vc2.kycModel = self.kycModel
  54. }
  55. if let vc3 = self.form3 as? KycForm3ViewController {
  56. // vc.kycModel = self.kycModel
  57. }
  58. }
  59. }
  60. var presenter: KycModuleInterface?
  61. // MARK: VC's Life cycle
  62. override func viewDidLoad() {
  63. buttonBarView.selectedBar.backgroundColor = Constants.xlbarButtonTextColor
  64. settings.style.buttonBarBackgroundColor = .white
  65. settings.style.buttonBarItemBackgroundColor = .white
  66. settings.style.buttonBarItemFont = Constants.xlTabBarFont
  67. settings.style.selectedBarHeight = 2
  68. settings.style.selectedBarBackgroundColor = Constants.xlbarButtonTextColor
  69. settings.style.buttonBarMinimumLineSpacing = 0
  70. settings.style.buttonBarItemsShouldFillAvailiableWidth = true
  71. settings.style.buttonBarLeftContentInset = 0
  72. settings.style.buttonBarRightContentInset = 0
  73. changeCurrentIndexProgressive = { [weak self] (oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in
  74. guard changeCurrentIndex == true else { return }
  75. oldCell?.label.textColor = Constants.xlOldSelectedCellColor
  76. newCell?.label.textColor = Constants.xlbarButtonTextColor
  77. // Do any additional setup after loading the view.
  78. }
  79. super.viewDidLoad()
  80. self.setup()
  81. }
  82. override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
  83. self.form1 = KycForm1Wireframe().getMainViewWithDelegate(delegate: self)
  84. let _ = form1.view
  85. self.form2 = KycForm2Wireframe().getMainViewWithDelegate(delegate: self)
  86. let _ = form2.view
  87. self.form3 = KycForm3Wireframe().getMainViewWithDelegate(delegate: self)
  88. let _ = form3.view
  89. return [form1, form2, form3]
  90. }
  91. // MARK: IBActions
  92. // MARK: Other Functions
  93. private func setup() {
  94. // all setup should be done here
  95. self.requestModel = KYCRequestModel()
  96. self.setupPicturedNavBar()
  97. }
  98. func initiateSubmitProcess() {
  99. // TODO:
  100. // first validate.
  101. guard let requestModel = self.requestModel else {return}
  102. self.presenter?.validate(model: requestModel)
  103. // if error show them to respect page (if possible)
  104. // then submit to server.
  105. // then show result.
  106. }
  107. private func showErrorView() {
  108. if self.errorOnForm1 {
  109. self.moveToViewController(at: KycViewControllers.form1.rawValue)
  110. }else if self.errorOnForm2 {
  111. self.moveToViewController(at: KycViewControllers.form2.rawValue)
  112. }else if errorOnForm3 {
  113. self.moveToViewController(at: KycViewControllers.fomr3.rawValue)
  114. }
  115. }
  116. }
  117. // MARK: KycViewInterface
  118. extension KycViewController: KycViewInterface {
  119. func show(resultl: (isValid: Bool, errorsDick: [String : String])) {
  120. if let viewcontroller = self.form1 as? KycForm1ViewController {
  121. viewcontroller.show(result: (doesNotSucks: resultl.isValid , errorsDick: resultl.errorsDick ))
  122. self.errorOnForm1 = !resultl.isValid
  123. self.showErrorView()
  124. }
  125. }
  126. func show(result2: (isValid: Bool, errorsDick: [String : String])) {
  127. if let viewcontroller = self.form2 as? KycForm2ViewController {
  128. self.errorOnForm2 = !result2.isValid
  129. viewcontroller.show(resut2: result2)
  130. self.showErrorView()
  131. }
  132. }
  133. func show(result3: (isValid: Bool, errorsDick: [String : String])) {
  134. if let viewcontroller = self.form3 as? KycForm3ViewController {
  135. // TODO:
  136. self.errorOnForm3 = !result3.isValid
  137. viewcontroller.show(result: (doesNotSucks: result3.isValid , errorsDick: result3.errorsDick ))
  138. self.showErrorView()
  139. }
  140. }
  141. func show(error: String) {
  142. self.alert(message: error)
  143. }
  144. func showLoading() {
  145. self.showProgressHud()
  146. }
  147. func hideLoading() {
  148. self.hideProgressHud()
  149. }
  150. }
  151. extension KycViewController: KYCForm1Delegate {
  152. func addModel(model: KycForm1Model) {
  153. self.requestModel?.kycForm1 = model
  154. }
  155. func _continue(model: KycForm1Model) {
  156. self.requestModel?.kycForm1 = model
  157. moveToViewController(at: KycViewControllers.form2.rawValue)
  158. }
  159. func view1DisappearWith(model: KycForm1Model) {
  160. self.requestModel?.kycForm1 = model
  161. }
  162. func show(model: KycModel) {
  163. self.kycModel = model
  164. }
  165. }
  166. extension KycViewController: KYCForm2Delegate {
  167. func addModel(model: KycForm2Model) {
  168. self.requestModel?.kycForm2 = model
  169. }
  170. func _continue(model: KycForm2Model) {
  171. self.requestModel?.kycForm2 = model
  172. moveToViewController(at: KycViewControllers.fomr3.rawValue)
  173. }
  174. }
  175. extension KycViewController: KYCForm3Delegate {
  176. func submit(model: KycForm3Model) {
  177. self.requestModel?.kycForm3 = model
  178. self.initiateSubmitProcess()
  179. }
  180. }