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.
369 lines
14 KiB
369 lines
14 KiB
//
|
|
// ReviewViewController.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by Fm-user on 12/26/17.
|
|
// Copyright © 2017 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class ReviewViewController: UIViewController {
|
|
|
|
@IBOutlet weak var labelExchange: UILabel!
|
|
@IBOutlet weak var labelServiceFee: UILabel!
|
|
@IBOutlet weak var labelSend: UILabel!
|
|
@IBOutlet weak var labelReciver: UILabel!
|
|
|
|
@IBOutlet weak var labelRecipientName: UILabel!
|
|
@IBOutlet weak var labelRecipientRelation: UILabel!
|
|
@IBOutlet weak var labelRecipientAddress: UILabel!
|
|
@IBOutlet weak var labelRecipientEmail: UILabel!
|
|
@IBOutlet weak var labelRecipientMobile: UILabel!
|
|
@IBOutlet weak var labelAgentOrBankOrPayoutMode: UILabel!
|
|
@IBOutlet weak var labelPayoutBankOrPayoutMode: UILabel!
|
|
@IBOutlet weak var labelBranchOrStateProvince: UILabel!
|
|
@IBOutlet weak var labelPayoutBranchOrStateProvince: UILabel!
|
|
@IBOutlet weak var labelAccountOrDistrict: UILabel!
|
|
@IBOutlet weak var labelAccountNumberOrDistrictName: UILabel!
|
|
@IBOutlet weak var labelCity: UILabel!
|
|
|
|
@IBOutlet weak var labelDeliveryAddress: UILabel!
|
|
@IBOutlet weak var reviewDetailConstraint: NSLayoutConstraint!
|
|
|
|
@IBOutlet weak var viewReviewDetail: UIView!
|
|
@IBOutlet weak var viewReview: UIView!
|
|
|
|
@IBOutlet weak var branchOrStateProvinceView: UIView!
|
|
@IBOutlet weak var accountNumOrDistrictView: UIView!
|
|
@IBOutlet weak var cityView: UIView!
|
|
@IBOutlet weak var addressView: UIView!
|
|
@IBOutlet weak var deliveryAddressView: UIView!
|
|
|
|
//Recieved from previous viewcontroller
|
|
var transferDetails: [String: String]?
|
|
var recipient: Recipient?
|
|
var paymentMode: String?
|
|
|
|
private var checkDialog = 0
|
|
|
|
private var reviewviewmodel = ReviewViewModel()
|
|
private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
setUpNavBar(id: 201, title: "Send Money")
|
|
setUpAnotherLoginListener(genericviewmodel: reviewviewmodel)
|
|
|
|
|
|
reviewviewmodel.reviewConnectionTimeOut.value = nil
|
|
/**
|
|
connection timeout
|
|
*/
|
|
reviewviewmodel.reviewConnectionTimeOut.bind { [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
if self.checkDialog == 0{
|
|
self.checkDialog = self.checkDialog+1
|
|
self.popUpMessage(value: 20)
|
|
}
|
|
}
|
|
|
|
/**
|
|
Check internet connection
|
|
*/
|
|
reviewviewmodel.internetConnection.value = nil
|
|
reviewviewmodel.internetConnection.bind { [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
self.popUpMessage(value: 15)
|
|
}
|
|
|
|
guard transferDetails?.count != 0 && recipient != nil && paymentMode != nil else {
|
|
self.popUpMessageError(value: 10, message: "Error getting data")
|
|
return
|
|
}
|
|
|
|
reviewviewmodel.successfulTransfer.bind { [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
guard $0! else {
|
|
if self.checkDialog == 0{
|
|
self.checkDialog = self.checkDialog + 1
|
|
self.popUpMessageError(value: 10, message: self.reviewviewmodel.getErrorMessage())
|
|
}
|
|
return
|
|
}
|
|
self.performSegue(withIdentifier: "transferSuccessful", sender: nil)
|
|
}
|
|
|
|
showReview()
|
|
|
|
reviewviewmodel.setTransferDetails(transferDetails: transferDetails!)
|
|
|
|
viewReview.layer.cornerRadius = 10
|
|
viewReviewDetail.layer.cornerRadius = 10
|
|
}
|
|
|
|
/**
|
|
Disable user interaction while fetching data from api
|
|
*/
|
|
func startLoading(){
|
|
disableUserInteractions()
|
|
showActivityIndicator(activityIndicator: activityIndicator)
|
|
}
|
|
|
|
/**
|
|
Enable user interaction while fetching data from api
|
|
*/
|
|
func stopLoading(){
|
|
self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
|
|
self.enableUserInteractions()
|
|
}
|
|
|
|
|
|
/**
|
|
Show review data
|
|
*/
|
|
func showReview() {
|
|
youSendAmountDispaly()
|
|
serviceFeeDispaly()
|
|
exchangeRateDispaly()
|
|
reciverDisplayAmount()
|
|
if let fullName = recipient?.getFullName(){
|
|
labelRecipientName.text = fullName
|
|
}
|
|
if let relation = recipient?.relation{
|
|
labelRecipientRelation.text = relation
|
|
}
|
|
if let mobileNumber = recipient?.mobileNumber{
|
|
labelRecipientMobile.text = mobileNumber
|
|
}
|
|
|
|
if let email = recipient?.email{
|
|
if email != ""{
|
|
labelRecipientEmail.text = email
|
|
} else {
|
|
labelRecipientEmail.text = "-"
|
|
}
|
|
}
|
|
else {
|
|
labelRecipientEmail.text = "-"
|
|
}
|
|
if let address = recipient?.address{
|
|
labelRecipientAddress.text = address
|
|
}
|
|
if let transferDetails = transferDetails?["bankName"]{
|
|
labelPayoutBankOrPayoutMode.text = transferDetails
|
|
} else {
|
|
labelPayoutBankOrPayoutMode.text = "-"
|
|
}
|
|
|
|
if paymentMode! == paymentModeType.cashPayment.rawValue {
|
|
reviewDetailConstraint.constant = 215
|
|
branchOrStateProvinceView.isHidden = true
|
|
accountNumOrDistrictView.isHidden = true
|
|
cityView.isHidden = true
|
|
labelAgentOrBankOrPayoutMode.text = "Payout Bank/ Agent"
|
|
labelPayoutBankOrPayoutMode.text = transferDetails?["bankName"]
|
|
|
|
} else if paymentMode! == paymentModeType.cashPaymentPartner.rawValue {
|
|
reviewDetailConstraint.constant = 240
|
|
branchOrStateProvinceView.isHidden = false
|
|
accountNumOrDistrictView.isHidden = false
|
|
deliveryAddressView.isHidden = true
|
|
cityView.isHidden = true
|
|
labelAgentOrBankOrPayoutMode.text = "Payout Agent/Bank"
|
|
accountNumOrDistrictView.isHidden = true
|
|
branchOrStateProvinceView.isHidden = true
|
|
|
|
} else if paymentMode! == paymentModeType.bankPayment.rawValue {
|
|
reviewDetailConstraint.constant = 287
|
|
branchOrStateProvinceView.isHidden = false
|
|
accountNumOrDistrictView.isHidden = false
|
|
cityView.isHidden = true
|
|
labelAgentOrBankOrPayoutMode.text = "Payout Agent/Bank"
|
|
labelBranchOrStateProvince.text = "Branch"
|
|
labelPayoutBranchOrStateProvince.text = transferDetails?["bankBranch"]
|
|
labelAccountOrDistrict.text = "Account Number"
|
|
labelAccountNumberOrDistrictName.text = transferDetails?["accountNumber"]
|
|
deliveryAddressView.isHidden = true
|
|
|
|
|
|
} else if paymentMode! == paymentModeType.homeDelivery.rawValue{
|
|
reviewDetailConstraint.constant = 287
|
|
labelAgentOrBankOrPayoutMode.text = "Payout Mode"
|
|
labelPayoutBankOrPayoutMode.text = "Home Delivery"
|
|
labelBranchOrStateProvince.text = "State/Province"
|
|
labelPayoutBranchOrStateProvince.text = transferDetails?["updatedStateId"]
|
|
labelAccountOrDistrict.text = "District"
|
|
labelAccountNumberOrDistrictName.text = transferDetails?["updatedDistrictId"]
|
|
labelCity.text = transferDetails?["updatedCity"]
|
|
cityView.isHidden = false
|
|
addressView.isHidden = true
|
|
deliveryAddressView.isHidden = false
|
|
labelDeliveryAddress.text = transferDetails?["updatedAddress"]
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
Display send amount
|
|
*/
|
|
func youSendAmountDispaly(){
|
|
let amountValueColor = UIColor(red: 236/255, green: 28/255.0, blue: 36/255, alpha: 1.0)
|
|
let youSend: String = String("You Send: ")
|
|
|
|
let mutableYouSend = NSMutableAttributedString(string: youSend)
|
|
if let cAmount = transferDetails!["cAmount"] , let from = transferDetails!["from"]{
|
|
let mutableSendAmountValue = NSMutableAttributedString(string: getCommaAddedAmountString(amountString: cAmount) + " " + from)
|
|
mutableSendAmountValue.addAttribute(NSAttributedStringKey.foregroundColor, value: amountValueColor, range: NSRange(location:0, length: mutableSendAmountValue.length))
|
|
|
|
let sendAmountData = NSMutableAttributedString()
|
|
sendAmountData.append(mutableYouSend)
|
|
sendAmountData.append(mutableSendAmountValue)
|
|
|
|
labelSend.attributedText = sendAmountData
|
|
}
|
|
}
|
|
|
|
/**
|
|
Display service fee
|
|
*/
|
|
func serviceFeeDispaly(){
|
|
let amountValueColor = UIColor(red: 236/255, green: 28/255.0, blue: 36/255, alpha: 1.0)
|
|
let youSend: String = String("Service Fee: ")
|
|
|
|
let mutableYouSend = NSMutableAttributedString(string: youSend)
|
|
if let transferFee = transferDetails!["transferFee"]{
|
|
let mutableSendAmountValue = NSMutableAttributedString(string: "-" + transferFee + " KRW")
|
|
mutableSendAmountValue.addAttribute(NSAttributedStringKey.foregroundColor, value: amountValueColor, range: NSRange(location:0, length: mutableSendAmountValue.length))
|
|
|
|
let sendAmountData = NSMutableAttributedString()
|
|
sendAmountData.append(mutableYouSend)
|
|
sendAmountData.append(mutableSendAmountValue)
|
|
|
|
labelServiceFee.attributedText = sendAmountData
|
|
}
|
|
}
|
|
|
|
/**
|
|
Display exchange rate
|
|
*/
|
|
func exchangeRateDispaly(){
|
|
let amountValueColor = UIColor(red: 236/255, green: 28/255.0, blue: 36/255, alpha: 1.0)
|
|
let youSend: String = String("Exchange Rate: ")
|
|
|
|
let mutableYouSend = NSMutableAttributedString(string: youSend)
|
|
if let exRate = transferDetails!["exRate"]{
|
|
let mutableSendAmountValue = NSMutableAttributedString(string: exRate)
|
|
mutableSendAmountValue.addAttribute(NSAttributedStringKey.foregroundColor, value: amountValueColor, range: NSRange(location:0, length: mutableSendAmountValue.length))
|
|
|
|
let sendAmountData = NSMutableAttributedString()
|
|
sendAmountData.append(mutableYouSend)
|
|
sendAmountData.append(mutableSendAmountValue)
|
|
|
|
labelExchange.attributedText = sendAmountData
|
|
}
|
|
}
|
|
|
|
/**
|
|
Display reciver amount
|
|
*/
|
|
func reciverDisplayAmount(){
|
|
let amountValueColor = UIColor(red: 236/255, green: 28/255.0, blue: 36/255, alpha: 1.0)
|
|
let youSend: String = String("Receiver Gets: ")
|
|
|
|
let mutableYouSend = NSMutableAttributedString(string: youSend)
|
|
if let pAmount = transferDetails!["pAmount"] , let to = transferDetails!["to"] {
|
|
let mutableSendAmountValue = NSMutableAttributedString(string: getCommaAddedAmountString(amountString: pAmount) + " " + to)
|
|
mutableSendAmountValue.addAttribute(NSAttributedStringKey.foregroundColor, value: amountValueColor, range: NSRange(location:0, length: mutableSendAmountValue.length))
|
|
|
|
let sendAmountData = NSMutableAttributedString()
|
|
sendAmountData.append(mutableYouSend)
|
|
sendAmountData.append(mutableSendAmountValue)
|
|
|
|
labelReciver.attributedText = sendAmountData
|
|
}
|
|
}
|
|
|
|
@IBAction func transferAmount(_ sender: Any) {
|
|
if self.checkDialog == 1{
|
|
self.checkDialog = 0
|
|
}
|
|
askPassword()
|
|
}
|
|
|
|
/**
|
|
Ask confirmation password
|
|
*/
|
|
func askPassword() {
|
|
let alertController = UIAlertController(title: "Enter your login password", message: "", preferredStyle: .alert)
|
|
|
|
alertController.addTextField { (textField : UITextField!) -> Void in
|
|
textField.placeholder = "Enter password"
|
|
textField.isSecureTextEntry = true
|
|
textField.tag = 51
|
|
textField.delegate = self
|
|
}
|
|
|
|
let confirmAction = UIAlertAction(title: "Confirm", style: .default, handler: {
|
|
alert -> Void in
|
|
|
|
let passwordTextField = alertController.textFields![0] as UITextField
|
|
if passwordTextField.text != "" {
|
|
self.startLoading()
|
|
self.reviewviewmodel.finalizeTransferDetails(userPassword: passwordTextField.text!)
|
|
self.reviewviewmodel.performTransfer()
|
|
} else {
|
|
self.popUpMessageError(value: 11, message: "Password was missing")
|
|
}
|
|
})
|
|
|
|
let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: {
|
|
(action : UIAlertAction!) -> Void in
|
|
})
|
|
|
|
cancelAction.setValue(UIColor.black, forKey: "titleTextColor")
|
|
confirmAction.setValue(UIColor(hex:0xEC1C24), forKey: "titleTextColor")
|
|
|
|
alertController.addAction(cancelAction)
|
|
alertController.addAction(confirmAction)
|
|
|
|
self.present(alertController, animated: true, completion: nil)
|
|
}
|
|
|
|
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
|
if segue.identifier == "transferSuccessful" {
|
|
let transferViewController
|
|
= segue.destination as! TransferSuccessfulViewController
|
|
|
|
transferViewController.responseDetails = self.reviewviewmodel.getResponseDetails()
|
|
|
|
transferViewController.paymentMethod = self.paymentMode
|
|
}
|
|
}
|
|
|
|
override func didReceiveMemoryWarning() {
|
|
super.didReceiveMemoryWarning()
|
|
}
|
|
|
|
|
|
}
|
|
|
|
extension ReviewViewController: UITextFieldDelegate {
|
|
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
|
|
if textField.tag == 51 {
|
|
textField.tag = 0
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
}
|