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

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