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.

317 lines
11 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
5 years ago
6 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 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. enum ReceiptType {
  14. case domestic
  15. case overseas
  16. }
  17. class SendMoneyReceiptViewController: UIViewController {
  18. // MARK: IBOutlets
  19. struct StringConstants {
  20. let transferSuccessText = "transfer_success_text".localized()
  21. let successfullyTransferredText = "transfer_success_info_text".localized()
  22. let concernedPartyText = "transfer_success_info_text".localized()
  23. let transactionDateText = "transaction_date_text".localized()
  24. let recieverText = "receiver_text".localized()
  25. let addressText = "email_address_text".localized()
  26. let mobileNoText = "mobile_number_text".localized()
  27. let payoutAgentText = "payout_agent_text".localized()
  28. let totalSentAmountText = "total_sent_amount_text".localized()
  29. let branchText = "branch_text".localized()
  30. let accountNumberText = "account_number_text".localized()
  31. let totalPayoutAmountText = "total_payout_amount_text".localized()
  32. let serviceFeeText = "service_fee_text".localized()
  33. let exRateText = "ex_rate_text".localized()
  34. let payoutAmountText = "total_amount_text".localized()
  35. let gmeControlNumberText = "gme_control_no_text".localized()
  36. let doneText = "done_text".localized()
  37. }
  38. @IBOutlet weak var fullnameLabel: UILabel!
  39. @IBOutlet weak var transactionDateLabel: UILabel!
  40. @IBOutlet weak var exchangeRateLabel: UILabel!
  41. @IBOutlet weak var relationLabel: UILabel!
  42. @IBOutlet weak var addressLabel: UILabel!
  43. @IBOutlet weak var mobileNoLabel: UILabel!
  44. @IBOutlet weak var recieverNameLabelLabel: UILabel!
  45. @IBOutlet weak var agentBankLabel: UILabel!
  46. @IBOutlet weak var branchLabel: UILabel!
  47. @IBOutlet weak var accountNoLabel: UILabel!
  48. @IBOutlet weak var transferFeeLabel: UILabel!
  49. @IBOutlet weak var totalAmountLabel: UILabel!
  50. @IBOutlet weak var gmeControlNumberLabel: UILabel!
  51. @IBOutlet weak var totalAmountHeaderLabel: UILabel!
  52. @IBOutlet weak var doneButton: UIButton!
  53. @IBOutlet weak var requestToChangeButton: UIButton!
  54. @IBOutlet weak var requestToCancelButton: UIButton!
  55. @IBOutlet weak var transactionReportButtonStackView: UIStackView!
  56. @IBOutlet weak var accountNoView: UIView!
  57. @IBOutlet weak var branchView: UIView!
  58. // title labels
  59. @IBOutlet weak var transferSuccessfullTitleLabel: UILabel!
  60. @IBOutlet weak var successMessageTitleLabel: UILabel!
  61. @IBOutlet weak var concernedPartyText: UILabel!
  62. @IBOutlet weak var tansactionDateTitleLabel: UILabel!
  63. @IBOutlet weak var recieverTitleLabel: UILabel!
  64. @IBOutlet weak var addressTitleLabel: UILabel!
  65. @IBOutlet weak var mobileTitleLabel: UILabel!
  66. @IBOutlet weak var payoutAgentTitleLabel: UILabel!
  67. @IBOutlet weak var sentAmountTitleLabel: UILabel!
  68. @IBOutlet weak var branchTitleLabel: UILabel!
  69. @IBOutlet weak var accountNumberTitleLabel: UILabel!
  70. @IBOutlet weak var serviceTitleLabel: UILabel!
  71. @IBOutlet weak var exRateTitleLabel: UILabel!
  72. @IBOutlet weak var totalPayoutAmountTitleLabel: UILabel!
  73. @IBOutlet weak var usedCouponTitleLabel: UILabel!
  74. @IBOutlet weak var usedCouponLabel: UILabel!
  75. @IBOutlet private weak var transactionDateContainerView: UIView!
  76. @IBOutlet private weak var receiverNameContainerView: UIView!
  77. @IBOutlet private weak var addressContainerView: UIView!
  78. @IBOutlet private weak var mobileContainerView: UIView!
  79. @IBOutlet private weak var bankContainerView: UIView!
  80. @IBOutlet private weak var totalSentAmountContainerView: UIView!
  81. @IBOutlet private weak var serviceFeeContainerView: UIView!
  82. @IBOutlet private weak var usedCouponContainerView: UIView!
  83. @IBOutlet private weak var exchangeRateContainerView: UIView!
  84. @IBOutlet private weak var totalPayoutAmountContainerView: UIView!
  85. // MARK: Properties
  86. var presenter: SendMoneyReceiptModuleInterface?
  87. weak var hudDelegate: HUDStatusDelegate?
  88. var shouldShowCancelAmmendButton = false
  89. var isFromTransactionHistory = false
  90. var controlNo: String?
  91. var transactionId: String?
  92. var type: MailBoxType?
  93. var receiptType: ReceiptType = .overseas
  94. var reciept: SendMoneyReciept? {
  95. didSet {
  96. self.showRecipt()
  97. }
  98. }
  99. // MARK: VC's Life cycle
  100. override func viewDidLoad() {
  101. super.viewDidLoad()
  102. self.setup()
  103. self.presenter?.viewIsReady(type: receiptType)
  104. }
  105. override func viewWillAppear(_ animated: Bool) {
  106. super.viewWillAppear(animated)
  107. self.navigationItem.title = "Receipt"
  108. self.setupBackButton()
  109. switch receiptType {
  110. case .domestic:
  111. transactionDateContainerView.isHidden = false
  112. receiverNameContainerView.isHidden = false
  113. mobileContainerView.isHidden = false
  114. bankContainerView.isHidden = false
  115. totalSentAmountContainerView.isHidden = false
  116. accountNoView.isHidden = false
  117. serviceFeeContainerView.isHidden = false
  118. addressContainerView.isHidden = true
  119. branchView.isHidden = true
  120. usedCouponContainerView.isHidden = true
  121. exchangeRateContainerView.isHidden = true
  122. totalPayoutAmountContainerView.isHidden = true
  123. case .overseas:
  124. transactionDateContainerView.isHidden = false
  125. receiverNameContainerView.isHidden = false
  126. mobileContainerView.isHidden = false
  127. bankContainerView.isHidden = false
  128. totalSentAmountContainerView.isHidden = false
  129. accountNoView.isHidden = false
  130. serviceFeeContainerView.isHidden = false
  131. addressContainerView.isHidden = false
  132. branchView.isHidden = false
  133. usedCouponContainerView.isHidden = false
  134. exchangeRateContainerView.isHidden = false
  135. totalPayoutAmountContainerView.isHidden = false
  136. }
  137. }
  138. override func viewWillDisappear(_ animated: Bool) {
  139. super.viewWillAppear(animated)
  140. self.navigationItem.title = ""
  141. }
  142. override func viewDidAppear(_ animated: Bool) {
  143. super.viewDidAppear(animated)
  144. if !isFromTransactionHistory {
  145. StoreReviewHelper.shared.checkAndAskForReview()
  146. }
  147. }
  148. // MARK: IBActions
  149. @IBAction func done(_ sender: UIButton) {
  150. if (isFromTransactionHistory) {
  151. self.navigationController?.popViewController(animated: true)
  152. } else {
  153. self.navigationController?.popToRootViewController(animated: true)
  154. }
  155. }
  156. // MARK: Other Functions
  157. @IBAction func requestToCancel(_ sender: UIButton) {
  158. self.sendMail(type: .cancel)
  159. }
  160. @IBAction func requestToChange(_ sender: UIButton) {
  161. self.sendMail(type: .edit)
  162. }
  163. func sendMail(type: MailBoxType) {
  164. self.presenter?.openMail(
  165. controlNO: self.controlNo ?? "",
  166. transactionId: self.transactionId ?? "",
  167. type: type
  168. )
  169. }
  170. private func setup() {
  171. // all setup should be done here
  172. setupBackButton()
  173. configureLanguage()
  174. }
  175. func configureLanguage() {
  176. self.transferSuccessfullTitleLabel.text = StringConstants().transferSuccessText
  177. self.successMessageTitleLabel.text = StringConstants().successfullyTransferredText
  178. self.concernedPartyText.text = StringConstants().concernedPartyText
  179. self.tansactionDateTitleLabel.text = StringConstants().transactionDateText
  180. self.recieverTitleLabel.text = StringConstants().recieverText
  181. self.addressTitleLabel.text = StringConstants().addressText
  182. self.mobileTitleLabel.text = StringConstants().mobileNoText
  183. self.payoutAgentTitleLabel.text = StringConstants().payoutAgentText
  184. self.totalPayoutAmountTitleLabel.text = StringConstants().totalSentAmountText
  185. self.branchTitleLabel.text = StringConstants().branchText
  186. self.accountNumberTitleLabel.text = StringConstants().accountNumberText
  187. self.serviceTitleLabel.text = StringConstants().serviceFeeText
  188. self.exRateTitleLabel.text = StringConstants().exRateText
  189. self.totalPayoutAmountTitleLabel.text = StringConstants().payoutAmountText
  190. self.sentAmountTitleLabel.text = StringConstants().totalSentAmountText
  191. self.doneButton.setTitle(StringConstants().doneText, for: UIControl.State.normal)
  192. self.requestToCancelButton.setTitle("request_to_cancel_text".localized(), for: UIControl.State.normal)
  193. self.requestToChangeButton.setTitle("request_to_change_text".localized(), for: UIControl.State.normal)
  194. usedCouponTitleLabel.text = "used_coupon_title_text".localized()
  195. }
  196. func setupBackButton() {
  197. if shouldShowCancelAmmendButton {
  198. self.navigationController?.navigationItem.hidesBackButton = false
  199. let button = UIBarButtonItem.init(
  200. image: #imageLiteral(resourceName: "backIconBlack"), style: UIBarButtonItem.Style.plain,
  201. target: self,
  202. action: #selector(self.back)
  203. )
  204. self.navigationItem.backBarButtonItem = button
  205. self.doneButton.isHidden = true
  206. self.transactionReportButtonStackView.isHidden = false
  207. } else {
  208. self.doneButton.isHidden = false
  209. self.doneButton.backgroundColor = .themeRed
  210. self.doneButton.layer.cornerRadius = 5
  211. self.transactionReportButtonStackView.isHidden = true
  212. self.navigationController?.navigationItem.hidesBackButton = true
  213. let button = UIBarButtonItem.init(
  214. title: nil,
  215. style: UIBarButtonItem.Style.plain,
  216. target: nil,
  217. action: nil
  218. )
  219. self.navigationItem.leftBarButtonItem = button
  220. }
  221. }
  222. @objc private func back() {
  223. self.presenter?.dismiss()
  224. }
  225. private func showRecipt() {
  226. let firstName = self.reciept?.rFirstName ?? ""
  227. let lastName = self.reciept?.rLastName ?? ""
  228. let middleName = self.reciept?.rMiddleName ?? ""
  229. let fullName = firstName + " " + middleName + " " + lastName
  230. self.recieverNameLabelLabel.text = fullName.uppercased()
  231. self.fullnameLabel.text = fullName.uppercased()
  232. self.transactionDateLabel.text = reciept?.transactionDate
  233. self.addressLabel.text = self.reciept?.rAddress
  234. self.mobileNoLabel.text = self.reciept?.rContactNo ?? "N/A"
  235. self.agentBankLabel.text = self.reciept?.agentBank
  236. let branch = self.reciept?.payoutBankBranch ?? ""
  237. self.branchLabel.text = branch
  238. self.branchView.isHidden = branch == ""
  239. let accountNo = self.reciept?.accountNo ?? ""
  240. self.accountNoView.isHidden = accountNo == ""
  241. self.accountNoLabel.text = self.reciept?.accountNo
  242. self.relationLabel.text = self.reciept?.collAmount?.decimalToCurrency(as: .krw)
  243. self.transferFeeLabel.text = self.reciept?.serviceCharge?.decimalToCurrency(as: .krw)
  244. self.exchangeRateLabel.text = self.reciept?.exRate
  245. let controlNo = self.reciept?.controNo ?? ""
  246. self.gmeControlNumberLabel.text = StringConstants().gmeControlNumberText + ": " + controlNo
  247. let totalAmount = (receiptType == .overseas) ? (self.reciept?.payoutAmount ?? "") :
  248. (self.reciept?.payoutAmount ?? "").decimalToCurrency(as: .krw)
  249. self.totalAmountLabel.text = totalAmount
  250. self.totalAmountHeaderLabel.text = StringConstants().totalPayoutAmountText + ": \(totalAmount)"
  251. usedCouponLabel.text = reciept?.formattedCouponName
  252. }
  253. }
  254. // MARK: SendMoneyReceiptViewInterface
  255. extension SendMoneyReceiptViewController: SendMoneyReceiptViewInterface {
  256. func showLoading() {
  257. self.hudDelegate?.showLoading()
  258. }
  259. func hideLoading() {
  260. self.hudDelegate?.hideLoading()
  261. }
  262. func show(error: String) {
  263. self.alert(type: .error, message: error)
  264. }
  265. func show(model: SendMoneyReciept) {
  266. self.reciept = model
  267. }
  268. }