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
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
|
|
}
|
|
}
|