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.

136 lines
5.3 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. //
  2. // LoginViewModel.swift
  3. // GMERemittance
  4. //
  5. // Created by Sujal on 12/12/17.
  6. // Copyright © 2017 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import Foundation
  9. class LoginViewModel: SignUpViewModel, Login {
  10. var loggedin: Box<Bool?> = Box(nil)
  11. var loggedInConnectionTimeOut: Box<Bool?> = Box(nil)
  12. var userId: String?
  13. var pass: String?
  14. var dpUrl: String?
  15. var userName: String?
  16. var fillSignUpCode: Bool = false
  17. }
  18. extension LoginViewModel {
  19. /**
  20. To add user id and password
  21. - parameter userId: account userid
  22. - parameter password: account password
  23. */
  24. func setCredentials(userId: String, password: String) {
  25. self.userId = userId
  26. self.pass = password.toBase64()
  27. }
  28. /**
  29. Validate userid and password
  30. - parameter userId: account userid
  31. - parameter password: account password
  32. */
  33. func checkParams(username: String, password: String) -> isValid {
  34. if (username.isBlank || password.isBlank) {
  35. return .InValid("Please fill all the fields")
  36. } else {
  37. if isNumber(username: username) {
  38. if isValidPhone(phone: username) {
  39. if isValidPasswordLength(password: password) {
  40. return .Valid
  41. } else {
  42. return .InValid("InValid Password Length")
  43. }
  44. }
  45. return .InValid("InValid Phone")
  46. } else {
  47. if isValidEmail(email: username) {
  48. if isValidPasswordLength(password: password) {
  49. return .Valid
  50. } else {
  51. return .InValid("InValid Password Length")
  52. }
  53. }
  54. return .InValid("InValid Email")
  55. }
  56. }
  57. }
  58. /**
  59. Api requesr for Login
  60. */
  61. private func save(value: Any?, forKey: String) {
  62. let defaults = UserDefaults.standard
  63. defaults.set(value, forKey: forKey)
  64. }
  65. func logIn() {
  66. if !Reachability.isConnectedToNetwork() {
  67. self.internetConnection.value = false
  68. } else {
  69. let passwordBase64Data = Data(base64Encoded: pass!)!
  70. let password = String(data: passwordBase64Data, encoding: .utf8)!
  71. self._login(userId: self.userId ?? "", password: password, success: { (user) in
  72. let accessCode = user?.accessCode ?? ""
  73. let uuid = RestApiMananger.sharedInstance.getUUID()
  74. let accessCodeBase64 = accessCode + ":" + uuid.toBase64()
  75. self.save(value: user?.dpUrl ?? "", forKey: UserKeys.dpUrl)
  76. self.save(value: user?.walletNumber ?? "", forKey: UserKeys.walletNumber)
  77. self.save(value: user?.primaryBankName ?? "", forKey: UserKeys.primaryBankName)
  78. let firstName = user?.firstName ?? ""
  79. let middleName = user?.lastName ?? ""
  80. let lastName = user?.lastName ?? ""
  81. let fullName = firstName + " " + middleName + " " + lastName
  82. self.save(value: fullName, forKey: UserKeys.fullName)
  83. self.save(value: accessCodeBase64, forKey: UserKeys.accessCode)
  84. self.save(value: user?.userId ?? "", forKey: UserKeys.userId)
  85. self.save(value: user?.nickName ?? "", forKey: UserKeys.nickName)
  86. self.save(value: user?.availableBalance ?? "", forKey: UserKeys.availableBalance)
  87. self.save(value: user?.rewardPoint ?? "", forKey: UserKeys.rewardPoint)
  88. self.save(value: user?.verified ?? "", forKey: UserKeys.verified)
  89. self.save(value: user?.kyc ?? "", forKey: UserKeys.kyc)
  90. self.save(value: true, forKey: "com.gmeremit.loginStatus")
  91. self.save(value: user?.email ?? "", forKey: UserKeys.email)
  92. self.save(value: user?.mobileNumber ?? "", forKey: UserKeys.mobileNumber)
  93. self.save(value: user?.sourceId ?? "", forKey: UserKeys.sourceId)
  94. self.save(value: password, forKey: "com.gmeremit.password")
  95. self.save(value: user?.isReferred ?? "", forKey: UserKeys.isReferred)
  96. self.save(value: user?.idType ?? "", forKey: UserKeys.idType)
  97. self.save(value: user?.idNumber ?? "", forKey: UserKeys.idNumber)
  98. self.save(value: user?.country ?? "" , forKey: UserKeys.country)
  99. self.save(value: user?.countryCode, forKey: UserKeys.countryCode)
  100. self.save(value: user?.senderId, forKey: UserKeys.senderId)
  101. self.loggedin.value = true
  102. }) { (error) in
  103. self.setErrorMessage(message: error.localizedDescription)
  104. let errorMessage = error.localizedDescription
  105. if errorMessage.contains("is already registered, please click") {
  106. UserDefaults.standard.set(self.userId, forKey: UserKeys.userId)
  107. self.fillSignUpCode = true
  108. }
  109. self.loggedin.value = false
  110. }
  111. }
  112. }
  113. /**
  114. To redirect Code fill up view
  115. - returns: code status
  116. */
  117. func redirectToCodeFillUp() -> Bool {
  118. return fillSignUpCode
  119. }
  120. }