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.

184 lines
6.2 KiB

6 years ago
6 years ago
  1. //
  2. // RedeemViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by Sujal on 3/16/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class RedeemViewController: UIViewController {
  10. @IBOutlet weak var textFieldAddress: UITextField!
  11. @IBOutlet weak var imageViewReward: UIImageView!
  12. @IBOutlet weak var labelPointsDeduction: UILabel!
  13. @IBOutlet weak var labelRedeemItem: UILabel!
  14. @IBOutlet weak var buttonSubmitRedeemRequest: UIButton!
  15. var rewardviewmodel: RewardViewModel?
  16. public static var redeemConnectionTimeOutCheck = 0
  17. var selectedIndex: Int!
  18. private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
  19. override func viewDidLoad() {
  20. super.viewDidLoad()
  21. setUpNavBar(id: 201, title: "Reward")
  22. hideKeyboardWhenTappedAround()
  23. rewardviewmodel?.rewardConnectionTimeOut.value = nil
  24. /**
  25. connection timeout
  26. */
  27. rewardviewmodel?.rewardConnectionTimeOut.bind { [unowned self] in
  28. guard $0 != nil else {
  29. return
  30. }
  31. self.enableUserInteractions()
  32. self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
  33. if RedeemViewController.redeemConnectionTimeOutCheck == 0{
  34. RedeemViewController.redeemConnectionTimeOutCheck = RedeemViewController.redeemConnectionTimeOutCheck+1
  35. self.popUpMessage(value: 43)
  36. }
  37. }
  38. setUpListener()
  39. setUpNetworkListener()
  40. guard rewardviewmodel != nil else {
  41. buttonSubmitRedeemRequest.isUserInteractionEnabled = false
  42. return
  43. }
  44. setUpAnotherLoginListener(genericviewmodel: rewardviewmodel!)
  45. selectedIndex = rewardviewmodel!.getSelectedRewardIndex()
  46. setUpDetailsforRedeem()
  47. buttonSubmitRedeemRequest.isUserInteractionEnabled = true
  48. }
  49. /**
  50. Update reward data in view
  51. */
  52. func setUpListener() {
  53. rewardviewmodel?.rewardsAvailable.bind { [unowned self] in
  54. guard $0 != nil else {
  55. return
  56. }
  57. self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
  58. self.enableUserInteractions()
  59. if $0 == 0 {
  60. if RedeemViewController.redeemConnectionTimeOutCheck == 0{
  61. RedeemViewController.redeemConnectionTimeOutCheck = RedeemViewController.redeemConnectionTimeOutCheck+1
  62. self.popUpMessageError(value: 10, message: (self.rewardviewmodel?.getErrorMessage())!)
  63. }
  64. } else if $0 == 2 {
  65. self.showSuccessfulPopUp()
  66. }
  67. self.rewardviewmodel?.rewardsAvailable.value = nil
  68. }
  69. }
  70. /**
  71. Internet Check
  72. */
  73. func setUpNetworkListener() {
  74. rewardviewmodel?.internetConnection.bind { [unowned self] in
  75. guard $0 != nil else {
  76. return
  77. }
  78. self.enableUserInteractions()
  79. self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
  80. self.popUpMessage(value: 15)
  81. }
  82. }
  83. /**
  84. Pop up message for successfull redeem
  85. */
  86. func showSuccessfulPopUp() {
  87. let storyboard = UIStoryboard.init(name: "Main", bundle: Bundle.main)
  88. guard let navController = self.navigationController else {
  89. return
  90. }
  91. if let popUpViewController = storyboard.instantiateViewController(withIdentifier: "popUpInfo") as? PopUpGeneralInfo {
  92. popUpViewController.indexValue = 17
  93. navController.addChildViewController(popUpViewController)
  94. popUpViewController.view.frame = navController.view.bounds
  95. navController.view.addSubview(popUpViewController.view)
  96. popUpViewController.didMove(toParentViewController: navController)
  97. }
  98. }
  99. func setUpDetailsforRedeem() {
  100. labelRedeemItem.text = "Redeem" + " " + rewardviewmodel!.getRewardName(index: selectedIndex)
  101. labelPointsDeduction.text = String(rewardviewmodel!.getRedeemPoint(index: selectedIndex)) + " " + "Points will be deducted from your reward point"
  102. if let rewardImageString = rewardviewmodel!.getRewardImage(index: selectedIndex) {
  103. if let rewardImageUrl = URL(string: rewardImageString) {
  104. imageViewReward.sd_setImage(with: rewardImageUrl, placeholderImage: nil, options: [.progressiveDownload,.scaleDownLargeImages], completed: nil)
  105. }
  106. }
  107. imageViewReward.layer.cornerRadius = imageViewReward.frame.height/2
  108. }
  109. @IBAction func submitRedeemRequest(_ sender: Any) {
  110. switch rewardviewmodel!.validateAddress(address: textFieldAddress.text!) {
  111. case .Valid:
  112. if let rewardId = rewardviewmodel?.getRewardId(index: selectedIndex) {
  113. showActivityIndicator(activityIndicator: activityIndicator)
  114. disableUserInteractions()
  115. rewardviewmodel!.redeemReward(rewardId: rewardId)
  116. }
  117. case .InValid(let error):
  118. self.popUpMessageError(value: 11, message: error)
  119. }
  120. }
  121. override func didReceiveMemoryWarning() {
  122. super.didReceiveMemoryWarning()
  123. // Dispose of any resources that can be recreated.
  124. }
  125. @IBAction func viewAgentLocationFromTextClick(_ sender: Any) {
  126. viewAgentLocation()
  127. }
  128. @IBAction func viewAgentLocationFromImageClick(_ sender: Any) {
  129. viewAgentLocation()
  130. }
  131. func viewAgentLocation() {
  132. let storyboard = UIStoryboard.init(name: "_Home", bundle: Bundle.main)
  133. if let agentViewController = storyboard.instantiateViewController(withIdentifier: "PayoutViewController") as? PayoutViewController {
  134. //agentViewController.fromReward = 0
  135. self.navigationController!.pushViewController(agentViewController, animated: true)
  136. }
  137. }
  138. }