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.
 
 
 
 

81 lines
2.9 KiB

//
// ReviewViewModel.swift
// GMERemittance
//
// Created by Sujal on 1/19/18.
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class ReviewViewModel: ModelExtension {
var successfulTransfer: Box<Bool?> = Box(nil)
var reviewConnectionTimeOut: Box<Bool?> = Box(nil)
private var transferDetails: [String: String] = [String: String]()
private var responseDetails: [String: Any] = [String: String]()
let userId = UserDefaults.standard.object(forKey: "com.gmeremit.username") as? String
/**
TO SET TRANSFER DETAIL
- returns: transferDetails
*/
func setTransferDetails(transferDetails: [String: String]) {
self.transferDetails = transferDetails
}
/**
To set password to transferDetails
- parameter userPassword: user password
*/
func finalizeTransferDetails(userPassword: String) {
transferDetails["txnpassword"] = userPassword
}
/// To permorf transfer
func performTransfer() {
if !Reachability.isConnectedToNetwork() {
self.internetConnection.value = false
} else {
RestApiMananger.sharedInstance.performTransfer(parameters: transferDetails) { result in
switch result {
case let .success(transferJSON):
if let dict = transferJSON.dictionaryObject {
self.responseDetails = dict
}
UserDefaults.standard.set(transferJSON["availableBalance"].stringValue, forKey: "com.gmeremit.balance")
self.successfulTransfer.value = true
case let .failure(errorJSON):
self.setErrorMessage(message: errorJSON["message"].stringValue)
self.successfulTransfer.value = false
case .updateAccessCode:
RestApiMananger.sharedInstance.updateAccessCode(userId: self.userId!, password: self.getLoginPassword()) {
result in
if result != "Error"{
let uuid = RestApiMananger.sharedInstance.getUUID()
UserDefaults.standard.set((result + ":" + uuid).toBase64(), forKey: "com.gmeremit.accessCode")
self.performTransfer()
}
}
case .logOutUser():
RestApiMananger.sharedInstance.cancelExistingNetworkCalls()
self.anotherLogin.value = true
case .timeOut:
self.reviewConnectionTimeOut.value = false
}
}
}
}
/**
To get response detail
- returns: responseDetails
*/
func getResponseDetails() -> [String: Any] {
return responseDetails
}
}