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.

85 lines
2.9 KiB

6 years ago
  1. //
  2. // ReferralCodeViewModel.swift
  3. // GMERemittance
  4. //
  5. // Created by Sujal on 4/20/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import Foundation
  9. class ReferralCodeViewModel: ModelExtension {
  10. var referralCodeValidated: Box<Bool?> = Box(nil)
  11. var referralConnectionTimeOut: Box<Bool?> = Box(nil)
  12. var validReferralCode: String!
  13. let user_id = UserDefaults.standard.object(forKey: "com.gmeremit.username") as? String
  14. var param: [String: String] = [String: String]()
  15. /**
  16. Verification of referral code
  17. - parameter referralCode: referral code
  18. */
  19. func validateReferralCode(referralCode: String) {
  20. let spaceStrippedCode = referralCode.removeSpacesTrailingPreceding()
  21. if isValidReferralCode(code: spaceStrippedCode) {
  22. if !Reachability.isConnectedToNetwork() {
  23. self.internetConnection.value = false
  24. } else {
  25. param["referralCode"] = spaceStrippedCode
  26. RestApiMananger.sharedInstance.validateReferralCode(param: param) { result in
  27. switch result {
  28. case let .success(referralCodeJson):
  29. self.validReferralCode = referralCodeJson["referralCode"].rawString()
  30. self.referralCodeValidated.value = true
  31. case .failure(_):
  32. self.setErrorMessage(message: "Invalid referral code")
  33. self.referralCodeValidated.value = false
  34. case .updateAccessCode:
  35. RestApiMananger.sharedInstance.updateAccessCode(userId: self.user_id!, password: self.getLoginPassword()) {
  36. result in
  37. if result != "Error"{
  38. let uuid = RestApiMananger.sharedInstance.getUUID()
  39. UserDefaults.standard.set((result + ":" + uuid).toBase64(), forKey: "com.gmeremit.accessCode")
  40. self.validateReferralCode(referralCode: referralCode)
  41. }
  42. }
  43. case .logOutUser():
  44. self.anotherLogin.value = true
  45. case .timeOut:
  46. self.referralConnectionTimeOut.value = false
  47. }
  48. }
  49. }
  50. } else {
  51. self.setErrorMessage(message: "Empty referral Code")
  52. self.referralCodeValidated.value = false
  53. }
  54. }
  55. /**
  56. Validation for empty
  57. */
  58. func isValidReferralCode(code: String) -> Bool {
  59. if code.isBlank || code.isEmpty {
  60. return false
  61. }
  62. return true
  63. }
  64. /**
  65. - returns: valid referral code
  66. */
  67. func getValidReferralCode() -> String {
  68. return validReferralCode
  69. }
  70. }