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.
139 lines
4.0 KiB
139 lines
4.0 KiB
//
|
|
// FillSignUpCodeViewModel.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by Sujal on 12/11/17.
|
|
// Copyright © 2017 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
class FillCodeViewModel: ModelExtension {
|
|
|
|
private let codeLength: Int = 4
|
|
var userId: String?
|
|
var signupCode: String?
|
|
var recoveryType: String?
|
|
|
|
var authenticated: Box<Bool?> = Box(nil)
|
|
var fillCodeConnectionTimeOut: Box<Bool?> = Box(nil)
|
|
|
|
var user_id = UserDefaults.standard.object(forKey: "com.gmeremit.username") as? String
|
|
}
|
|
|
|
extension FillCodeViewModel {
|
|
|
|
/**
|
|
To set the code for sign up
|
|
- parameter code: secure code
|
|
*/
|
|
func setCode(code: String) {
|
|
signupCode = code
|
|
}
|
|
|
|
/**
|
|
To set the user id for sign up
|
|
- parameter userId: userId
|
|
*/
|
|
func setUserId(userId: String) {
|
|
self.userId = userId
|
|
}
|
|
|
|
/**
|
|
To set the recoveryType for sign up
|
|
- parameter recoveryType: password or device
|
|
*/
|
|
func setRecoveryType(recoveryType: String) {
|
|
self.recoveryType = recoveryType
|
|
}
|
|
|
|
/**
|
|
To check length of code for sign up
|
|
- returns: Bool
|
|
*/
|
|
func checkCodeLength() -> isValid {
|
|
|
|
guard signupCode?.count == codeLength else {
|
|
return .InValid("Code is incomplete")
|
|
}
|
|
return .Valid
|
|
}
|
|
}
|
|
|
|
extension FillCodeViewModel {
|
|
|
|
/**
|
|
Api request fot code validation
|
|
*/
|
|
func authenticate() {
|
|
if !Reachability.isConnectedToNetwork() {
|
|
self.internetConnection.value = false
|
|
} else {
|
|
RestApiMananger.sharedInstance.authenticateUser(code: signupCode!, userId: self.userId!) { result in
|
|
switch result {
|
|
case .success(_):
|
|
self.authenticated.value = true
|
|
case let .failure(errorJSON):
|
|
self.setErrorMessage(message: errorJSON["message"].stringValue)
|
|
self.authenticated.value = false
|
|
case .updateAccessCode:
|
|
return
|
|
case .logOutUser():
|
|
return
|
|
case .timeOut:
|
|
self.fillCodeConnectionTimeOut.value = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
Api request to change password
|
|
*/
|
|
func enablePasswordChange() {
|
|
if !Reachability.isConnectedToNetwork() {
|
|
self.internetConnection.value = false
|
|
} else {
|
|
RestApiMananger.sharedInstance.reAuthenticateUser(code: signupCode!, userId: self.userId!) { result in
|
|
switch result {
|
|
case .success(_):
|
|
self.authenticated.value = true
|
|
case let .failure(errorJSON):
|
|
self.setErrorMessage(message: errorJSON["message"].stringValue)
|
|
self.authenticated.value = false
|
|
case .updateAccessCode:
|
|
return
|
|
case .logOutUser():
|
|
return
|
|
case .timeOut:
|
|
self.fillCodeConnectionTimeOut.value = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
Api request for signup code
|
|
*/
|
|
func requestCode() {
|
|
if !Reachability.isConnectedToNetwork() {
|
|
self.internetConnection.value = false
|
|
} else {
|
|
RestApiMananger.sharedInstance.requestAnotherCode(type: self.recoveryType!, userId: self.userId!) { result in
|
|
switch result {
|
|
case .success(_):
|
|
self.authenticated.value = nil
|
|
case let .failure(errorJSON):
|
|
self.setErrorMessage(message: errorJSON["message"].stringValue)
|
|
self.authenticated.value = nil
|
|
case .updateAccessCode:
|
|
return
|
|
case .logOutUser():
|
|
return
|
|
case .timeOut:
|
|
self.fillCodeConnectionTimeOut.value = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|