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

//
// 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
}
}
}
}
}