// // 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 = Box(nil) var oldPassword: String! var newPassword: String! var confirmPassword: String! var passwordConnectionTimeOut: Box = 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 } } } } }