// // WithdrawViewModel.swift // GMERemittance // // Created by Sujal on 2/13/18. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // import Foundation class WithdrawViewModel: ModelExtension { var amount: String! var reason: String! var requestProcessed: Box = Box(nil) var withdrawConnectionTimeOut: Box = Box(nil) let user_id = UserDefaults.standard.object(forKey: "com.gmeremit.username") as? String /** To check validation for withdraw */ func validateAmountandReason() -> isValid { if amount.isBlank || reason.isBlank || reason == "Reason for withdraw" { return .InValid("Please fill all the fields") } return .Valid } /** To set amount and reason - parametet amount: withdraw amount - parameter reason: reason for withdraw */ func setParam(amount: String, reason: String) { self.amount = amount.removeSpacesTrailingPreceding() self.reason = reason.removeSpacesTrailingPreceding() } /** To request for withdraw - parametet password: to comfirm with request user should type account password */ func sendWithdrawRequest(password: String) { let passwordLocal = password let userId = UserDefaults.standard.object(forKey: "com.gmeremit.username") as? String let params: [String: String] = ["userId": userId!, "amount": amount, "reason": reason, "txnpassword": password] if !Reachability.isConnectedToNetwork() { self.internetConnection.value = false } else { RestApiMananger.sharedInstance.withdrawBalance(requestDetails: params) { result in switch result { case .success(_): self.requestProcessed.value = true case let .failure(errorJSON): self.setErrorMessage(message: errorJSON["message"].stringValue) self.requestProcessed.value = false case .updateAccessCode: 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.sendWithdrawRequest(password: passwordLocal) } } case .logOutUser(): RestApiMananger.sharedInstance.cancelExistingNetworkCalls() self.anotherLogin.value = true case .timeOut: self.withdrawConnectionTimeOut.value = false } } } } }