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