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