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.
 
 
 
 

136 lines
5.3 KiB

//
// 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, Login {
var loggedin: Box<Bool?> = Box(nil)
var loggedInConnectionTimeOut: Box<Bool?> = 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
}
}