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.
439 lines
19 KiB
439 lines
19 KiB
//
|
|
// TransferSuccessfulViewController.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by Fm-user on 12/26/17.
|
|
// Copyright © 2017 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
import UIKit
|
|
import WebKit
|
|
|
|
class TransferSuccessfulViewController: UIViewController {
|
|
|
|
@IBOutlet weak var serviceFeeLabelOutlet: UILabel!
|
|
@IBOutlet weak var viewAccountNumOrDistrict: UIView!
|
|
@IBOutlet weak var viewBranchOrStateProvince: UIView!
|
|
@IBOutlet weak var cityView: UIView!
|
|
@IBOutlet weak var addressView: UIView!
|
|
@IBOutlet weak var deliveryAddressView: UIView!
|
|
@IBOutlet weak var constraintDetailView: NSLayoutConstraint!
|
|
@IBOutlet weak var viewTransactionCard: UIView!
|
|
@IBOutlet weak var viewSuccessful: UIView!
|
|
@IBOutlet weak var viewTransactionDetail: UIView!
|
|
@IBOutlet weak var viewReciverDetail: UIView!
|
|
@IBOutlet weak var viewIconSavePDF: UIView!
|
|
@IBOutlet weak var labelReceiver: UILabel!
|
|
@IBOutlet weak var labelRelation: UILabel!
|
|
@IBOutlet weak var labelAddress: UILabel!
|
|
@IBOutlet weak var labelPhone: UILabel!
|
|
@IBOutlet weak var labelEmail: UILabel!
|
|
@IBOutlet weak var labelAgentOrBankOrPayoutMode: UILabel!
|
|
@IBOutlet weak var labelPayoutBankOrPayoutModeName: UILabel!
|
|
@IBOutlet weak var labelPayoutBranchOrStateOrProvinceName: UILabel!
|
|
@IBOutlet weak var labelBranchOrStateOrProvince: UILabel!
|
|
@IBOutlet weak var labelAccountOrDistrict: UILabel!
|
|
@IBOutlet weak var labelAccountNumberOrDistrictName: UILabel!
|
|
@IBOutlet weak var labelCity: UILabel!
|
|
@IBOutlet weak var labelDeliveryAddress: UILabel!
|
|
@IBOutlet weak var scrollView: UIScrollView!
|
|
@IBOutlet weak var labelRecipientName: UILabel!
|
|
@IBOutlet weak var labelAmount: UILabel!
|
|
@IBOutlet weak var labelGMEControlNumber: UILabel!
|
|
@IBOutlet weak var labelTransactionDate: UILabel!
|
|
@IBOutlet weak var labelTransactionNumber: UILabel!
|
|
@IBOutlet weak var buttonMinimizeShow: UIButton!
|
|
@IBOutlet weak var buttonSavePDF: UIButton!
|
|
@IBOutlet weak var buttonDone: UIButton!
|
|
@IBOutlet weak var shareIcon: UIButton!
|
|
@IBOutlet weak var labelServiceFee: UILabel!
|
|
@IBOutlet weak var labelTotalAmount: UILabel!
|
|
|
|
private var webView: UIWebView
|
|
private var pdfComposer: PdfComposer!
|
|
private var HTMLContent: String!
|
|
private var serviceFee: String!
|
|
private var totalAmount: String = ""
|
|
private var showAllDetails: Bool = false
|
|
private var scrollHeightReduceFactor: CGFloat = 1.0
|
|
private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
|
|
|
|
//Recieved from previous viewcontroller
|
|
var responseDetails: [String: Any]?
|
|
var paymentMethod: String?
|
|
var trackTransfer: Bool?
|
|
|
|
@IBAction func goToHomeScreen(_ sender: Any) {
|
|
showHomeScreen()
|
|
}
|
|
|
|
@IBAction func showDetails(_ sender: Any) {
|
|
if !showAllDetails {
|
|
setUpDetails()
|
|
constraintDetailView.constant = 330
|
|
buttonMinimizeShow.setTitle("Minimize details", for: .normal)
|
|
} else {
|
|
scrollView.setContentOffset(CGPoint.zero, animated: true)
|
|
constraintDetailView.constant = 0
|
|
buttonMinimizeShow.setTitle("View all details", for: .normal)
|
|
}
|
|
showAllDetails = !showAllDetails
|
|
}
|
|
|
|
@IBAction func shareTransactionCard(_ sender: Any) {
|
|
shareIcon.isHidden = true
|
|
var objectToShare = [AnyObject]()
|
|
let imageToShare: UIImage = UIImage(view: viewTransactionCard)
|
|
objectToShare.append(imageToShare)
|
|
let activityViewController = UIActivityViewController(activityItems: objectToShare, applicationActivities: nil)
|
|
activityViewController.popoverPresentationController?.sourceView = self.view
|
|
|
|
self.present(activityViewController, animated: true, completion: { () -> Void in
|
|
self.shareIcon.isHidden = false
|
|
})
|
|
}
|
|
|
|
/**
|
|
Show details
|
|
*/
|
|
func setUpDetails() {
|
|
if paymentMethod == paymentModeType.cashPayment.rawValue {
|
|
constraintDetailView.constant = constraintDetailView.constant * 8/10
|
|
viewAccountNumOrDistrict.isHidden = true
|
|
viewBranchOrStateProvince.isHidden = true
|
|
labelAgentOrBankOrPayoutMode.text = "Payout Agent/Bank"
|
|
labelPayoutBankOrPayoutModeName.text = "[Any Where]"
|
|
cityView.isHidden = true
|
|
} else if paymentMethod == paymentModeType.cashPaymentPartner.rawValue{
|
|
constraintDetailView.constant = constraintDetailView.constant * 8/10
|
|
viewBranchOrStateProvince.isHidden = false
|
|
viewAccountNumOrDistrict.isHidden = false
|
|
deliveryAddressView.isHidden = true
|
|
cityView.isHidden = true
|
|
labelAgentOrBankOrPayoutMode.text = "Payout Agent/Bank"
|
|
|
|
if let bankName = responseDetails!["bankName"] {
|
|
labelPayoutBankOrPayoutModeName.text = bankName as? String ?? "_"
|
|
} else {
|
|
labelPayoutBankOrPayoutModeName.text = "-"
|
|
}
|
|
viewAccountNumOrDistrict.isHidden = true
|
|
viewBranchOrStateProvince.isHidden = true
|
|
if let receiverAddress = responseDetails!["receiverAddress"]{
|
|
labelAddress.text = receiverAddress as? String ?? "-"
|
|
}
|
|
} else if paymentMethod == paymentModeType.bankPayment.rawValue {
|
|
constraintDetailView.constant = constraintDetailView.constant * 10/10
|
|
viewAccountNumOrDistrict.isHidden = false
|
|
viewBranchOrStateProvince.isHidden = false
|
|
cityView.isHidden = true
|
|
deliveryAddressView.isHidden = true
|
|
labelAgentOrBankOrPayoutMode.text = "Payout Agent/Bank"
|
|
labelBranchOrStateOrProvince.text = "Branch"
|
|
if let bankName = responseDetails!["bankName"] {
|
|
labelPayoutBankOrPayoutModeName.text = bankName as? String ?? "_"
|
|
} else {
|
|
labelPayoutBankOrPayoutModeName.text = "-"
|
|
}
|
|
if let bankBranch = responseDetails!["bankBranch"]{
|
|
labelPayoutBranchOrStateOrProvinceName.text = bankBranch as? String ?? "-"
|
|
} else {
|
|
labelPayoutBranchOrStateOrProvinceName.text = "-"
|
|
}
|
|
|
|
if let accountNumber = responseDetails!["accountNumber"]{
|
|
labelAccountNumberOrDistrictName.text = accountNumber as? String
|
|
}
|
|
labelAccountOrDistrict.text = "Account Number"
|
|
if let receiverAddress = responseDetails!["receiverAddress"]{
|
|
labelAddress.text = receiverAddress as? String ?? "-"
|
|
}
|
|
} else {
|
|
constraintDetailView.constant = constraintDetailView.constant * 11/10
|
|
labelAgentOrBankOrPayoutMode.text = "Payout Mode"
|
|
labelPayoutBankOrPayoutModeName.text = "Home Delivery"
|
|
labelBranchOrStateOrProvince.text = "State/Province"
|
|
if let receiverState = responseDetails?["receiverState"]{
|
|
labelPayoutBranchOrStateOrProvinceName.text = receiverState as? String
|
|
}
|
|
labelAccountOrDistrict.text = "District"
|
|
if let receiverDistrict = responseDetails?["receiverDistrict"]{
|
|
labelAccountNumberOrDistrictName.text = receiverDistrict as? String
|
|
}
|
|
if let receiverCity = responseDetails?["receiverCity"] {
|
|
labelCity.text = receiverCity as? String
|
|
}
|
|
cityView.isHidden = false
|
|
addressView.isHidden = true
|
|
deliveryAddressView.isHidden = false
|
|
if let receiverAddress = responseDetails?["receiverAddress"] {
|
|
labelDeliveryAddress.text = receiverAddress as? String
|
|
}
|
|
}
|
|
labelReceiver.text = responseDetails!["receiverName"] as? String ?? "-"
|
|
labelRelation.text = responseDetails!["relation"] as? String ?? "-"
|
|
labelPhone.text = responseDetails!["receiverPhone"] as? String ?? "-"
|
|
labelEmail.text = responseDetails!["receiverEmail"] as? String ?? "-"
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
guard responseDetails?.count != 0 else {
|
|
self.popUpMessageError(value: 10, message: "Error getting data")
|
|
return
|
|
}
|
|
setUpSuccessfulTransactionCard()
|
|
viewSuccessful.layer.cornerRadius = 10
|
|
viewTransactionDetail.layer.cornerRadius = 10
|
|
viewReciverDetail.layer.cornerRadius = 10
|
|
|
|
if trackTransfer != nil && trackTransfer! {
|
|
setUpNavBar(id: 204, title: "Track Your Transfer")
|
|
|
|
if let payoutMethod = responseDetails!["payoutMethod"]{
|
|
switch payoutMethod as? String {
|
|
case "Door to Door"?:
|
|
paymentMethod = paymentModeType.homeDelivery.rawValue
|
|
scrollHeightReduceFactor = 2.0
|
|
case "Cash"?:
|
|
paymentMethod = paymentModeType.cashPaymentPartner.rawValue
|
|
scrollHeightReduceFactor = 8.0
|
|
case "Bank"?:
|
|
paymentMethod = paymentModeType.bankPayment.rawValue
|
|
scrollHeightReduceFactor = 2.0
|
|
default:
|
|
return
|
|
}
|
|
}
|
|
setUpDetails()
|
|
shareIcon.isHidden = false
|
|
buttonMinimizeShow.isHidden = true
|
|
buttonSavePDF.isHidden = true
|
|
buttonDone.isHidden = true
|
|
viewIconSavePDF.isHidden = true
|
|
|
|
let viewHeight = view.frame.height
|
|
let componentHeight = viewSuccessful.frame.height + viewReciverDetail.frame.height + viewTransactionDetail.frame.height
|
|
self.scrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: abs(viewHeight - componentHeight) * -scrollHeightReduceFactor, right: 0)
|
|
} else {
|
|
if paymentMethod == nil {
|
|
setUpNavBar(id: 204, title: "Transaction Statement")
|
|
switch responseDetails!["payoutMethod"] as? String {
|
|
case "Door to Door"?:
|
|
paymentMethod = paymentModeType.homeDelivery.rawValue
|
|
scrollHeightReduceFactor = 2.0
|
|
case "Cash"?:
|
|
paymentMethod = paymentModeType.cashPaymentPartner.rawValue
|
|
scrollHeightReduceFactor = 8.0
|
|
case "Bank"?:
|
|
paymentMethod = paymentModeType.bankPayment.rawValue
|
|
scrollHeightReduceFactor = 2.0
|
|
default:
|
|
return
|
|
}
|
|
setUpDetails()
|
|
shareIcon.isHidden = true
|
|
buttonMinimizeShow.isHidden = true
|
|
buttonSavePDF.isHidden = true
|
|
buttonDone.isHidden = true
|
|
viewIconSavePDF.isHidden = true
|
|
|
|
let viewHeight = view.frame.height
|
|
|
|
let componentHeight = viewSuccessful.frame.height + viewReciverDetail.frame.height + viewTransactionDetail.frame.height
|
|
|
|
self.scrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: abs(viewHeight - componentHeight) * -scrollHeightReduceFactor, right: 0)
|
|
|
|
} else {
|
|
view.addSubview(webView)
|
|
setUpNavBar(id: 203, title: "Send Money")
|
|
constraintDetailView.constant = 0
|
|
}
|
|
}
|
|
setupServiceFeeAndTotalAmount()
|
|
}
|
|
|
|
/**
|
|
Display service fee and total amount
|
|
*/
|
|
func setupServiceFeeAndTotalAmount(){
|
|
if let serviceCharge = responseDetails?["payoutCharge"] as? String {
|
|
let serviceChargeNumber: Double!
|
|
if serviceCharge.contains(" ") {
|
|
let splittedServiceChargeArray = serviceCharge.split(separator: " ")
|
|
serviceChargeNumber = Double(splittedServiceChargeArray[0])!
|
|
} else {
|
|
serviceChargeNumber = Double(serviceCharge)!
|
|
}
|
|
serviceFee = getCommaAddedAmountString(amountString: String(serviceChargeNumber)) + " " + "KRW"
|
|
labelServiceFee.text = serviceFee
|
|
|
|
if let payoutAmountOriginal = responseDetails?["payoutAmountOriginal"] as? String {
|
|
let payoutAmountNumber: Double!
|
|
if payoutAmountOriginal.contains(" ") {
|
|
let splittedPayoutAmountArray = payoutAmountOriginal.split(separator: " ")
|
|
payoutAmountNumber = Double(splittedPayoutAmountArray[0])!
|
|
} else {
|
|
payoutAmountNumber = Double(payoutAmountOriginal)!
|
|
}
|
|
totalAmount = getCommaAddedAmountString(amountString: String(serviceChargeNumber+payoutAmountNumber)) + " " + "KRW"
|
|
labelTotalAmount.text = totalAmount
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
Set up successful transaction card
|
|
*/
|
|
func setUpSuccessfulTransactionCard() {
|
|
if let receiverName = responseDetails!["receiverName"]{
|
|
labelRecipientName.text = receiverName as? String
|
|
}
|
|
if let payoutAmountConverted = responseDetails!["payoutAmountConverted"] {
|
|
labelAmount.text = getCommaAddedAmountString(amountString: payoutAmountConverted as! String)
|
|
}
|
|
if let controlNumber = responseDetails!["gmeControlNumber"] as? String {
|
|
labelGMEControlNumber.text = labelGMEControlNumber.text! + controlNumber
|
|
}
|
|
if let date = responseDetails!["date"]{
|
|
labelTransactionDate.text = unixTimeStampToDate(unixTimeStamp: date as! String)
|
|
}
|
|
if let transactionId = responseDetails!["transactionId"]{
|
|
labelTransactionNumber.text = transactionId as? String
|
|
}
|
|
}
|
|
|
|
required init?(coder aDecoder: NSCoder) {
|
|
self.webView = UIWebView(frame: CGRect.zero)
|
|
super.init(coder: aDecoder)
|
|
}
|
|
|
|
/**
|
|
Create a PDF
|
|
*/
|
|
func createPdfAsHTML() {
|
|
|
|
pdfComposer = PdfComposer()
|
|
|
|
var email: String = "-"
|
|
var agentName: String = "-"
|
|
var bankBranch: String = "-"
|
|
var accountNumber: String = ""
|
|
var state: String = ""
|
|
var district: String = ""
|
|
var city: String = ""
|
|
var deliveryAddress: String = ""
|
|
|
|
switch paymentMethod {
|
|
case paymentModeType.cashPaymentPartner.rawValue?:
|
|
if responseDetails!["bankName"] as? String != nil {
|
|
agentName = responseDetails!["bankName"] as! String
|
|
}
|
|
case paymentModeType.bankPayment.rawValue?:
|
|
if responseDetails!["bankName"] as? String != nil {
|
|
agentName = responseDetails!["bankName"] as! String
|
|
}
|
|
case paymentModeType.homeDelivery.rawValue?:
|
|
agentName = "Home Delivery"
|
|
default:
|
|
return
|
|
}
|
|
|
|
if let receiverEmail = responseDetails!["receiverEmail"] as? String {
|
|
email = receiverEmail
|
|
} else {
|
|
email = "-"
|
|
}
|
|
|
|
if responseDetails!["bankBranch"] as? String != nil {
|
|
bankBranch = responseDetails!["bankBranch"] as! String
|
|
} else {
|
|
bankBranch = "-"
|
|
}
|
|
if responseDetails!["accountNumber"] as? String != nil {
|
|
accountNumber = responseDetails!["accountNumber"] as! String
|
|
}
|
|
|
|
if responseDetails!["receiverState"] as? String != nil {
|
|
state = responseDetails!["receiverState"] as! String
|
|
}
|
|
|
|
if responseDetails!["receiverDistrict"] as? String != nil{
|
|
district = responseDetails!["receiverDistrict"] as! String
|
|
}
|
|
|
|
if responseDetails!["receiverCity"] as? String != nil {
|
|
city = responseDetails!["receiverCity"] as! String
|
|
}
|
|
|
|
if responseDetails!["receiverAddress"] as? String != nil {
|
|
deliveryAddress = responseDetails!["receiverAddress"] as! String
|
|
}
|
|
|
|
let pdfDetails: [String: String] = ["AMOUNT": responseDetails!["payoutAmountConverted"] as! String,
|
|
"CONTROLNUMBER": responseDetails!["gmeControlNumber"] as! String,
|
|
"TXDATE": unixTimeStampToDate(unixTimeStamp: responseDetails!["date"] as! String),
|
|
"TXNUMBER": responseDetails!["transactionId"] as! String,
|
|
"RECIPIENT": responseDetails!["receiverName"] as! String,
|
|
"RELATION": responseDetails!["relation"] as! String,
|
|
"ADDRESS": responseDetails!["receiverAddress"] as! String,
|
|
"PHONE": responseDetails!["receiverPhone"] as! String,
|
|
"EMAIL": email,
|
|
"AGENT": agentName,
|
|
"BRANCH": bankBranch,
|
|
"ACCOUNTNUMBER": accountNumber,
|
|
"PAYOUTMODE": paymentMethod!,
|
|
"SERVICEFEE":serviceFee,
|
|
"TOTALAMOUNT": totalAmount,
|
|
"STATEORPROVINCE": state,
|
|
"DISTRICT": district,
|
|
"CITY": city,
|
|
"DELIVERYADDRESS": deliveryAddress
|
|
]
|
|
|
|
if let pdfHTML = pdfComposer.renderPdf(pdfDetails: pdfDetails) {
|
|
|
|
webView = UIWebView(frame: CGRect(x: 0, y: 0, width: 10, height: 10))
|
|
view.addSubview(webView)
|
|
webView.delegate = self
|
|
|
|
|
|
webView.alpha = 0
|
|
webView.loadHTMLString(pdfHTML, baseURL: nil)
|
|
|
|
HTMLContent = pdfHTML
|
|
}
|
|
}
|
|
|
|
@IBAction func savePdf(_ sender: Any) {
|
|
createPdfAsHTML()
|
|
}
|
|
|
|
override func didReceiveMemoryWarning() {
|
|
super.didReceiveMemoryWarning()
|
|
}
|
|
}
|
|
|
|
extension TransferSuccessfulViewController: UIWebViewDelegate {
|
|
|
|
func webViewDidFinishLoad(_ webView: UIWebView) {
|
|
if self.pdfComposer.exportHTMLContentToPDF(HTMLContent: self.HTMLContent) {
|
|
self.popUpMessageInfo(value: 16, title: "File Saved", message: "File is in Documents folder")
|
|
} else {
|
|
self.popUpMessageInfo(value: 16, title: "Something went wrong", message: "File not saved")
|
|
}
|
|
}
|
|
}
|
|
|
|
extension UIImage {
|
|
convenience init(view: UIView) {
|
|
|
|
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0.0)
|
|
|
|
view.layer.render(in:UIGraphicsGetCurrentContext()!)
|
|
let image = UIGraphicsGetImageFromCurrentImageContext()
|
|
UIGraphicsEndImageContext()
|
|
|
|
self.init(cgImage: image!.cgImage!)
|
|
}
|
|
}
|