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.
|
|
// // UserInfoViewModel.swift // GMERemittance // // Created by FMI-12 on 1/30/18. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. //
import Foundation
class UserInfoViewModel: ModelExtension { var userDataAvailable:Box<Bool?> = Box(nil) var userOccupationProvinceAvailable:Box<Int?> = Box(nil) // -1 = handle keypad when user is auto logout, 0 = Error, 5 = Occupation, 3 = Province var userSourceFundAvailable:Box<Bool?> = Box(nil) var userConnectionTimeOut: Box<Bool?> = Box(nil) private var cddOccupationList: [String] = [String] () private var cddOccupationValueList: [String] = [String] () private var cddSourceFundList: [String] = [String] () private var cddSourceFundValueList: [String] = [String] () private var cddProvinceList: [String] = [String] () private var cddProvinceValueList: [String] = [String] () private var userInfo = KYCModel()
let user_id = UserDefaults.standard.object(forKey: "com.gmeremit.username") as? String
/**
APi request for user information */ func fetchUserInfo() { if !Reachability.isConnectedToNetwork() { self.internetConnection.value = false } else { RestApiMananger.sharedInstance.fetchUserInfoFromKyc(userId: user_id!) { result in switch result { case let .success(fetchedJSON): guard fetchedJSON.count > 0 else { self.userDataAvailable.value = false return } do { self.userInfo = try JSONDecoder().decode(KYCModel.self, from: fetchedJSON.rawData()) self.userDataAvailable.value = true } catch { self.userDataAvailable.value = false } case let .failure(errorJSON): self.setErrorMessage(message: errorJSON["message"].stringValue) self.userDataAvailable.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.fetchUserInfo() } } case .logOutUser(): RestApiMananger.sharedInstance.cancelExistingNetworkCalls() self.anotherLogin.value = true case .timeOut: self.userConnectionTimeOut.value = false } } } } /**
APi Request to update userINfo - parameter param: user info in Dictionary */ func updateUserInfo(param: [String: String]) { if !Reachability.isConnectedToNetwork() { self.internetConnection.value = false } else { RestApiMananger.sharedInstance.updateUserInfoForKyc(userId: getUserId(), parameter: param) { result in switch result { case .success(_): self.userDataAvailable.value = true self.userDataAvailable.value = nil case let .failure(errorJSON): self.setErrorMessage(message: errorJSON["message"].stringValue) self.userDataAvailable.value = false self.userDataAvailable.value = nil 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.updateUserInfo(param: param) } } case .logOutUser(): RestApiMananger.sharedInstance.cancelExistingNetworkCalls() self.anotherLogin.value = true case .timeOut: self.userConnectionTimeOut.value = false } } } } /**
Api request for CddList value - parameter cddName: Type of cddName - parameter param: [:] */ func fetchCDDList(cddName: String, param: [String: String]?) { let cdd_name = cddName if !Reachability.isConnectedToNetwork() { self.internetConnection.value = false } else { RestApiMananger.sharedInstance.getCDDListFor(cddCode: cddName, param: param) { result in switch result { case let .success(cddJSON): switch cddName { case cddCode.Occupation.rawValue: self.cddOccupationList.removeAll() self.cddOccupationValueList.removeAll() case cddCode.SourceFund.rawValue: self.cddSourceFundList.removeAll() self.cddSourceFundValueList.removeAll() case cddCode.Province.rawValue: self.cddProvinceList.removeAll() self.cddProvinceValueList.removeAll() default: return } if cddJSON.count > 0 { for i in 0 ... (cddJSON.count-1) { do { let cddNameValuePair = try JSONDecoder().decode(Cdd.self, from: cddJSON[i].rawData()) switch cddName { case cddCode.Occupation.rawValue: self.cddOccupationList.append(cddNameValuePair.name) self.cddOccupationValueList.append(cddNameValuePair.value) case cddCode.SourceFund.rawValue: self.cddSourceFundList.append(cddNameValuePair.name) self.cddSourceFundValueList.append(cddNameValuePair.value) case cddCode.Province.rawValue: self.cddProvinceList.append(cddNameValuePair.name) self.cddProvinceValueList.append(cddNameValuePair.value) default: return } } catch { switch cddName { case cddCode.Occupation.rawValue: self.userOccupationProvinceAvailable.value = 0 case cddCode.SourceFund.rawValue: self.userSourceFundAvailable.value = false default: return } break } } } switch cddName { case cddCode.Occupation.rawValue: self.userOccupationProvinceAvailable.value = 5 case cddCode.Province.rawValue: self.userOccupationProvinceAvailable.value = 3 case cddCode.SourceFund.rawValue: self.userSourceFundAvailable.value = true default: return } case .failure(_): switch cddName { case cddCode.Occupation.rawValue: self.userOccupationProvinceAvailable.value = 0 case cddCode.SourceFund.rawValue: self.userSourceFundAvailable.value = false default: return } return 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.fetchCDDList(cddName: cdd_name, param: param) } } case .logOutUser(): self.userOccupationProvinceAvailable.value = -1 self.userSourceFundAvailable.value = nil RestApiMananger.sharedInstance.cancelExistingNetworkCalls() self.anotherLogin.value = true case .timeOut: self.userConnectionTimeOut.value = false } } } } /**
To get occupation List - returns: occupation list */ func getOccupationList() -> [String] { return cddOccupationList } /**
- parameter index: position of occupation in an array - returns: occupation */
func getOccupationID(index: Int) -> String { return cddOccupationValueList[index] } /**
To get province List - returns: privince list */ func getProvinceList() -> [String] { return cddProvinceList } /**
- parameter index: position of province in an array - returns: province */
func getProvinceID(index: Int) -> String { return cddProvinceValueList[index] } /**
To get source fund List - returns: source fund list */ func getSourceFundList() -> [String] { return cddSourceFundList } /**
- parameter index: position of source fund in an array - returns: source fund */
func getSourceFundID(index: Int) -> String { return cddSourceFundValueList[index] } /**
To get user info - returns: user info */ func getInfo() -> KYCModel { return userInfo } /**
To get address - returns: address */ func getAddress() -> String { return ""// userInfo.address + ", " + userInfo.city } /**
To get data array - returns: empty array */ func getEmptyData() -> [String] { return [String]() } }
|