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.
131 lines
4.0 KiB
131 lines
4.0 KiB
//
|
|
// MoneyRequestViewModel.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by Sujal on 3/5/18.
|
|
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
class MoneyRequestViewModel: ModelExtension {
|
|
|
|
var moneyRequests: [Transaction]?
|
|
|
|
var requestRejected: Box<Bool?> = Box(nil)
|
|
|
|
var moneyRequestConnectionTimeOut: Box<Bool?> = Box(nil)
|
|
|
|
private var password: String!
|
|
|
|
private let user_id = UserDefaults.standard.object(forKey: "com.gmeremit.username") as! String
|
|
|
|
}
|
|
|
|
extension MoneyRequestViewModel {
|
|
|
|
/**
|
|
To set password for money request
|
|
- parameter password: user id password
|
|
*/
|
|
func setPassword(password: String) {
|
|
self.password = password
|
|
}
|
|
|
|
/**
|
|
To get the password
|
|
- returns: password
|
|
*/
|
|
func getPassword() -> String {
|
|
return password
|
|
}
|
|
|
|
/**
|
|
To get data for transaction
|
|
- parameter transactionID: transaction id
|
|
- parameter transferType: transferType
|
|
- returns: transaction info
|
|
*/
|
|
func getParam(transactionID: String, transferType: String) -> [String: String] {
|
|
let param = ["userId": user_id,
|
|
"transferType": transferType,
|
|
"transactionId": transactionID,
|
|
"txnPassword": getPassword()]
|
|
return param
|
|
}
|
|
|
|
/**
|
|
Set the money request list
|
|
- parameter requests: transaction array
|
|
*/
|
|
func setMoneyRequests(requests: [Transaction]) {
|
|
moneyRequests = requests
|
|
}
|
|
|
|
/**
|
|
Get the money request list
|
|
- returns: transaction array
|
|
*/
|
|
func getMoneyRequests() -> [Transaction] {
|
|
if moneyRequests != nil {
|
|
return moneyRequests!
|
|
}
|
|
return []
|
|
}
|
|
|
|
/**
|
|
To get the money request
|
|
- parameter atIndex: position of Transaction in an array
|
|
- returns: transaction
|
|
*/
|
|
func getMoneyRequest(atIndex: Int) -> Transaction {
|
|
return moneyRequests![atIndex]
|
|
}
|
|
|
|
/**
|
|
To remove the money request
|
|
- parameter atIndex: position of Transaction in an array
|
|
*/
|
|
func removeMoneyRequest(atIndex: Int) {
|
|
moneyRequests?.remove(at: atIndex)
|
|
}
|
|
|
|
/**
|
|
Api request for reject the money request
|
|
- parameter transactionID: String id for transaction
|
|
- parameter transferType: String transfer type
|
|
*/
|
|
func rejectRequest(transactionID: String, transferType: String) {
|
|
if !Reachability.isConnectedToNetwork() {
|
|
self.internetConnection.value = false
|
|
} else {
|
|
let param = getParam(transactionID: transactionID, transferType: transferType)
|
|
RestApiMananger.sharedInstance.rejectMoneyRequest(param: param) { result in
|
|
|
|
switch result {
|
|
case .success(_):
|
|
self.requestRejected.value = true
|
|
case let .failure(errorJSON):
|
|
self.setErrorMessage(message: errorJSON["message"].stringValue)
|
|
self.requestRejected.value = false
|
|
case .updateAccessCode:
|
|
return
|
|
RestApiMananger.sharedInstance.updateAccessCode(userId: self.user_id, password: self.getLoginPassword()) {
|
|
result in
|
|
if result != "Error"{
|
|
let uuid = RestApiMananger.sharedInstance.getUUID()
|
|
UserDefaults.standard.set((result + ":" + uuid).toBase64(), forKey: "com.gmeremit.accessCode")
|
|
self.rejectRequest(transactionID: transactionID, transferType: transferType)
|
|
}
|
|
}
|
|
case .logOutUser():
|
|
RestApiMananger.sharedInstance.cancelExistingNetworkCalls()
|
|
self.anotherLogin.value = true
|
|
|
|
case .timeOut:
|
|
self.moneyRequestConnectionTimeOut.value = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|