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.
 
 
 
 

79 lines
2.9 KiB

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