// // LoginViewModel.swift // GMERemittance // // Created by Sujal on 12/12/17. // Copyright © 2017 Gobal Money Express Co. Ltd. All rights reserved. // import Foundation class LoginViewModel: SignUpViewModel, LoginApiService { var loggedin: Box = Box(nil) var loggedInConnectionTimeOut: Box = Box(nil) var userId: String? var pass: String? var dpUrl: String? var userName: String? var fillSignUpCode: Bool = false } extension LoginViewModel { /** To add user id and password - parameter userId: account userid - parameter password: account password */ func setCredentials(userId: String, password: String) { self.userId = userId self.pass = password.toBase64() } /** Validate userid and password - parameter userId: account userid - parameter password: account password */ func checkParams(username: String, password: String) -> isValid { if (username.isBlank || password.isBlank) { return .InValid("Please fill all the fields") } else { if isNumber(username: username) { if isValidPhone(phone: username) { if isValidPasswordLength(password: password) { return .Valid } else { return .InValid("InValid Password Length") } } return .InValid("InValid Phone") } else { if isValidEmail(email: username) { if isValidPasswordLength(password: password) { return .Valid } else { return .InValid("InValid Password Length") } } return .InValid("InValid Email") } } } /** Api requesr for Login */ private func save(value: Any?, forKey: String) { let defaults = UserDefaults.standard defaults.set(value, forKey: forKey) } func logIn() { if !Reachability.isConnectedToNetwork() { self.internetConnection.value = false } else { let passwordBase64Data = Data(base64Encoded: pass!)! let password = String(data: passwordBase64Data, encoding: .utf8)! self._login(userId: self.userId ?? "", password: password, success: { (user) in let accessCode = user?.accessCode ?? "" let uuid = RestApiMananger.sharedInstance.getUUID() let accessCodeBase64 = accessCode + ":" + uuid.toBase64() self.save(value: user?.dpUrl ?? "", forKey: UserKeys.dpUrl) self.save(value: user?.walletNumber ?? "", forKey: UserKeys.walletNumber) self.save(value: user?.primaryBankName ?? "", forKey: UserKeys.primaryBankName) let firstName = user?.firstName ?? "" let middleName = user?.lastName ?? "" let lastName = user?.lastName ?? "" let fullName = firstName + " " + middleName + " " + lastName self.save(value: fullName, forKey: UserKeys.fullName) self.save(value: accessCodeBase64, forKey: UserKeys.accessCode) self.save(value: user?.userId ?? "", forKey: UserKeys.userId) self.save(value: user?.nickName ?? "", forKey: UserKeys.nickName) self.save(value: user?.availableBalance ?? "", forKey: UserKeys.availableBalance) self.save(value: user?.rewardPoint ?? "", forKey: UserKeys.rewardPoint) self.save(value: user?.verified ?? "", forKey: UserKeys.verified) self.save(value: user?.kyc ?? "", forKey: UserKeys.kyc) self.save(value: true, forKey: "com.gmeremit.loginStatus") self.save(value: user?.email ?? "", forKey: UserKeys.email) self.save(value: user?.mobileNumber ?? "", forKey: UserKeys.mobileNumber) self.save(value: user?.sourceId ?? "", forKey: UserKeys.sourceId) self.save(value: password, forKey: "com.gmeremit.password") self.save(value: user?.isReferred ?? "", forKey: UserKeys.isReferred) self.save(value: user?.idType ?? "", forKey: UserKeys.idType) self.save(value: user?.idNumber ?? "", forKey: UserKeys.idNumber) self.save(value: user?.country ?? "" , forKey: UserKeys.country) self.save(value: user?.countryCode, forKey: UserKeys.countryCode) self.save(value: user?.senderId, forKey: UserKeys.senderId) self.loggedin.value = true }) { (error) in self.setErrorMessage(message: error.localizedDescription) let errorMessage = error.localizedDescription if errorMessage.contains("is already registered, please click") { UserDefaults.standard.set(self.userId, forKey: UserKeys.userId) self.fillSignUpCode = true } self.loggedin.value = false } } } /** To redirect Code fill up view - returns: code status */ func redirectToCodeFillUp() -> Bool { return fillSignUpCode } }