// // 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 = Box(nil) var reviewConnectionTimeOut: Box = 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 } }