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

//
// 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
}
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!
// MARK: Properties
var presenter: SendMoneyReceiptModuleInterface?
var hudDelegate: HUDStatusDelegate?
var shouldShowCancelAmmendButton = false
var isFromTransactionHistory = false
var controlNo: String?
var transactionId: String?
var type: MailBoxType?
var reciept: SendMoneyReciept? {
didSet {
self.showRecipt()
}
}
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
self.setup()
self.presenter?.viewIsReady()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.title = "Receipt"
self.setupBackButton()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.title = ""
}
// 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: UIControlState.normal)
self.requestToCancelButton.setTitle("request_to_cancel_text".localized(), for: UIControlState.normal)
self.requestToChangeButton.setTitle("request_to_change_text".localized(), for: UIControlState.normal)
}
func setupBackButton() {
if shouldShowCancelAmmendButton {
self.navigationController?.navigationItem.hidesBackButton = false
let button = UIBarButtonItem.init(image: #imageLiteral(resourceName: "backIconBlack"), style: UIBarButtonItemStyle.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.transactionReportButtonStackView.isHidden = true
self.navigationController?.navigationItem.hidesBackButton = true
let button = UIBarButtonItem.init(title: nil, style: UIBarButtonItemStyle.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 ?? ""
self.recieverNameLabelLabel.text = self.reciept?.rFirstName
let fullName = firstName + " " + middleName + " " + lastName
self.fullnameLabel.text = fullName
self.transactionDateLabel.text = reciept?.transactionDate
self.fullnameLabel.text = self.reciept?.rFirstName
self.transactionDateLabel.text = reciept?.transactionDate
self.addressLabel.text = self.reciept?.rAddress
self.mobileNoLabel.text = self.reciept?.rContactNo
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
self.transferFeeLabel.text = self.reciept?.serviceCharge
self.exchangeRateLabel.text = self.reciept?.exRate
let controlNo = self.reciept?.controNo ?? ""
self.gmeControlNumberLabel.text = StringConstants().gmeControlNumberText + ": " + controlNo
let totalAmount = self.reciept?.payoutAmount ?? ""
// let _totalAmt = Utility.getCommaSeperatedString(numberString: totalAmount) ?? ""
self.totalAmountLabel.text = totalAmount
self.totalAmountHeaderLabel.text = StringConstants().totalPayoutAmountText + ": \(totalAmount)"
}
}
// MARK: SendMoneyReceiptViewInterface
extension SendMoneyReceiptViewController: SendMoneyReceiptViewInterface {
func showLoading() {
self.hudDelegate?.showLoading()
}
func hideLoading() {
self.hudDelegate?.hideLoading()
}
func show(error: String) {
self.alert(message: error)
}
func show(model: SendMoneyReciept) {
self.reciept = model
}
}