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