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.
|
|
// // SendMoneyReceiptViewController.swift // GMERemittance // // Created by gme_2 on 04/09/2018. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. //
import UIKit import Kingfisher
enum MailBoxType { case cancel case edit case pending }
enum ReceiptType { case overseas }
enum ReceiptParent { case sendMoney case notice case report }
class SendMoneyReceiptViewController: UIViewController { // MARK: IBOutlets struct StringConstants { let transferSuccessText = "transfer_success_text".localized() let transactionDateText = "transaction_date_text".localized() let recieverText = "receiver_text".localized() let addressText = "address_key_text".localized() let mobileNoText = "mobile_number_title".localized() let payoutAgentText = "payout_agent_text".localized() let totalSentAmountText = "total_sent_amount_text".localized() let branchText = "branch_text".localized() let accountNumberText = "account_number_text".localized() let totalPayoutAmountText = "total_payout_amount_text".localized() let serviceFeeText = "service_fee_text".localized() let exRateText = "ex_rate_text".localized() let payoutAmountText = "total_payout_amount_text".localized() let gmeControlNumberText = "jme_control_no_text".localized() let doneText = "done_text".localized() let headerSuccess = "send_money_success_header_text".localized() let bodySuccess = "send_money_success_body_text".localized() let footerSuccess = "send_money_success_footer_text".localized() } @IBOutlet weak var fullnameLabel: UILabel! @IBOutlet weak var sendToLabel: UILabel! @IBOutlet weak var controlNoInfoLabel: UILabel! @IBOutlet weak var transactionDateLabel: UILabel! @IBOutlet weak var infoView: UIView! @IBOutlet weak var infoViewSuccess: UIView! @IBOutlet weak var weReceivedLabelSuccess: UILabel! @IBOutlet weak var amountLabelSuccess: UILabel! @IBOutlet weak var makePaymentLabelSuccess: UILabel! @IBOutlet weak var chargeLabelSuccess: UILabel! @IBOutlet weak var toJmeLabelSuccess: UILabel! @IBOutlet weak var shadowView: UIView! @IBOutlet weak var exchangeRateLabel: UILabel! @IBOutlet weak var relationLabel: UILabel! @IBOutlet weak var addressLabel: UILabel! @IBOutlet weak var mobileNoLabel: UILabel! @IBOutlet weak var recieverNameLabelLabel: UILabel! @IBOutlet weak var agentBankLabel: UILabel! @IBOutlet weak var branchLabel: UILabel! @IBOutlet weak var accountNoLabel: UILabel! @IBOutlet weak var transferFeeLabel: UILabel! @IBOutlet weak var totalAmountLabel: UILabel! @IBOutlet weak var gmeControlNumberLabel: UILabel! @IBOutlet weak var totalAmountHeaderLabel: UILabel! @IBOutlet weak var doneButton: UIButton! @IBOutlet weak var requestToChangeButton: UIButton! @IBOutlet weak var requestToCancelButton: UIButton! @IBOutlet weak var transactionReportButtonStackView: UIStackView! @IBOutlet weak var accountNoView: UIView! @IBOutlet weak var branchView: UIView! @IBOutlet weak var rewardPointView: UIView! // title labels @IBOutlet weak var transferSuccessfullTitleLabel: UILabel! // Body labels @IBOutlet weak var tansactionDateTitleLabel: UILabel! @IBOutlet weak var recieverTitleLabel: UILabel! @IBOutlet weak var addressTitleLabel: UILabel! @IBOutlet weak var mobileTitleLabel: UILabel! @IBOutlet weak var payoutAgentTitleLabel: UILabel! @IBOutlet weak var sentAmountTitleLabel: UILabel! @IBOutlet weak var branchTitleLabel: UILabel! @IBOutlet weak var accountNumberTitleLabel: UILabel! @IBOutlet weak var serviceTitleLabel: UILabel! @IBOutlet weak var exRateTitleLabel: UILabel! @IBOutlet weak var totalPayoutAmountTitleLabel: UILabel! @IBOutlet weak var rewardPointTitleLabel: UILabel! @IBOutlet weak var rewardPointLabel: UILabel! @IBOutlet private weak var transactionDateContainerView: UIView! @IBOutlet private weak var receiverNameContainerView: UIView! @IBOutlet private weak var addressContainerView: UIView! @IBOutlet private weak var mobileContainerView: UIView! @IBOutlet private weak var bankContainerView: UIView! @IBOutlet private weak var totalSentAmountContainerView: UIView! @IBOutlet private weak var serviceFeeContainerView: UIView! @IBOutlet private weak var exchangeRateContainerView: UIView! @IBOutlet private weak var totalPayoutAmountContainerView: UIView! // MARK: Properties var presenter: SendMoneyReceiptModuleInterface? weak var hudDelegate: HUDStatusDelegate? var shouldShowCancelAmmendButton = false var displayOption: String? var receiptParent: ReceiptParent = .sendMoney var controlNo: String? var transactionId: String? var type: MailBoxType? var receiptType: ReceiptType = .overseas var reciept: SendMoneyReciept? { didSet { self.showRecipt() } } var displayAction: DisplayOption? // MARK: VC's Life cycle override func viewDidLoad() { super.viewDidLoad() self.setup() self.presenter?.viewIsReady(type: receiptType, receiptParent: self.receiptParent) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationItem.title = "request_summary_text".localized() self.setupNormalNavigation() self.setupBackButton() self.infoView.isHidden = self.receiptParent == .sendMoney self.infoViewSuccess.isHidden = self.receiptParent != .sendMoney switch receiptType { case .overseas: transactionDateContainerView.isHidden = false receiverNameContainerView.isHidden = false mobileContainerView.isHidden = false bankContainerView.isHidden = false totalSentAmountContainerView.isHidden = false accountNoView.isHidden = false serviceFeeContainerView.isHidden = false addressContainerView.isHidden = false branchView.isHidden = false exchangeRateContainerView.isHidden = false totalPayoutAmountContainerView.isHidden = false } } override func viewWillDisappear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationItem.title = "" } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) } // MARK: IBActions @IBAction func done(_ sender: UIButton) { if self.receiptParent == .report { self.navigationController?.popViewController(animated: true) } else { //self.navigationController?.popViewController(animated: true) self.navigationController?.popToRootViewController(animated: true) } } // MARK: Other Functions @IBAction func requestToCancel(_ sender: UIButton) { if (self.displayAction == .pending) || (self.displayAction == .reject) { self.sendMail(type: .pending) } else { self.sendMail(type: .cancel) } } @IBAction func requestToChange(_ sender: UIButton) { if (self.displayAction == .pending) || (self.displayAction == .reject) { self.sendMail(type: .pending) } else { self.sendMail(type: .edit) } } func sendMail(type: MailBoxType) { self.presenter?.openMail( controlNO: self.controlNo ?? "", transactionId: self.transactionId ?? "", type: type ) } private func setup() { // all setup should be done here setupBackButton() configureLanguage() infoViewSuccess.layer.cornerRadius = 20 infoView.layer.cornerRadius = 20 requestToCancelButton.layer.cornerRadius = 20 requestToChangeButton.layer.cornerRadius = 20 } func configureLanguage() { self.weReceivedLabelSuccess.text = StringConstants().headerSuccess self.makePaymentLabelSuccess.text = StringConstants().bodySuccess self.toJmeLabelSuccess.text = StringConstants().footerSuccess self.transferSuccessfullTitleLabel.text = StringConstants().transferSuccessText self.tansactionDateTitleLabel.text = StringConstants().transactionDateText self.recieverTitleLabel.text = StringConstants().recieverText self.addressTitleLabel.text = StringConstants().addressText self.mobileTitleLabel.text = StringConstants().mobileNoText self.payoutAgentTitleLabel.text = StringConstants().payoutAgentText self.totalPayoutAmountTitleLabel.text = StringConstants().totalSentAmountText self.branchTitleLabel.text = StringConstants().branchText self.accountNumberTitleLabel.text = StringConstants().accountNumberText self.serviceTitleLabel.text = StringConstants().serviceFeeText self.exRateTitleLabel.text = StringConstants().exRateText self.totalPayoutAmountTitleLabel.text = StringConstants().payoutAmountText self.sentAmountTitleLabel.text = StringConstants().totalSentAmountText self.doneButton.setTitle(StringConstants().doneText, for: UIControl.State.normal) self.requestToCancelButton.setTitle("request_to_cancel_text".localized(), for: UIControl.State.normal) self.requestToChangeButton.setTitle("request_to_change_text".localized(), for: UIControl.State.normal) self.sendToLabel.text = "send_to_text".localized() self.controlNoInfoLabel.text = "gme_control_security_text".localized() } func setupBackButton() { print(self.displayOption ?? "No display Option") let displayOption = DisplayOption(rawValue: self.displayOption?.lowercased() ?? "") self.displayAction = displayOption switch displayOption { case .cancelamend: print("Cancel Amend Found") case .reject: self.requestToCancelButton.setTitle("Cancel Transaction", for: .normal) self.requestToChangeButton.isHidden = true case .cancel: self.requestToChangeButton.isHidden = true case .amend: self.requestToCancelButton.isHidden = true case .pending: self.requestToCancelButton.isHidden = true self.requestToCancelButton.setTitle("Cancel Transaction", for: .normal) case .none: self.transactionReportButtonStackView.isHidden = true self.doneButton.isHidden = false } // if shouldShowCancelAmmendButton { // self.navigationController?.navigationItem.hidesBackButton = false // let button = UIBarButtonItem.init( // image: #imageLiteral(resourceName: "backIconBlack"), style: UIBarButtonItem.Style.plain, // target: self, // action: #selector(self.back) // ) // self.navigationItem.backBarButtonItem = button // self.doneButton.isHidden = true // self.transactionReportButtonStackView.isHidden = false // } else { // self.doneButton.isHidden = false // self.doneButton.backgroundColor = .themeRed // self.doneButton.layer.cornerRadius = 12 // // self.transactionReportButtonStackView.isHidden = true // self.navigationController?.navigationItem.hidesBackButton = true // let button = UIBarButtonItem.init( // title: nil, // style: UIBarButtonItem.Style.plain, // target: nil, // action: nil // ) // self.navigationItem.leftBarButtonItem = button // } } @objc private func back() { self.presenter?.dismiss() } private func showRecipt() { let firstName = self.reciept?.rFirstName ?? "" let lastName = self.reciept?.rLastName ?? "" let middleName = self.reciept?.rMiddleName ?? "" let fullName = firstName + " " + middleName + " " + lastName self.recieverNameLabelLabel.text = fullName.uppercased() self.fullnameLabel.text = fullName.uppercased() self.transactionDateLabel.text = reciept?.transactionDate self.addressLabel.text = self.reciept?.rAddress self.mobileNoLabel.text = self.reciept?.rContactNo ?? "N/A" self.agentBankLabel.text = self.reciept?.agentBank let branch = self.reciept?.payoutBankBranch ?? "" self.branchLabel.text = branch self.branchView.isHidden = branch == "" let accountNo = self.reciept?.accountNo ?? "" self.accountNoView.isHidden = accountNo == "" self.accountNoLabel.text = self.reciept?.accountNo self.relationLabel.text = self.reciept?.collAmount?.decimalToCurrency(as: .krw) let charge = self.reciept?.collAmount?.decimalToCurrency(as: .krw) let servicecharge = self.reciept?.serviceCharge?.decimalToCurrency(as: .krw) self.transferFeeLabel.text = servicecharge self.chargeLabelSuccess.text = charge self.exchangeRateLabel.text = self.reciept?.exRate let controlNo = self.reciept?.controNo ?? "" self.controlNo = self.reciept?.controNo ?? "" self.gmeControlNumberLabel.text = StringConstants().gmeControlNumberText + ". " + controlNo let totalAmount = (receiptType == .overseas) ? (self.reciept?.payoutAmount ?? "") : (self.reciept?.payoutAmount ?? "").decimalToCurrency(as: .krw) self.totalAmountLabel.text = totalAmount self.totalAmountHeaderLabel.text = totalAmount self.amountLabelSuccess.text = totalAmount if let rewardPoint = self.reciept?.rewardPoints { self.rewardPointView.isHidden = false self.rewardPointLabel.text = rewardPoint } else { self.rewardPointView.isHidden = true } } }
// MARK: SendMoneyReceiptViewInterface extension SendMoneyReceiptViewController: SendMoneyReceiptViewInterface { func showLoading() { self.hudDelegate?.showLoading() } func hideLoading() { self.hudDelegate?.hideLoading() } func show(error: String) { self.alert(type: .error, message: error) } func show(model: SendMoneyReciept) { self.reciept = model } }
enum DisplayOption: String { case cancelamend = "cancel,amend" case reject = "reject" case cancel = "cancel" case amend = "amend" case pending = "pending" }
|