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.
218 lines
8.2 KiB
218 lines
8.2 KiB
//
|
|
// TrackTransactionViewController.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by Fm-user on 2/6/18.
|
|
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class TrackTransactionViewController: UIViewController {
|
|
|
|
var recipient: Recipient?
|
|
var colorCodeRed: CGFloat?
|
|
var colorCodeGreen: CGFloat?
|
|
var colorCodeBlue: CGFloat?
|
|
|
|
@IBOutlet weak var labelRecipientName: UILabel!
|
|
@IBOutlet weak var labelRecipientPhone: UILabel!
|
|
@IBOutlet weak var labelRecipientInitial: UILabel!
|
|
@IBOutlet weak var tableViewTransactionDetails: UITableView!
|
|
|
|
private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
|
|
private var tracktransactionviewmodel = TrackTransactionViewModel()
|
|
|
|
private var selectedIndex: Int!
|
|
|
|
public static var checkTransactionListConnectionTimeOut = 0
|
|
|
|
override func viewDidAppear(_ animated: Bool) {
|
|
setUpAnotherLoginListener(genericviewmodel: tracktransactionviewmodel)
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
setUpNavBar(id: 201,title: "Track Your Transfer")
|
|
|
|
tableViewTransactionDetails.tableFooterView = UIView()
|
|
|
|
guard recipient != nil else {
|
|
self.popUpMessageInfo(value: 16, title: "No data received", message: "Try again")
|
|
return
|
|
}
|
|
|
|
setRecipientDetailData()
|
|
|
|
tableViewTransactionDetails.delegate = self
|
|
tableViewTransactionDetails.dataSource = self
|
|
|
|
tableViewTransactionDetails.isHidden = true
|
|
|
|
tableViewTransactionDetails.estimatedRowHeight = 80
|
|
tableViewTransactionDetails.rowHeight = UITableViewAutomaticDimension
|
|
|
|
|
|
tracktransactionviewmodel.transactionListConnectionTimeOut.value = nil
|
|
/**
|
|
connection timeout
|
|
*/
|
|
tracktransactionviewmodel.transactionListConnectionTimeOut.bind { [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
if TrackTransactionViewController.checkTransactionListConnectionTimeOut == 0{
|
|
TrackTransactionViewController.checkTransactionListConnectionTimeOut = TrackTransactionViewController.checkTransactionListConnectionTimeOut + 1
|
|
self.popUpMessage(value: 46)
|
|
}
|
|
}
|
|
|
|
/**
|
|
Check internet connection
|
|
*/
|
|
tracktransactionviewmodel.internetConnection.value = nil
|
|
tracktransactionviewmodel.internetConnection.bind { [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
self.popUpMessage(value: 15)
|
|
}
|
|
|
|
/**
|
|
Request an api for list of transaction commit with the recipient
|
|
*/
|
|
self.startLoading()
|
|
tracktransactionviewmodel.fetchTransactionListForTrackAndWallet(recipientId: recipient!.recipientId, recipientName: "", transactionType: "trackTransfer", startDate: nil, endDate: nil, txPage: nil, txSize: nil)
|
|
|
|
|
|
tracktransactionviewmodel.transactionListObtained.bind{ [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
guard $0! else {
|
|
if TrackTransactionViewController.checkTransactionListConnectionTimeOut == 0{
|
|
TrackTransactionViewController.checkTransactionListConnectionTimeOut = TrackTransactionViewController.checkTransactionListConnectionTimeOut + 1
|
|
self.popUpMessageError(value: 10, message: self.tracktransactionviewmodel.getErrorMessage())
|
|
}
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
self.updateTransactionsDetailTableView()
|
|
}
|
|
}
|
|
|
|
/**
|
|
Update table view as per list of transaction commit with the recipient
|
|
*/
|
|
func updateTransactionsDetailTableView(){
|
|
if self.tracktransactionviewmodel.getCount() == 0 {
|
|
self.popUpMessageError(value: 10, message: "It seems you have made no transactions yet with this person")
|
|
} else {
|
|
self.tableViewTransactionDetails.isHidden = false
|
|
self.tableViewTransactionDetails.reloadData()
|
|
}
|
|
}
|
|
|
|
/**
|
|
Display UI with recipient detail data
|
|
*/
|
|
func setRecipientDetailData(){
|
|
if (colorCodeRed == nil || colorCodeBlue == nil || colorCodeGreen == nil) {
|
|
labelRecipientInitial.layer.backgroundColor = UIColor.gray.cgColor
|
|
} else {
|
|
labelRecipientInitial.layer.backgroundColor = UIColor(red: colorCodeRed!, green: colorCodeGreen!, blue: colorCodeBlue!, alpha: 1.0).cgColor
|
|
}
|
|
if let fullName = recipient?.getFullName(){
|
|
labelRecipientName.text = fullName
|
|
}
|
|
if let mobileNumber = recipient?.mobileNumber{
|
|
labelRecipientPhone.text = mobileNumber
|
|
}
|
|
if let firstName = recipient?.firstName{
|
|
labelRecipientInitial.text = firstName.prefix(1).uppercased()
|
|
}
|
|
|
|
labelRecipientInitial.layer.cornerRadius = labelRecipientInitial.frame.height / 2
|
|
}
|
|
|
|
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
|
if segue.identifier == "trackStage" {
|
|
let trackPhaseViewController = segue.destination as! TrackPhaseViewController
|
|
trackPhaseViewController.recipient = self.recipient
|
|
trackPhaseViewController.transaction = self.tracktransactionviewmodel.getTransaction(index: selectedIndex)
|
|
}
|
|
}
|
|
|
|
/**
|
|
Disable user interaction while fetching data from api
|
|
*/
|
|
func startLoading(){
|
|
disableUserInteractions()
|
|
showActivityIndicator(activityIndicator: activityIndicator)
|
|
}
|
|
|
|
/**
|
|
Enable user interaction after fetching data from api
|
|
*/
|
|
func stopLoading(){
|
|
self.enableUserInteractions()
|
|
self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
|
|
}
|
|
}
|
|
|
|
extension TrackTransactionViewController: UITableViewDelegate, UITableViewDataSource {
|
|
|
|
func numberOfSections(in tableView: UITableView) -> Int {
|
|
return 1
|
|
}
|
|
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
|
|
|
return tracktransactionviewmodel.getCount()
|
|
}
|
|
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
|
let cell = tableView.dequeueReusableCell(withIdentifier: "trackTransaction", for: indexPath) as! TrackTransactionTableViewCell
|
|
|
|
let date = self.tracktransactionviewmodel.getDate(index: indexPath.row)
|
|
if date != "N/A"{
|
|
cell.labelTransactionDate.text = unixTimeStampToDate(unixTimeStamp: date)
|
|
}
|
|
|
|
let recipientName = self.tracktransactionviewmodel.getRecipient(index: indexPath.row)
|
|
if recipientName != "N/A"{
|
|
cell.labelTransactionRecipient.text = "To: " + firstWord(text: recipientName)
|
|
}
|
|
|
|
let amount = self.tracktransactionviewmodel.getAmount(index: indexPath.row)
|
|
if amount != "N/A"{
|
|
cell.labelTransactionAmount.text = self.getCommaAddedAmountString(amountString: amount)
|
|
}
|
|
|
|
let transactionMode = self.tracktransactionviewmodel.getPaymentMethodUpdated(index: indexPath.row)
|
|
if transactionMode != "N/A"{
|
|
cell.labelTransactionMode.text = transactionMode
|
|
}
|
|
|
|
let transactionId = self.tracktransactionviewmodel.getTransactionId(index: indexPath.row)
|
|
if transactionId != "N/A"{
|
|
cell.labelTransactionID.text = "Transaction No. " + self.tracktransactionviewmodel.getTransactionId(index: indexPath.row)
|
|
}
|
|
|
|
cell.layer.borderColor = UIColor(red:0.91, green:0.93, blue:0.95, alpha:1.0).cgColor
|
|
cell.layer.borderWidth = 5
|
|
cell.layer.cornerRadius = 15
|
|
cell.clipsToBounds = true
|
|
|
|
return cell
|
|
}
|
|
|
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
|
self.selectedIndex = indexPath.row
|
|
performSegue(withIdentifier: "trackStage", sender: nil)
|
|
}
|
|
}
|