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.
93 lines
3.2 KiB
93 lines
3.2 KiB
//
|
|
// ChangePasswordViewModel.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by Sujal on 2/18/18.
|
|
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
class ChangePasswordViewModel: SignUpViewModel {
|
|
var passwordChanged: Box<Bool?> = Box(nil)
|
|
var oldPassword: String!
|
|
var newPassword: String!
|
|
var confirmPassword: String!
|
|
|
|
var passwordConnectionTimeOut: Box<Bool?> = Box(nil)
|
|
}
|
|
|
|
extension ChangePasswordViewModel {
|
|
|
|
/**
|
|
to update old password
|
|
*/
|
|
func updateOldPassword(inputString: String) {
|
|
self.oldPassword = inputString
|
|
}
|
|
|
|
/**
|
|
to update new password
|
|
*/
|
|
func updateNewPassword(inputString: String) {
|
|
self.newPassword = inputString
|
|
}
|
|
|
|
/**
|
|
to confrim new password
|
|
*/
|
|
func updateConfirmPassword(inputString: String) {
|
|
self.confirmPassword = inputString
|
|
}
|
|
|
|
/**
|
|
to validate empty textfield
|
|
*/
|
|
func validateFields() -> isValid {
|
|
guard oldPassword != nil && newPassword != nil && confirmPassword != nil else {
|
|
return .InValid("Please fill all the fields")
|
|
}
|
|
guard isValidPasswordLength(password: oldPassword) && isValidPasswordLength(password: newPassword) && isValidPasswordLength(password: confirmPassword) else {
|
|
return .InValid("Password lengths do not match the minimum criteria")
|
|
}
|
|
guard confirmPassword == newPassword else {
|
|
return .InValid("Passwords do not match")
|
|
}
|
|
return .Valid
|
|
}
|
|
|
|
/**
|
|
Api request to change password
|
|
*/
|
|
func requestPasswordChanges() {
|
|
let userId: String = UserDefaults.standard.object(forKey: "com.gmeremit.username") as! String
|
|
if !Reachability.isConnectedToNetwork() {
|
|
self.internetConnection.value = false
|
|
} else {
|
|
RestApiMananger.sharedInstance.changePassword(userId: userId, currentPassword: oldPassword, newPassword: newPassword) { result in
|
|
switch result {
|
|
case .success(_):
|
|
UserDefaults.standard.set(self.newPassword.toBase64(), forKey: "com.gmeremit.password")
|
|
self.passwordChanged.value = true
|
|
case let .failure(errorJSON):
|
|
self.setErrorMessage(message: errorJSON["message"].stringValue)
|
|
self.passwordChanged.value = false
|
|
case .updateAccessCode:
|
|
RestApiMananger.sharedInstance.updateAccessCode(userId: userId, password: self.password!) {
|
|
result in
|
|
if result != "Error"{
|
|
let uuid = RestApiMananger.sharedInstance.getUUID()
|
|
UserDefaults.standard.set((result + ":" + uuid).toBase64(), forKey: "com.gmeremit.accessCode")
|
|
self.requestPasswordChanges()
|
|
}
|
|
}
|
|
case .logOutUser():
|
|
RestApiMananger.sharedInstance.cancelExistingNetworkCalls()
|
|
self.anotherLogin.value = true
|
|
case .timeOut:
|
|
self.passwordConnectionTimeOut.value = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|