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.

120 lines
3.9 KiB

6 years ago
  1. //
  2. // ReferalCodeViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by Sujal on 4/20/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class ReferralCodeViewController: PopUpGeneralInfo {
  10. var referralCodeAvailable: Box<Bool?> = Box(nil)
  11. private var referralcodeviewmodel = ReferralCodeViewModel()
  12. private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
  13. public static var referralCodeConnectionTimeOut = 0
  14. @IBOutlet weak var textFieldReferralCode: UITextField!
  15. @IBAction func dismissDialog(_ sender: Any) {
  16. self.navigationController?.navigationBar.isHidden = false
  17. self.removeAnimate()
  18. referralCodeAvailable.value = false
  19. }
  20. /**
  21. Internet check
  22. */
  23. func setUpNetworkListener() {
  24. referralcodeviewmodel.internetConnection.bind { [unowned self] in
  25. guard $0 != nil else {
  26. return
  27. }
  28. if !$0! {
  29. self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
  30. self.enableUserInteractions()
  31. self.popUpMessage(value: 15)
  32. self.referralcodeviewmodel.internetConnection.value = nil
  33. }
  34. }
  35. }
  36. @IBAction func submitReferralCode(_ sender: Any) {
  37. view.endEditing(true)
  38. showActivityIndicator(activityIndicator: activityIndicator)
  39. disableUserInteractions()
  40. referralcodeviewmodel.validateReferralCode(referralCode: textFieldReferralCode.text!)
  41. }
  42. /**
  43. Check referral code validation
  44. */
  45. func bindReferralCodeValidation() {
  46. referralcodeviewmodel.referralCodeValidated.bind { [unowned self] in
  47. guard $0 != nil else {
  48. return
  49. }
  50. self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
  51. self.enableUserInteractions()
  52. if $0! {
  53. self.navigationController?.navigationBar.isHidden = false
  54. self.removeAnimate()
  55. self.referralCodeAvailable.value = true
  56. } else {
  57. if ReferralCodeViewController.referralCodeConnectionTimeOut == 0{
  58. ReferralCodeViewController.referralCodeConnectionTimeOut = ReferralCodeViewController.referralCodeConnectionTimeOut+1
  59. self.popUpMessageError(value: 10, message: self.referralcodeviewmodel.getErrorMessage())
  60. }
  61. }
  62. self.referralcodeviewmodel.referralCodeValidated.value = nil
  63. }
  64. }
  65. override func viewDidLoad() {
  66. super.viewDidLoad()
  67. self.setUpNetworkListener()
  68. setUpAnotherLoginListener(genericviewmodel: referralcodeviewmodel)
  69. referralcodeviewmodel.referralConnectionTimeOut.value = nil
  70. /**
  71. connection timeout
  72. */
  73. referralcodeviewmodel.referralConnectionTimeOut.bind { [unowned self] in
  74. guard $0 != nil else {
  75. return
  76. }
  77. self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
  78. self.enableUserInteractions()
  79. if ReferralCodeViewController.referralCodeConnectionTimeOut == 0{
  80. ReferralCodeViewController.referralCodeConnectionTimeOut = ReferralCodeViewController.referralCodeConnectionTimeOut+1
  81. self.popUpMessage(value: 44)
  82. }
  83. }
  84. bindReferralCodeValidation()
  85. self.view.backgroundColor = UIColor.black.withAlphaComponent(0.7)
  86. self.showAnimate()
  87. }
  88. override func didReceiveMemoryWarning() {
  89. super.didReceiveMemoryWarning()
  90. }
  91. func getReferralCode() -> String {
  92. return referralcodeviewmodel.getValidReferralCode()
  93. }
  94. }