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.
 
 
 
 

85 lines
2.9 KiB

//
// ReferralCodeViewModel.swift
// GMERemittance
//
// Created by Sujal on 4/20/18.
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class ReferralCodeViewModel: ModelExtension {
var referralCodeValidated: Box<Bool?> = Box(nil)
var referralConnectionTimeOut: Box<Bool?> = Box(nil)
var validReferralCode: String!
let user_id = UserDefaults.standard.object(forKey: "com.gmeremit.username") as? String
var param: [String: String] = [String: String]()
/**
Verification of referral code
- parameter referralCode: referral code
*/
func validateReferralCode(referralCode: String) {
let spaceStrippedCode = referralCode.removeSpacesTrailingPreceding()
if isValidReferralCode(code: spaceStrippedCode) {
if !Reachability.isConnectedToNetwork() {
self.internetConnection.value = false
} else {
param["referralCode"] = spaceStrippedCode
RestApiMananger.sharedInstance.validateReferralCode(param: param) { result in
switch result {
case let .success(referralCodeJson):
self.validReferralCode = referralCodeJson["referralCode"].rawString()
self.referralCodeValidated.value = true
case .failure(_):
self.setErrorMessage(message: "Invalid referral code")
self.referralCodeValidated.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.validateReferralCode(referralCode: referralCode)
}
}
case .logOutUser():
self.anotherLogin.value = true
case .timeOut:
self.referralConnectionTimeOut.value = false
}
}
}
} else {
self.setErrorMessage(message: "Empty referral Code")
self.referralCodeValidated.value = false
}
}
/**
Validation for empty
*/
func isValidReferralCode(code: String) -> Bool {
if code.isBlank || code.isEmpty {
return false
}
return true
}
/**
- returns: valid referral code
*/
func getValidReferralCode() -> String {
return validReferralCode
}
}