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.

169 lines
6.1 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. //{
  10. // "userId": "ranjan@mailinator.com",
  11. // "firstName": "preyea",
  12. // "middleName": "",
  13. // "lastName": "regmi",
  14. // "nickName": "ranjan",
  15. // "email": "ranjan@mailinator.com",
  16. // "mobileNumber": "9849165388",
  17. // "rewardPoint": "0",
  18. // "walletNumber": "",
  19. // "availableBalance": "0",
  20. // "primaryBankName": "Kwangju Bank(KJ)",
  21. // "accessCode": "7019A90D-79C8-43F3-9093-C099DC4D3DA9",
  22. // "dpUrl": null,
  23. // "kyc": true,
  24. // "verified": true,
  25. // "active": true,
  26. // "cmRegistrationId": "",
  27. // "isReferred": false,
  28. // "country": "South Korea",
  29. // "province": "Andong",
  30. // "provinceId": "1",
  31. // "sourceId": "3901",
  32. // "idType": "10997",
  33. // "idNumber": "12554",
  34. // "countryCode": "NP",
  35. // "ErrorCode": "0",
  36. // "Msg": "",
  37. // "Id": "",
  38. // "Data": null
  39. //}
  40. class LoginViewModel: SignUpViewModel, Login {
  41. var loggedin: Box<Bool?> = Box(nil)
  42. var loggedInConnectionTimeOut: Box<Bool?> = Box(nil)
  43. var userId: String?
  44. var pass: String?
  45. var dpUrl: String?
  46. var userName: String?
  47. var fillSignUpCode: Bool = false
  48. }
  49. extension LoginViewModel {
  50. /**
  51. To add user id and password
  52. - parameter userId: account userid
  53. - parameter password: account password
  54. */
  55. func setCredentials(userId: String, password: String) {
  56. self.userId = userId
  57. self.pass = password.toBase64()
  58. }
  59. /**
  60. Validate userid and password
  61. - parameter userId: account userid
  62. - parameter password: account password
  63. */
  64. func checkParams(username: String, password: String) -> isValid {
  65. if (username.isBlank || password.isBlank) {
  66. return .InValid("Please fill all the fields")
  67. } else {
  68. if isNumber(username: username) {
  69. if isValidPhone(phone: username) {
  70. if isValidPasswordLength(password: password) {
  71. return .Valid
  72. } else {
  73. return .InValid("InValid Password Length")
  74. }
  75. }
  76. return .InValid("InValid Phone")
  77. } else {
  78. if isValidEmail(email: username) {
  79. if isValidPasswordLength(password: password) {
  80. return .Valid
  81. } else {
  82. return .InValid("InValid Password Length")
  83. }
  84. }
  85. return .InValid("InValid Email")
  86. }
  87. }
  88. }
  89. /**
  90. Api requesr for Login
  91. */
  92. private func save(value: Any?, forKey: String) {
  93. let defaults = UserDefaults.standard
  94. defaults.set(value, forKey: forKey)
  95. }
  96. func logIn() {
  97. if !Reachability.isConnectedToNetwork() {
  98. self.internetConnection.value = false
  99. } else {
  100. let passwordBase64Data = Data(base64Encoded: pass!)!
  101. let password = String(data: passwordBase64Data, encoding: .utf8)!
  102. self._login(userId: self.userId ?? "", password: password, success: { (user) in
  103. let accessCode = user?.accessCode ?? ""
  104. let uuid = RestApiMananger.sharedInstance.getUUID()
  105. let accessCodeBase64 = accessCode + ":" + uuid.toBase64()
  106. self.save(value: user?.dpUrl ?? "", forKey: UserKeys.dpUrl)
  107. self.save(value: user?.walletNumber ?? "", forKey: UserKeys.walletNumber)
  108. self.save(value: user?.primaryBankName ?? "", forKey: UserKeys.primaryBankName)
  109. let firstName = user?.firstName ?? ""
  110. let middleName = user?.lastName ?? ""
  111. let lastName = user?.lastName ?? ""
  112. let fullName = firstName + " " + middleName + " " + lastName
  113. self.save(value: fullName, forKey: UserKeys.fullName)
  114. self.save(value: accessCodeBase64, forKey: UserKeys.accessCode)
  115. self.save(value: user?.userId ?? "", forKey: UserKeys.userId)
  116. self.save(value: user?.nickName ?? "", forKey: UserKeys.nickName)
  117. self.save(value: user?.availableBalance ?? "", forKey: UserKeys.availableBalance)
  118. self.save(value: user?.rewardPoint ?? "", forKey: UserKeys.rewardPoint)
  119. self.save(value: user?.verified ?? "", forKey: UserKeys.verified)
  120. self.save(value: user?.kyc ?? "", forKey: UserKeys.kyc)
  121. self.save(value: true, forKey: "com.gmeremit.loginStatus")
  122. self.save(value: user?.email ?? "", forKey: UserKeys.email)
  123. self.save(value: user?.mobileNumber ?? "", forKey: UserKeys.mobileNumber)
  124. self.save(value: user?.sourceId ?? "", forKey: UserKeys.sourceId)
  125. self.save(value: password, forKey: "com.gmeremit.password")
  126. self.save(value: user?.isReferred ?? "", forKey: UserKeys.isReferred)
  127. self.save(value: user?.idType ?? "", forKey: UserKeys.idType)
  128. self.save(value: user?.idNumber ?? "", forKey: UserKeys.idNumber)
  129. self.save(value: user?.country ?? "" , forKey: UserKeys.country)
  130. self.save(value: user?.countryCode, forKey: UserKeys.countryCode)
  131. self.save(value: user?.senderId, forKey: UserKeys.senderId)
  132. self.loggedin.value = true
  133. }) { (error) in
  134. self.setErrorMessage(message: error.localizedDescription)
  135. let errorMessage = error.localizedDescription
  136. if errorMessage.contains("is already registered, please click") {
  137. UserDefaults.standard.set(self.userId, forKey: UserKeys.userId)
  138. self.fillSignUpCode = true
  139. }
  140. self.loggedin.value = false
  141. }
  142. }
  143. }
  144. /**
  145. To redirect Code fill up view
  146. - returns: code status
  147. */
  148. func redirectToCodeFillUp() -> Bool {
  149. return fillSignUpCode
  150. }
  151. }