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.
 
 
 
 

96 lines
3.9 KiB

//
// 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<Bool?> = Box(nil)
var uploadImageConnectionTimeOut: Box<Bool?> = 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
}
}
}
}
}