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.

227 lines
9.1 KiB

6 years ago
  1. //
  2. // TrackPhaseViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by Fm-user on 2/7/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class TrackPhaseViewController: UIViewController {
  10. @IBOutlet weak var labelPhaseTitle: UILabel!
  11. @IBOutlet weak var labelPhaseDescription: UILabel!
  12. @IBOutlet weak var labelPhaseSubDescription: UILabel!
  13. @IBOutlet weak var labelPhoneNumber: UILabel!
  14. @IBOutlet weak var topConstraintStage0: NSLayoutConstraint!
  15. @IBOutlet weak var topConstraintStage1: NSLayoutConstraint!
  16. @IBOutlet weak var topConstraintStage2: NSLayoutConstraint!
  17. @IBOutlet weak var topConstraintStage3: NSLayoutConstraint!
  18. @IBOutlet weak var imageViewPhase0: UIImageView!
  19. @IBOutlet weak var imageViewPhase1: UIImageView!
  20. @IBOutlet weak var imageViewPhase2: UIImageView!
  21. @IBOutlet weak var imageViewPhase3: UIImageView!
  22. var recipient: Recipient?
  23. var transaction: Transaction?
  24. private var stageId: Int = 0
  25. @IBAction func gotoHome(_ sender: Any) {
  26. showHomeScreen()
  27. }
  28. @IBAction func showReceiverDetails(_ sender: Any) {
  29. var encodedTransactionDictionary: [String: Any]!
  30. do {
  31. let encodedTransaction = try JSONEncoder().encode(transaction)
  32. encodedTransactionDictionary = try JSONSerialization.jsonObject(with: encodedTransaction, options: .allowFragments) as? [String: Any]
  33. } catch let error {
  34. }
  35. let storyboard = UIStoryboard.init(name: "RecipientListViewController", bundle: Bundle.main)
  36. if let transferInfoViewController = storyboard.instantiateViewController(withIdentifier: "showTransferInfo") as? TransferSuccessfulViewController {
  37. transferInfoViewController.responseDetails = encodedTransactionDictionary
  38. // transferInfoViewController.recipient = recipient
  39. transferInfoViewController.trackTransfer = true
  40. self.navigationController!.pushViewController(transferInfoViewController, animated: true)
  41. }
  42. }
  43. @objc func initiateCall() {
  44. let phoneNumber = labelPhoneNumber.text!
  45. if let url = URL(string: "tel://\(phoneNumber.removeWhitespacesInBetween())"), UIApplication.shared.canOpenURL(url) {
  46. if #available(iOS 10, *) {
  47. UIApplication.shared.open(url)
  48. } else {
  49. UIApplication.shared.openURL(url)
  50. }
  51. }
  52. // let phoneNumber = labelPhoneNumber.text!
  53. // guard let number = URL(string: "tel://" + phoneNumber.removeWhitespacesInBetween()) else {
  54. // return
  55. // }
  56. // UIApplication.shared.openURL(number)
  57. }
  58. /**
  59. Dialog to explain any of the selected transfer process
  60. */
  61. @objc func imageTapped(tapGestureRecognizer: UITapGestureRecognizer) {
  62. guard let navController = self.navigationController else {
  63. return
  64. }
  65. let tappedImage = tapGestureRecognizer.view as! UIImageView
  66. let storyboard = UIStoryboard.init(name: "Main", bundle: Bundle.main)
  67. if let popUpViewController = storyboard.instantiateViewController(withIdentifier: "popUpInfo") as? PopUpGeneralInfo {
  68. switch tappedImage.tag {
  69. case 1:
  70. popUpViewController.indexValue = 4
  71. case 2:
  72. popUpViewController.indexValue = 5
  73. case 3:
  74. popUpViewController.indexValue = 6
  75. case 4:
  76. popUpViewController.indexValue = 7
  77. default:
  78. return
  79. }
  80. // self.addChildViewController(popUpViewController)
  81. // popUpViewController.view.frame = self.view.bounds
  82. // self.view.addSubview(popUpViewController.view)
  83. // popUpViewController.didMove(toParentViewController: self)
  84. //
  85. navController.addChildViewController(popUpViewController)
  86. popUpViewController.view.frame = navController.view.bounds
  87. navController.view.addSubview(popUpViewController.view)
  88. popUpViewController.didMove(toParentViewController: navController)
  89. }
  90. }
  91. override func viewDidLoad() {
  92. super.viewDidLoad()
  93. setUpNavBar(id: 201,title: "Track Your Transfer")
  94. topConstraintStage0.constant = 50
  95. topConstraintStage1.constant = 50
  96. topConstraintStage2.constant = 50
  97. topConstraintStage3.constant = 50
  98. imageViewPhase0.image = UIImage(named: "trackStageInitial0")
  99. imageViewPhase1.image = UIImage(named: "trackStageInitial1")
  100. imageViewPhase2.image = UIImage(named: "trackStageInitial2")
  101. imageViewPhase3.image = UIImage(named: "trackStageInitial3")
  102. imageViewPhase0.isUserInteractionEnabled = true
  103. imageViewPhase1.isUserInteractionEnabled = true
  104. imageViewPhase2.isUserInteractionEnabled = true
  105. imageViewPhase3.isUserInteractionEnabled = true
  106. labelPhoneNumber.isUserInteractionEnabled = true
  107. imageViewPhase0.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:))))
  108. imageViewPhase1.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:))))
  109. imageViewPhase2.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:))))
  110. imageViewPhase3.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:))))
  111. labelPhoneNumber.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(initiateCall)))
  112. /**
  113. Assign value to var stageId as per the transaction status
  114. */
  115. switch transaction!.txnStatus.uppercased() {
  116. case "WAITING FOR APPROVAL":
  117. self.stageId = 0
  118. case "IN SEND QUEUE", "POST", "UNPAID":
  119. self.stageId = 1
  120. case "READY FOR PAYMENT":
  121. self.stageId = 2
  122. case "PAID":
  123. self.stageId = 3
  124. default:
  125. self.stageId = 0
  126. }
  127. /**
  128. Display UI as per the stageId
  129. */
  130. switch stageId {
  131. case 0:
  132. labelPhaseTitle.text = "In Process"
  133. labelPhaseDescription.text = "Your transfer is on its way"
  134. labelPhaseSubDescription.text = ""
  135. topConstraintStage0.constant = 45
  136. imageViewPhase0.image = UIImage(named: "trackStageCurrent0")
  137. imageViewPhase1.image = UIImage(named: "trackStageInComplete1")
  138. imageViewPhase2.image = UIImage(named: "trackStageInComplete2")
  139. imageViewPhase3.image = UIImage(named: "trackStageInComplete3")
  140. case 1:
  141. labelPhaseTitle.text = "In Process"
  142. labelPhaseDescription.text = "Your transfer is on its way"
  143. labelPhaseSubDescription.text = ""
  144. topConstraintStage1.constant = 45
  145. imageViewPhase0.image = UIImage(named: "trackStageComplete0")
  146. imageViewPhase1.image = UIImage(named: "trackStageCurrent1")
  147. imageViewPhase2.image = UIImage(named: "trackStageInComplete2")
  148. imageViewPhase3.image = UIImage(named: "trackStageInComplete3")
  149. case 2:
  150. labelPhaseTitle.text = "Available"
  151. labelPhaseDescription.text = ""
  152. labelPhaseSubDescription.text = ""
  153. topConstraintStage2.constant = 45
  154. imageViewPhase0.image = UIImage(named: "trackStageComplete0")
  155. imageViewPhase1.image = UIImage(named: "trackStageComplete1")
  156. imageViewPhase2.image = UIImage(named: "trackStageCurrent2")
  157. imageViewPhase3.image = UIImage(named: "trackStageInComplete3")
  158. case 3:
  159. labelPhaseTitle.text = "Received"
  160. switch transaction!.payoutMethod.lowercased() {
  161. case "cash":
  162. if let bankName = transaction!.bankName {
  163. labelPhaseDescription.text = "Received From: " + bankName
  164. } else {
  165. labelPhaseDescription.text = "Received From: GME"
  166. }
  167. case "bank":
  168. labelPhaseDescription.text = "Received From: " + transaction!.bankName
  169. case "door to door":
  170. labelPhaseDescription.text = "Received From: " + transaction!.receiverAddress
  171. default:
  172. labelPhaseDescription.text = ""
  173. }
  174. labelPhaseSubDescription.text = ""
  175. topConstraintStage3.constant = 45
  176. imageViewPhase0.image = UIImage(named: "trackStageComplete0")
  177. imageViewPhase1.image = UIImage(named: "trackStageComplete1")
  178. imageViewPhase2.image = UIImage(named: "trackStageComplete2")
  179. imageViewPhase3.image = UIImage(named: "trackStageCurrent3")
  180. default:
  181. return
  182. }
  183. }
  184. }