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.
 
 
 
 

440 lines
16 KiB

//
// WalletViewController.swift
// GMERemittance
//
// Created by Sujal on 2/3/18.
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class WalletViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var segmentedControl: UISegmentedControl!
@IBOutlet weak var stackView: UIStackView!
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var contentView: UIView!
@IBOutlet weak var labelID: UILabel!
@IBOutlet weak var textFieldID: UITextField!
@IBOutlet weak var textFieldAmount: UITextField!
@IBOutlet weak var textFieldMessage: UITextField!
@IBOutlet weak var buttonSubmit: UIButton!
@IBOutlet weak var buttonMoneyRequestCount: UIButton!
private var activeTextField: UITextField?
private var walletviewmodel = WalletViewModel()
// private var profileviewmodel = ProfileViewModel()
private var tracktransactionviewmodel = TrackTransactionViewModel()
public var transaction: Transaction?
private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
private var moneyRequestAccepted: Bool = false
public static var notificationCode: String = ""
private var isScrolled: Bool = false
public static var walletConnectionTimeOutCheck = 0
@objc func appMovedToForeground() {
activeTextField?.resignFirstResponder()
if isScrolled {
isScrolled = !isScrolled
}
}
override func viewDidAppear(_ animated: Bool) {
setUpAnotherLoginListener(genericviewmodel: walletviewmodel)
setUpAnotherLoginListener(genericviewmodel: tracktransactionviewmodel)
// setUpAnotherLoginListener(genericviewmodel: profileviewmodel)
// profileviewmodel.profileConnectionTimeOut.value = nil
/**
connection timeout
*/
// profileviewmodel.profileConnectionTimeOut.bind { [unowned self] in
// guard $0 != nil else {
// return
// }
// self.stopLoading()
// if WalletViewController.walletConnectionTimeOutCheck == 0{
// WalletViewController.walletConnectionTimeOutCheck = WalletViewController.walletConnectionTimeOutCheck+1
// self.popUpMessage(value: 31)
// }
// }
//
// tracktransactionviewmodel.transactionListConnectionTimeOut.value = nil
/**
connection timeout
*/
// tracktransactionviewmodel.transactionListConnectionTimeOut.bind { [unowned self] in
// guard $0 != nil else {
// return
// }
// self.stopLoading()
// if WalletViewController.walletConnectionTimeOutCheck == 0{
// WalletViewController.walletConnectionTimeOutCheck = WalletViewController.walletConnectionTimeOutCheck+1
// self.popUpMessage(value: 31)
// }
// }
// walletviewmodel.walletConnectionTimeOut.value = nil
// /**
// connection timeout
// */
// walletviewmodel.walletConnectionTimeOut.bind { [unowned self] in
// guard $0 != nil else {
// return
// }
// self.stopLoading()
// if WalletViewController.walletConnectionTimeOutCheck == 0{
// WalletViewController.walletConnectionTimeOutCheck = WalletViewController.walletConnectionTimeOutCheck+1
// self.popUpMessage(value: 31)
// }
// }
// setUpNetworkListener()
// setUpNetworkListenerForProfile()
// setUpProfileListener()
// setUpTransactionListener()
// setUpWalletDetailsListener()
//
// /*so that the value is reset and no error message is seen when going back and froth in error case*/
// self.walletviewmodel.walletActionPerformed.value = nil
//
// self.buttonMoneyRequestCount.setTitle("", for: .normal)
// self.buttonMoneyRequestCount.isUserInteractionEnabled = false
//
// tracktransactionviewmodel.fetchTransactionListForTrackAndWallet(recipientId: "", recipientName: "", transactionType: "moneyRequest", startDate: nil, endDate: nil, txPage: nil, txSize: nil)
// }
//
// override func viewDidLoad() {
// super.viewDidLoad()
//
// setUpNavBar(id: 201, title: "Wallet to Wallet Transfer")
//
// NotificationCenter.default.addObserver(self, selector: #selector(appMovedToForeground), name: Notification.Name.UIApplicationWillEnterForeground, object: nil)
//
// registerTapListener()
//
//
// self.startLoading()
// walletviewmodel.getTransactionInfo()
//
// scrollView.delegate = self
// scrollView.addSubview(contentView)
// scrollView.contentSize = CGSize(width: 2000, height:2000)
//
// if transaction != nil {
// moneyRequestAccepted = true
// segmentedControl.isUserInteractionEnabled = false
// walletviewmodel.setMode(segmentIndex: 2)
// walletviewmodel.setMoneyRequestTransactionID(id: transaction!.transactionId)
//
// textFieldID.text = transaction!.receiverId
// textFieldAmount.text = transaction!.payoutAmountOriginal
//
//
// textFieldID.isUserInteractionEnabled = false
// }
// textFieldID.delegate = self
// textFieldAmount.delegate = self
// textFieldMessage.delegate = self
//
//
// segmentedControl.selectedSegmentIndex = 0
// segmentedControl.addTarget(self, action: #selector(modeChanged(_:)), for: .valueChanged)
//
// walletviewmodel.setMode(segmentIndex: 0)
// }
//
// /**
// Disable user interaction while fetching data from api
// */
// func startLoading(){
// self.showActivityIndicator(activityIndicator: self.activityIndicator)
// self.disableUserInteractions()
// }
//
// /**
// Enable user interaction while fetching data from api
// */
// func stopLoading(){
// self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
// self.enableUserInteractions()
// }
//
// /**
// Check internet connection
// */
// func setUpNetworkListener() {
// walletviewmodel.internetConnection.bind { [unowned self] in
// guard $0 != nil else {
// return
// }
// self.walletviewmodel.internetConnection.value = nil
// self.stopLoading()
// self.popUpMessage(value: 15)
// }
// }
//
// func setUpNetworkListenerForProfile() {
// profileviewmodel.internetConnection.bind { [unowned self] in
// guard $0 != nil else {
// return
// }
// self.profileviewmodel.internetConnection.value = nil
// self.stopLoading()
// self.popUpMessage(value: 15)
// }
// }
//
// /**
// Set GMEUser name
// */
// func setUpProfileListener() {
// profileviewmodel.userDataAvailable.bind { [unowned self] in
// guard $0 != nil else {
// return
// }
// self.stopLoading()
// if !($0!) {
// if WalletViewController.walletConnectionTimeOutCheck == 0{
// WalletViewController.walletConnectionTimeOutCheck = WalletViewController.walletConnectionTimeOutCheck+1
// self.popUpMessageError(value: 10, message: self.profileviewmodel.getErrorMessage())
// }
// } else {
// if !self.profileviewmodel.hasFilledKYC() {
// self.popUpMessageError(value: 11, message: "User has not filled KYC form")
// } else {
// self.walletviewmodel.setGMEUsername(fullName: self.profileviewmodel.getFullName())
// self.performSegue(withIdentifier: "walletReview", sender: nil)
// }
// }
// self.profileviewmodel.userDataAvailable.value = nil
// }
// }
//
// /**
// Update the view with the transaction count
// */
// func setUpTransactionListener() {
// tracktransactionviewmodel.transactionListObtained.bind{ [weak self] in
// guard $0 != nil else {
// return
// }
// guard $0! else {
// return
// }
// let requestCount = self?.tracktransactionviewmodel.getCount()
// self?.buttonMoneyRequestCount.setTitle(String(requestCount!), for: .normal)
//
// if requestCount != nil {
// if requestCount! > 0 {
// self?.buttonMoneyRequestCount.isUserInteractionEnabled = true
// }
// }
// }
// }
//
// /**
// Set maximum amount
// */
// func setUpWalletDetailsListener() {
// walletviewmodel.walletLimitsFetched.bind{ [unowned self] in
// guard $0 != nil else {
// return
// }
// self.stopLoading()
// guard $0! else {
// if WalletViewController.walletConnectionTimeOutCheck == 0{
// WalletViewController.walletConnectionTimeOutCheck = WalletViewController.walletConnectionTimeOutCheck+1
// self.popUpMessageError(value: 10, message: self.walletviewmodel.getErrorMessage())
// }
// self.walletviewmodel.walletLimitsFetched.value = nil
// self.buttonSubmit.isUserInteractionEnabled = false
// return
// }
// self.textFieldAmount.placeholder = "Maximum Amount" + " " + self.walletviewmodel.getMaximumTransferLimit() + " " + "KRW"
// self.walletviewmodel.walletLimitsFetched.value = nil
// }
// }
//
// @objc func modeChanged(_ segControl: UISegmentedControl) {
//
// textFieldID.text = ""
// textFieldMessage.text = ""
// textFieldAmount.text = ""
//
// switch segControl.selectedSegmentIndex {
// case 0:
// labelID.text = "GME User ID of Receiver"
// buttonSubmit.setTitle("Transfer", for: .normal)
// walletviewmodel.setMode(segmentIndex: 0)
// case 1:
// labelID.text = "GME User ID of Sender"
// buttonSubmit.setTitle("Request", for: .normal)
// walletviewmodel.setMode(segmentIndex: 1)
// default:
// break
// }
// }
//
//
// @IBAction func reviewTransferDetails(_ sender: Any) {
// activeTextField?.resignFirstResponder()
//
// walletviewmodel.setParam(amount: textFieldAmount.text!,
// gmeID: textFieldID.text!,
// message: textFieldMessage.text!)
//
// switch walletviewmodel.validateFields() {
// case .Valid:
// self.startLoading()
// profileviewmodel.fetchUserInfo(userId: walletviewmodel.getGMEID())
// case .InValid(let validationError):
// self.popUpMessageError(value: 11, message: validationError)
// }
// }
//
// override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// switch segue.identifier {
// case "walletReview"?:
// let walletReviewViewController
// = segue.destination as! WalletReviewViewController
// walletReviewViewController.walletviewmodel = self.walletviewmodel
// walletReviewViewController.moneyRequestAccepted = self.moneyRequestAccepted
// case "walletTransfer"?:
// activeTextField?.resignFirstResponder()
// let walletTransactionListViewController
// = segue.destination as! WalletTransactionListViewController
// walletTransactionListViewController.walletStatus = "walletTransfer"
// case "walletBorrow"?:
// activeTextField?.resignFirstResponder()
// let walletTransactionListViewController
// = segue.destination as! WalletTransactionListViewController
// walletTransactionListViewController.walletStatus = "walletBorrow"
// case "moneyRequest"?:
// activeTextField?.resignFirstResponder()
// let moneyRequestViewController
// = segue.destination as! MoneyRequestViewController
// moneyRequestViewController.moneyRequests = tracktransactionviewmodel.getTransactions()
// default:
// return
// }
//
// }
//}
//
//extension WalletViewController: UITextFieldDelegate {
//
//
// func textFieldDidBeginEditing(_ textField: UITextField) {
//
// activeTextField = textField
//
// checkScroll()
//
// if textField == textFieldAmount {
// if textField.text!.contains("KRW") {
// textField.text = textField.text!.replacingOccurrences(of: " KRW", with: "", options: NSString.CompareOptions.literal, range: nil)
// }
// }
// }
//
// func textFieldDidEndEditing(_ textField: UITextField) {
//
// checkScroll()
//
// if textField == textFieldAmount {
// if textField.text != "" && !textField.text!.contains("KRW") {
// textField.text!.append(" KRW")
// }
// }
// }
//
// func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
//
// let inputText = (textField.text! as NSString).replacingCharacters(in: range, with: string)
// if textField == textFieldAmount {
// //^[0-9]+$
// if NSPredicate(format:"SELF MATCHES %@", "[0-9]*$").evaluate(with: inputText) {
// return true
// }
// return false
// }
// return true
// }
//
// func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// switch textField {
// case textFieldID:
// textFieldAmount.becomeFirstResponder()
// case textFieldMessage:
// textFieldMessage.resignFirstResponder()
// default:
// return false
// }
// return true
// }
//}
//
//extension WalletViewController: ScrollableProtocol {
// var offset: CGFloat {
// get {
// return stackView.frame.origin.y - 20
// }
// }
//
// var viewScrolled: Bool {
// get {
// return isScrolled
// }
// }
//
// /**
// Scroll logic
// */
// func checkScroll() {
// if !viewScrolled {
// performScroll(direction: 0)
// isScrolled = !isScrolled
// } else {
// performScroll(direction: 1)
// isScrolled = !isScrolled
// }
// }
//
// func registerTapListener() {
// let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(clearKeyboard))
// view.addGestureRecognizer(tap)
// }
//
// /**
// Dismiss keypad
// */
// @objc func clearKeyboard() {
// activeTextField?.resignFirstResponder()
// if viewScrolled {
// performScroll(direction: 1)
// isScrolled = !isScrolled
// }
// }
//
// /**
// Active keypad if direction is equal to 0
// - parameter direction: display keypad if direction is equal to 0
// */
// func performScroll(direction: Int) {
// if direction == 0 {
// UIView.animate(withDuration: 0.3, animations: {
// self.view.frame = self.view.frame.offsetBy(dx: 0, dy: self.offset * -1)
// })
// } else if direction == 1 {
// UIView.animate(withDuration: 0.3, animations: {
// self.view.frame = self.view.frame.offsetBy(dx: 0, dy: self.offset)
// })
// }
}
}