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.
 
 
 
 

113 lines
3.9 KiB

//
// MessageViewModel.swift
// GMERemittance
//
// Created by Sujal on 2/12/18.
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class MessageViewModel: ModelExtension {
var subject: String!
var message: String!
var supportType: String!
var controlNumber: String?
var messageSubmitted: Box<Bool?> = Box(nil)
var messageSubmittedConnectionTimeOut: Box<Bool?> = Box(nil)
let userId = UserDefaults.standard.object(forKey: "com.gmeremit.username") as? String
func setSupportType(supportType: String) {
self.supportType = supportType
}
/**
Validation of empty field
- returns: isValid
*/
func validateFields(supportIndex: Int) -> isValid {
if supportIndex == 1 {
if subject.isBlank || message.isBlank || controlNumber!.isBlank || message == "Amendment Request" {
return .InValid("Please fill all the fields")
}
return .Valid
} else {
if subject.isBlank || message.isBlank || message == "Message" || message == "Suggestions/ Feedback" {
return .InValid("Please fill all the fields")
}
return .Valid
}
}
/**
To set text value
- parameter subject: Subject about request
- parameter message: request messae
- parameter controlNumber: number
*/
func setParam(subject: String, message: String, controlNumber: String) {
self.subject = subject.removeSpacesTrailingPreceding()
self.message = message.removeSpacesTrailingPreceding()
self.controlNumber = controlNumber.removeSpacesTrailingPreceding()
}
/**
To get requested message
- parameter supportIndex: position to determine which type of message request
- returns: request information in dictionary format
*/
func getParam (supportIndex: Int) -> [String: String] {
if supportIndex == 1 {
return ["subject": subject,
"reason": message,
"userId": getUserId(),
"gmeControlNumber": controlNumber!,
"supportType": supportType]
} else {
return ["subject": subject,
"message": message,
"userId": getUserId(),
"supportType": supportType]
}
}
/**
To submit meaasge
- parameter supportIndex: position to determine which type of message request
*/
func submitMessage(supportIndex: Int) {
let support_index = supportIndex
if !Reachability.isConnectedToNetwork() {
self.internetConnection.value = false
} else {
RestApiMananger.sharedInstance.submitMessage(supportIndex: supportIndex, param: getParam(supportIndex: supportIndex)) { result in
switch result {
case .success(_):
self.messageSubmitted.value = true
case let .failure(errorJSON):
self.setErrorMessage(message: errorJSON["message"].stringValue)
self.messageSubmitted.value = false
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.submitMessage(supportIndex: support_index)
}
}
case .logOutUser():
RestApiMananger.sharedInstance.cancelExistingNetworkCalls()
self.anotherLogin.value = true
case .timeOut:
self.messageSubmittedConnectionTimeOut.value = false
}
}
}
}
}