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

6 years ago
  1. //
  2. // MessageViewModel.swift
  3. // GMERemittance
  4. //
  5. // Created by Sujal on 2/12/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import Foundation
  9. class MessageViewModel: ModelExtension {
  10. var subject: String!
  11. var message: String!
  12. var supportType: String!
  13. var controlNumber: String?
  14. var messageSubmitted: Box<Bool?> = Box(nil)
  15. var messageSubmittedConnectionTimeOut: Box<Bool?> = Box(nil)
  16. let userId = UserDefaults.standard.object(forKey: "com.gmeremit.username") as? String
  17. func setSupportType(supportType: String) {
  18. self.supportType = supportType
  19. }
  20. /**
  21. Validation of empty field
  22. - returns: isValid
  23. */
  24. func validateFields(supportIndex: Int) -> isValid {
  25. if supportIndex == 1 {
  26. if subject.isBlank || message.isBlank || controlNumber!.isBlank || message == "Amendment Request" {
  27. return .InValid("Please fill all the fields")
  28. }
  29. return .Valid
  30. } else {
  31. if subject.isBlank || message.isBlank || message == "Message" || message == "Suggestions/ Feedback" {
  32. return .InValid("Please fill all the fields")
  33. }
  34. return .Valid
  35. }
  36. }
  37. /**
  38. To set text value
  39. - parameter subject: Subject about request
  40. - parameter message: request messae
  41. - parameter controlNumber: number
  42. */
  43. func setParam(subject: String, message: String, controlNumber: String) {
  44. self.subject = subject.removeSpacesTrailingPreceding()
  45. self.message = message.removeSpacesTrailingPreceding()
  46. self.controlNumber = controlNumber.removeSpacesTrailingPreceding()
  47. }
  48. /**
  49. To get requested message
  50. - parameter supportIndex: position to determine which type of message request
  51. - returns: request information in dictionary format
  52. */
  53. func getParam (supportIndex: Int) -> [String: String] {
  54. if supportIndex == 1 {
  55. return ["subject": subject,
  56. "reason": message,
  57. "userId": getUserId(),
  58. "gmeControlNumber": controlNumber!,
  59. "supportType": supportType]
  60. } else {
  61. return ["subject": subject,
  62. "message": message,
  63. "userId": getUserId(),
  64. "supportType": supportType]
  65. }
  66. }
  67. /**
  68. To submit meaasge
  69. - parameter supportIndex: position to determine which type of message request
  70. */
  71. func submitMessage(supportIndex: Int) {
  72. let support_index = supportIndex
  73. if !Reachability.isConnectedToNetwork() {
  74. self.internetConnection.value = false
  75. } else {
  76. RestApiMananger.sharedInstance.submitMessage(supportIndex: supportIndex, param: getParam(supportIndex: supportIndex)) { result in
  77. switch result {
  78. case .success(_):
  79. self.messageSubmitted.value = true
  80. case let .failure(errorJSON):
  81. self.setErrorMessage(message: errorJSON["message"].stringValue)
  82. self.messageSubmitted.value = false
  83. case .updateAccessCode:
  84. RestApiMananger.sharedInstance.updateAccessCode(userId: self.userId!, password: self.getLoginPassword()) {
  85. result in
  86. if result != "Error"{
  87. let uuid = RestApiMananger.sharedInstance.getUUID()
  88. UserDefaults.standard.set((result + ":" + uuid).toBase64(), forKey: "com.gmeremit.accessCode")
  89. self.submitMessage(supportIndex: support_index)
  90. }
  91. }
  92. case .logOutUser():
  93. RestApiMananger.sharedInstance.cancelExistingNetworkCalls()
  94. self.anotherLogin.value = true
  95. case .timeOut:
  96. self.messageSubmittedConnectionTimeOut.value = false
  97. }
  98. }
  99. }
  100. }
  101. }