// // UploadImageViewModel.swift // GMERemittance // // Created by Sujal on 4/24/18. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // import Foundation class UploadImageViewModel: ModelExtension { var isImageSubmitted: Box = Box(nil) var uploadImageConnectionTimeOut: Box = Box(nil) let userId = UserDefaults.standard.object(forKey: "com.gmeremit.username") as! String /** To upload image file - parameter docType: image of document type - parameter imageBase64: Image data */ func uploadProfileImage(docType: String, imageBase64: String){ if !Reachability.isConnectedToNetwork() { self.internetConnection.value = false } else { let docParam = ["documentType": docType, "file": imageBase64] RestApiMananger.sharedInstance.submitDocument(param: docParam, userId: userId) { result in switch result { case let .success(documentJSON): self.submitUserProfileImage(imageUrl: documentJSON["documentUrl"].stringValue) case let .failure(errorJSON): self.setErrorMessage(message: errorJSON["message"].stringValue) self.isImageSubmitted.value = false return case .updateAccessCode: RestApiMananger.sharedInstance.updateAccessCode(userId: self.userId, password: self.getLoginPassword()) { result in if result != "Error"{ let uuid = RestApiMananger.sharedInstance.getUUID() UserDefaults.standard.set((result + ":" + uuid).toBase64(), forKey: "com.gmeremit.accessCode") self.uploadProfileImage(docType: docType, imageBase64: imageBase64) } } case .logOutUser(): RestApiMananger.sharedInstance.cancelExistingNetworkCalls() self.anotherLogin.value = true case .timeOut: self.uploadImageConnectionTimeOut.value = false } } } } /** To submit image url - parameter imageUrl: url */ func submitUserProfileImage(imageUrl: String){ if !Reachability.isConnectedToNetwork() { self.internetConnection.value = false } else{ let param = ["dpUrl": imageUrl] RestApiMananger.sharedInstance.updateUserDetail (userId: userId, param: param) { result in switch result { case let .success(documentJSON): self.isImageSubmitted.value = true UserDefaults.standard.set(documentJSON["dpUrl"].stringValue, forKey: "com.gmeremit.dpUrl") case let .failure(errorJSON): self.setErrorMessage(message: errorJSON["message"].stringValue) self.isImageSubmitted.value = false return case .updateAccessCode: RestApiMananger.sharedInstance.updateAccessCode(userId: self.userId, password: self.getLoginPassword()) { result in if result != "Error"{ let uuid = RestApiMananger.sharedInstance.getUUID() UserDefaults.standard.set((result + ":" + uuid).toBase64(), forKey: "com.gmeremit.accessCode") self.submitUserProfileImage(imageUrl: imageUrl) } } case .logOutUser(): RestApiMananger.sharedInstance.cancelExistingNetworkCalls() self.anotherLogin.value = true case .timeOut: self.uploadImageConnectionTimeOut.value = false } } } } }