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
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|