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.

212 lines
6.8 KiB

6 years ago
  1. //
  2. // WalletReviewViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by Sujal on 2/28/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class WalletReviewViewController: UIViewController {
  10. @IBOutlet weak var scrollView: UIScrollView!
  11. @IBOutlet weak var contentView: UIView!
  12. @IBOutlet weak var labelMessage: UILabel!
  13. @IBOutlet weak var labelReviewMessage: UILabel!
  14. @IBOutlet weak var labelAmount: UILabel!
  15. @IBOutlet weak var labelID: UILabel!
  16. @IBOutlet weak var labelFullName: UILabel!
  17. @IBOutlet weak var buttonReview: UIButton!
  18. var walletviewmodel: WalletViewModel?
  19. var moneyRequestAccepted: Bool?
  20. private var checkDialog = 0
  21. private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
  22. override func viewDidLoad() {
  23. super.viewDidLoad()
  24. setUpNavBar(id: 201, title: "Wallet to Wallet Transfer")
  25. guard walletviewmodel != nil, moneyRequestAccepted != nil else {
  26. self.popUpMessageInfo(value: 16, title: "No Data", message: "Data not received")
  27. buttonReview.isUserInteractionEnabled = false
  28. return
  29. }
  30. setUpAnotherLoginListener(genericviewmodel: walletviewmodel!)
  31. walletviewmodel?.walletConnectionTimeOut.value = nil
  32. /**
  33. connection timeout
  34. */
  35. walletviewmodel?.walletConnectionTimeOut.bind { [unowned self] in
  36. guard $0 != nil else {
  37. return
  38. }
  39. self.stopLoading()
  40. if self.checkDialog == 0{
  41. self.checkDialog = self.checkDialog + 1
  42. self.popUpMessage(value: 20)
  43. }
  44. }
  45. /**
  46. Check internet connection
  47. */
  48. walletviewmodel?.internetConnection.value = nil
  49. walletviewmodel?.internetConnection.bind { [unowned self] in
  50. guard $0 != nil else {
  51. return
  52. }
  53. self.stopLoading()
  54. self.popUpMessage(value: 15)
  55. }
  56. /**
  57. Api request for wallet transfer or request action
  58. */
  59. walletviewmodel!.walletActionPerformed.bind{ [unowned self] in
  60. guard $0 != nil else {
  61. return
  62. }
  63. self.stopLoading()
  64. guard $0! else {
  65. if self.checkDialog == 0{
  66. self.checkDialog = self.checkDialog + 1
  67. self.popUpMessageError(value: 10, message: (self.walletviewmodel?.getErrorMessage())!)
  68. }
  69. return
  70. }
  71. self.performSegue(withIdentifier: "walletSuccess", sender: nil)
  72. }
  73. /**
  74. Check review message
  75. */
  76. if walletviewmodel!.getModeIndex() == 0 {
  77. labelReviewMessage.text = "Review your Transfer"
  78. buttonReview.setTitle("Transfer", for: .normal)
  79. } else if walletviewmodel!.getModeIndex() == 1 {
  80. buttonReview.setTitle("Request", for: .normal)
  81. labelReviewMessage.text = "Review your Request"
  82. }
  83. self.setReviewMessage()
  84. scrollView.contentSize = contentView.frame.size
  85. }
  86. /**
  87. Set review message
  88. */
  89. func setReviewMessage(){
  90. let numberFormatter = NumberFormatter()
  91. numberFormatter.numberStyle = NumberFormatter.Style.decimal
  92. if let amount = walletviewmodel?.getAmount(){
  93. let amountNumber = Float(amount)! as NSNumber
  94. labelAmount.text = numberFormatter.string(from: amountNumber)! + " KRW"
  95. }
  96. if let gmeId = walletviewmodel?.getGMEID(){
  97. labelID.text = gmeId
  98. }
  99. if let fullName = walletviewmodel?.getFullName(){
  100. labelFullName.text = "(" + fullName + ")"
  101. }
  102. if let message = walletviewmodel?.getMessage(){
  103. labelMessage.text = message
  104. }
  105. }
  106. /**
  107. Disable user interaction while fetching data from api
  108. */
  109. func startLoading(){
  110. self.showActivityIndicator(activityIndicator: self.activityIndicator)
  111. self.disableUserInteractions()
  112. }
  113. /**
  114. Enable user interaction while fetching data from api
  115. */
  116. func stopLoading(){
  117. self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
  118. self.enableUserInteractions()
  119. }
  120. @IBAction func performWalletTransaction(_ sender: Any) {
  121. let alertController = UIAlertController(title: "Enter your login password", message: "", preferredStyle: .alert)
  122. alertController.addTextField { (textField : UITextField!) -> Void in
  123. textField.placeholder = "Password"
  124. textField.isSecureTextEntry = true
  125. textField.tag = 51 //unique identifier set
  126. textField.delegate = self
  127. }
  128. let confirmAction = UIAlertAction(title: "Confirm", style: .default, handler: {
  129. alert -> Void in
  130. if self.checkDialog == 1{
  131. self.checkDialog = 0
  132. }
  133. let passwordTextField = alertController.textFields![0] as UITextField
  134. if passwordTextField.text != "" {
  135. self.startLoading()
  136. self.walletviewmodel?.performWalletAction(password: passwordTextField.text!, moneyRequestAccepted: self.moneyRequestAccepted!)
  137. } else {
  138. self.popUpMessageError(value: 11, message: "Password is missing")
  139. }
  140. })
  141. let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: {
  142. (action : UIAlertAction!) -> Void in
  143. })
  144. cancelAction.setValue(UIColor.black, forKey: "titleTextColor")
  145. confirmAction.setValue(UIColor(hex:0xEC1C24), forKey: "titleTextColor")
  146. alertController.addAction(cancelAction)
  147. alertController.addAction(confirmAction)
  148. self.present(alertController, animated: true, completion: nil)
  149. }
  150. override func didReceiveMemoryWarning() {
  151. super.didReceiveMemoryWarning()
  152. // Dispose of any resources that can be recreated.
  153. }
  154. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  155. if segue.identifier == "walletSuccess" {
  156. let walletSuccessViewController
  157. = segue.destination as! WalletSuccessViewController
  158. walletSuccessViewController.walletviewmodel = self.walletviewmodel
  159. }
  160. }
  161. }
  162. extension WalletReviewViewController: UITextFieldDelegate {
  163. func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
  164. if textField.tag == 51 {
  165. textField.tag = 0
  166. return false
  167. }
  168. return true
  169. }
  170. }