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.

81 lines
2.9 KiB

6 years ago
  1. //
  2. // ReviewViewModel.swift
  3. // GMERemittance
  4. //
  5. // Created by Sujal on 1/19/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import Foundation
  9. class ReviewViewModel: ModelExtension {
  10. var successfulTransfer: Box<Bool?> = Box(nil)
  11. var reviewConnectionTimeOut: Box<Bool?> = Box(nil)
  12. private var transferDetails: [String: String] = [String: String]()
  13. private var responseDetails: [String: Any] = [String: String]()
  14. let userId = UserDefaults.standard.object(forKey: "com.gmeremit.username") as? String
  15. /**
  16. TO SET TRANSFER DETAIL
  17. - returns: transferDetails
  18. */
  19. func setTransferDetails(transferDetails: [String: String]) {
  20. self.transferDetails = transferDetails
  21. }
  22. /**
  23. To set password to transferDetails
  24. - parameter userPassword: user password
  25. */
  26. func finalizeTransferDetails(userPassword: String) {
  27. transferDetails["txnpassword"] = userPassword
  28. }
  29. /// To permorf transfer
  30. func performTransfer() {
  31. if !Reachability.isConnectedToNetwork() {
  32. self.internetConnection.value = false
  33. } else {
  34. RestApiMananger.sharedInstance.performTransfer(parameters: transferDetails) { result in
  35. switch result {
  36. case let .success(transferJSON):
  37. if let dict = transferJSON.dictionaryObject {
  38. self.responseDetails = dict
  39. }
  40. UserDefaults.standard.set(transferJSON["availableBalance"].stringValue, forKey: "com.gmeremit.balance")
  41. self.successfulTransfer.value = true
  42. case let .failure(errorJSON):
  43. self.setErrorMessage(message: errorJSON["message"].stringValue)
  44. self.successfulTransfer.value = false
  45. case .updateAccessCode:
  46. RestApiMananger.sharedInstance.updateAccessCode(userId: self.userId!, password: self.getLoginPassword()) {
  47. result in
  48. if result != "Error"{
  49. let uuid = RestApiMananger.sharedInstance.getUUID()
  50. UserDefaults.standard.set((result + ":" + uuid).toBase64(), forKey: "com.gmeremit.accessCode")
  51. self.performTransfer()
  52. }
  53. }
  54. case .logOutUser():
  55. RestApiMananger.sharedInstance.cancelExistingNetworkCalls()
  56. self.anotherLogin.value = true
  57. case .timeOut:
  58. self.reviewConnectionTimeOut.value = false
  59. }
  60. }
  61. }
  62. }
  63. /**
  64. To get response detail
  65. - returns: responseDetails
  66. */
  67. func getResponseDetails() -> [String: Any] {
  68. return responseDetails
  69. }
  70. }