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
317 lines
11 KiB
//
|
|
// SendMoneyReceiptViewController.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by gme_2 on 04/09/2018.
|
|
//Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
enum MailBoxType {
|
|
case cancel
|
|
case edit
|
|
}
|
|
|
|
enum ReceiptType {
|
|
case domestic
|
|
case overseas
|
|
}
|
|
|
|
class SendMoneyReceiptViewController: UIViewController {
|
|
|
|
// MARK: IBOutlets
|
|
|
|
struct StringConstants {
|
|
let transferSuccessText = "transfer_success_text".localized()
|
|
let successfullyTransferredText = "transfer_success_info_text".localized()
|
|
let concernedPartyText = "transfer_success_info_text".localized()
|
|
let transactionDateText = "transaction_date_text".localized()
|
|
let recieverText = "receiver_text".localized()
|
|
let addressText = "email_address_text".localized()
|
|
let mobileNoText = "mobile_number_text".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_amount_text".localized()
|
|
let gmeControlNumberText = "gme_control_no_text".localized()
|
|
let doneText = "done_text".localized()
|
|
}
|
|
|
|
@IBOutlet weak var fullnameLabel: UILabel!
|
|
@IBOutlet weak var transactionDateLabel: UILabel!
|
|
|
|
@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!
|
|
|
|
// title labels
|
|
@IBOutlet weak var transferSuccessfullTitleLabel: UILabel!
|
|
@IBOutlet weak var successMessageTitleLabel: UILabel!
|
|
@IBOutlet weak var concernedPartyText: UILabel!
|
|
|
|
@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 usedCouponTitleLabel: UILabel!
|
|
@IBOutlet weak var usedCouponLabel: 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 usedCouponContainerView: 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 isFromTransactionHistory = false
|
|
var controlNo: String?
|
|
var transactionId: String?
|
|
var type: MailBoxType?
|
|
|
|
var receiptType: ReceiptType = .overseas
|
|
|
|
var reciept: SendMoneyReciept? {
|
|
didSet {
|
|
self.showRecipt()
|
|
}
|
|
}
|
|
|
|
// MARK: VC's Life cycle
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
self.setup()
|
|
self.presenter?.viewIsReady(type: receiptType)
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
self.navigationItem.title = "Receipt"
|
|
self.setupBackButton()
|
|
|
|
switch receiptType {
|
|
case .domestic:
|
|
transactionDateContainerView.isHidden = false
|
|
receiverNameContainerView.isHidden = false
|
|
mobileContainerView.isHidden = false
|
|
bankContainerView.isHidden = false
|
|
totalSentAmountContainerView.isHidden = false
|
|
accountNoView.isHidden = false
|
|
serviceFeeContainerView.isHidden = false
|
|
|
|
addressContainerView.isHidden = true
|
|
branchView.isHidden = true
|
|
usedCouponContainerView.isHidden = true
|
|
exchangeRateContainerView.isHidden = true
|
|
totalPayoutAmountContainerView.isHidden = true
|
|
|
|
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
|
|
usedCouponContainerView.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)
|
|
|
|
if !isFromTransactionHistory {
|
|
StoreReviewHelper.shared.checkAndAskForReview()
|
|
}
|
|
}
|
|
|
|
// MARK: IBActions
|
|
@IBAction func done(_ sender: UIButton) {
|
|
if (isFromTransactionHistory) {
|
|
self.navigationController?.popViewController(animated: true)
|
|
} else {
|
|
self.navigationController?.popToRootViewController(animated: true)
|
|
}
|
|
}
|
|
// MARK: Other Functions
|
|
|
|
@IBAction func requestToCancel(_ sender: UIButton) {
|
|
self.sendMail(type: .cancel)
|
|
}
|
|
|
|
@IBAction func requestToChange(_ sender: UIButton) {
|
|
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()
|
|
}
|
|
|
|
func configureLanguage() {
|
|
self.transferSuccessfullTitleLabel.text = StringConstants().transferSuccessText
|
|
self.successMessageTitleLabel.text = StringConstants().successfullyTransferredText
|
|
self.concernedPartyText.text = StringConstants().concernedPartyText
|
|
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)
|
|
usedCouponTitleLabel.text = "used_coupon_title_text".localized()
|
|
}
|
|
|
|
func setupBackButton() {
|
|
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 = 5
|
|
|
|
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)
|
|
self.transferFeeLabel.text = self.reciept?.serviceCharge?.decimalToCurrency(as: .krw)
|
|
self.exchangeRateLabel.text = self.reciept?.exRate
|
|
|
|
let 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 = StringConstants().totalPayoutAmountText + ": \(totalAmount)"
|
|
|
|
usedCouponLabel.text = reciept?.formattedCouponName
|
|
}
|
|
}
|
|
|
|
// 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
|
|
}
|
|
}
|