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.

248 lines
9.5 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. // SendMoneyReceiptViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by gme_2 on 04/09/2018.
  6. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. enum MailBoxType {
  10. case cancel
  11. case edit
  12. }
  13. class SendMoneyReceiptViewController: UIViewController {
  14. // MARK: IBOutlets
  15. struct StringConstants {
  16. let transferSuccessText = "transfer_success_text".localized()
  17. let successfullyTransferredText = "transfer_success_info_text".localized()
  18. let concernedPartyText = "transfer_success_info_text".localized()
  19. let transactionDateText = "transaction_date_text".localized()
  20. let recieverText = "receiver_text".localized()
  21. let addressText = "email_address_text".localized()
  22. let mobileNoText = "mobile_number_text".localized()
  23. let payoutAgentText = "payout_agent_text".localized()
  24. let totalSentAmountText = "total_sent_amount_text".localized()
  25. let branchText = "branch_text".localized()
  26. let accountNumberText = "account_number_text".localized()
  27. let totalPayoutAmountText = "total_payout_amount_text".localized()
  28. let serviceFeeText = "service_fee_text".localized()
  29. let exRateText = "ex_rate_text".localized()
  30. let payoutAmountText = "total_amount_text".localized()
  31. let gmeControlNumberText = "gme_control_no_text".localized()
  32. let doneText = "done_text".localized()
  33. }
  34. @IBOutlet weak var fullnameLabel: UILabel!
  35. @IBOutlet weak var transactionDateLabel: UILabel!
  36. @IBOutlet weak var exchangeRateLabel: UILabel!
  37. @IBOutlet weak var relationLabel: UILabel!
  38. @IBOutlet weak var addressLabel: UILabel!
  39. @IBOutlet weak var mobileNoLabel: UILabel!
  40. @IBOutlet weak var recieverNameLabelLabel: UILabel!
  41. @IBOutlet weak var agentBankLabel: UILabel!
  42. @IBOutlet weak var branchLabel: UILabel!
  43. @IBOutlet weak var accountNoLabel: UILabel!
  44. @IBOutlet weak var transferFeeLabel: UILabel!
  45. @IBOutlet weak var totalAmountLabel: UILabel!
  46. @IBOutlet weak var gmeControlNumberLabel: UILabel!
  47. @IBOutlet weak var totalAmountHeaderLabel: UILabel!
  48. @IBOutlet weak var doneButton: UIButton!
  49. @IBOutlet weak var requestToChangeButton: UIButton!
  50. @IBOutlet weak var requestToCancelButton: UIButton!
  51. @IBOutlet weak var transactionReportButtonStackView: UIStackView!
  52. @IBOutlet weak var accountNoView: UIView!
  53. @IBOutlet weak var branchView: UIView!
  54. // title labels
  55. @IBOutlet weak var transferSuccessfullTitleLabel: UILabel!
  56. @IBOutlet weak var successMessageTitleLabel: UILabel!
  57. @IBOutlet weak var concernedPartyText: UILabel!
  58. @IBOutlet weak var tansactionDateTitleLabel: UILabel!
  59. @IBOutlet weak var recieverTitleLabel: UILabel!
  60. @IBOutlet weak var addressTitleLabel: UILabel!
  61. @IBOutlet weak var mobileTitleLabel: UILabel!
  62. @IBOutlet weak var payoutAgentTitleLabel: UILabel!
  63. @IBOutlet weak var sentAmountTitleLabel: UILabel!
  64. @IBOutlet weak var branchTitleLabel: UILabel!
  65. @IBOutlet weak var accountNumberTitleLabel: UILabel!
  66. @IBOutlet weak var serviceTitleLabel: UILabel!
  67. @IBOutlet weak var exRateTitleLabel: UILabel!
  68. @IBOutlet weak var totalPayoutAmountTitleLabel: UILabel!
  69. // MARK: Properties
  70. var presenter: SendMoneyReceiptModuleInterface?
  71. var hudDelegate: HUDStatusDelegate?
  72. var shouldShowCancelAmmendButton = false
  73. var isFromTransactionHistory = false
  74. var controlNo: String?
  75. var transactionId: String?
  76. var type: MailBoxType?
  77. var reciept: SendMoneyReciept? {
  78. didSet {
  79. self.showRecipt()
  80. }
  81. }
  82. // MARK: VC's Life cycle
  83. override func viewDidLoad() {
  84. super.viewDidLoad()
  85. self.setup()
  86. self.presenter?.viewIsReady()
  87. }
  88. override func viewWillAppear(_ animated: Bool) {
  89. super.viewWillAppear(animated)
  90. self.navigationItem.title = "Receipt"
  91. self.setupBackButton()
  92. }
  93. override func viewWillDisappear(_ animated: Bool) {
  94. super.viewWillAppear(animated)
  95. self.navigationItem.title = ""
  96. }
  97. // MARK: IBActions
  98. @IBAction func done(_ sender: UIButton) {
  99. if (isFromTransactionHistory) {
  100. self.navigationController?.popViewController(animated: true)
  101. }else {
  102. self.navigationController?.popToRootViewController(animated: true)
  103. }
  104. }
  105. // MARK: Other Functions
  106. @IBAction func requestToCancel(_ sender: UIButton) {
  107. self.sendMail(type: .cancel)
  108. }
  109. @IBAction func requestToChange(_ sender: UIButton) {
  110. self.sendMail(type: .edit)
  111. }
  112. func sendMail(type: MailBoxType) {
  113. self.presenter?.openMail(controlNO: self.controlNo ?? "", transactionId: self.transactionId ?? "", type: type)
  114. }
  115. private func setup() {
  116. // all setup should be done here
  117. setupBackButton()
  118. configureLanguage()
  119. }
  120. func configureLanguage() {
  121. self.transferSuccessfullTitleLabel.text = StringConstants().transferSuccessText
  122. self.successMessageTitleLabel.text = StringConstants().successfullyTransferredText
  123. self.concernedPartyText.text = StringConstants().concernedPartyText
  124. self.tansactionDateTitleLabel.text = StringConstants().transactionDateText
  125. self.recieverTitleLabel.text = StringConstants().recieverText
  126. self.addressTitleLabel.text = StringConstants().addressText
  127. self.mobileTitleLabel.text = StringConstants().mobileNoText
  128. self.payoutAgentTitleLabel.text = StringConstants().payoutAgentText
  129. self.totalPayoutAmountTitleLabel.text = StringConstants().totalSentAmountText
  130. self.branchTitleLabel.text = StringConstants().branchText
  131. self.accountNumberTitleLabel.text = StringConstants().accountNumberText
  132. self.serviceTitleLabel.text = StringConstants().serviceFeeText
  133. self.exRateTitleLabel.text = StringConstants().exRateText
  134. self.totalPayoutAmountTitleLabel.text = StringConstants().payoutAmountText
  135. self.sentAmountTitleLabel.text = StringConstants().totalSentAmountText
  136. self.doneButton.setTitle(StringConstants().doneText, for: UIControlState.normal)
  137. self.requestToCancelButton.setTitle("request_to_cancel_text".localized(), for: UIControlState.normal)
  138. self.requestToChangeButton.setTitle("request_to_change_text".localized(), for: UIControlState.normal)
  139. }
  140. func setupBackButton() {
  141. if shouldShowCancelAmmendButton {
  142. self.navigationController?.navigationItem.hidesBackButton = false
  143. let button = UIBarButtonItem.init(image: #imageLiteral(resourceName: "backIconBlack"), style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.back))
  144. self.navigationItem.backBarButtonItem = button
  145. self.doneButton.isHidden = true
  146. self.transactionReportButtonStackView.isHidden = false
  147. }
  148. else {
  149. self.doneButton.isHidden = false
  150. self.transactionReportButtonStackView.isHidden = true
  151. self.navigationController?.navigationItem.hidesBackButton = true
  152. let button = UIBarButtonItem.init(title: nil, style: UIBarButtonItemStyle.plain, target: nil, action: nil)
  153. self.navigationItem.leftBarButtonItem = button
  154. }
  155. }
  156. @objc private func back() {
  157. self.presenter?.dismiss()
  158. }
  159. private func showRecipt() {
  160. let firstName = self.reciept?.rFirstName ?? ""
  161. let lastName = self.reciept?.rLastName ?? ""
  162. let middleName = self.reciept?.rMiddleName ?? ""
  163. self.recieverNameLabelLabel.text = self.reciept?.rFirstName
  164. let fullName = firstName + " " + middleName + " " + lastName
  165. self.fullnameLabel.text = fullName
  166. self.transactionDateLabel.text = reciept?.transactionDate
  167. self.fullnameLabel.text = self.reciept?.rFirstName
  168. self.transactionDateLabel.text = reciept?.transactionDate
  169. self.addressLabel.text = self.reciept?.rAddress
  170. self.mobileNoLabel.text = self.reciept?.rContactNo
  171. self.agentBankLabel.text = self.reciept?.agentBank
  172. let branch = self.reciept?.payoutBankBranch ?? ""
  173. self.branchLabel.text = branch
  174. self.branchView.isHidden = branch == ""
  175. let accountNo = self.reciept?.accountNo ?? ""
  176. self.accountNoView.isHidden = accountNo == ""
  177. self.accountNoLabel.text = self.reciept?.accountNo
  178. self.relationLabel.text = self.reciept?.collAmount
  179. self.transferFeeLabel.text = self.reciept?.serviceCharge
  180. self.exchangeRateLabel.text = self.reciept?.exRate
  181. let controlNo = self.reciept?.controNo ?? ""
  182. self.gmeControlNumberLabel.text = StringConstants().gmeControlNumberText + ": " + controlNo
  183. let totalAmount = self.reciept?.payoutAmount ?? ""
  184. // let _totalAmt = Utility.getCommaSeperatedString(numberString: totalAmount) ?? ""
  185. self.totalAmountLabel.text = totalAmount
  186. self.totalAmountHeaderLabel.text = StringConstants().totalPayoutAmountText + ": \(totalAmount)"
  187. }
  188. }
  189. // MARK: SendMoneyReceiptViewInterface
  190. extension SendMoneyReceiptViewController: SendMoneyReceiptViewInterface {
  191. func showLoading() {
  192. self.hudDelegate?.showLoading()
  193. }
  194. func hideLoading() {
  195. self.hudDelegate?.hideLoading()
  196. }
  197. func show(error: String) {
  198. self.alert(message: error)
  199. }
  200. func show(model: SendMoneyReciept) {
  201. self.reciept = model
  202. }
  203. }