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.

273 lines
10 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. //
  2. // AppConstants.swift
  3. // GMERemittance
  4. //
  5. // Created by gme_2 on 10/09/2018.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import Foundation
  9. class AppConstants {
  10. static let uuid = "uuid"
  11. static let dateFormat = "yyyy-MM-dd"
  12. static let humanReadableDateFormat = "MMM d, yyyy"
  13. static let errorBorderWidth: CGFloat = 0.1
  14. static let themeRedColor = UIColor.init(hex: "#ed1b24")
  15. static let themeDarkRedColor = UIColor.init(hex: "#be0007")
  16. static let themeBlueColor = UIColor.init(hex: "#303e9f") // 2D368F
  17. static let themWhiteColor = UIColor.init(hex: "#ffffff")
  18. static let emergencyLogoutErrorCode = -1111
  19. static let maxKoreanMobileNoLength = 11
  20. static let MainWireFrameNotificationName = "MainViewControllerSelect"
  21. static let pennyTestServerMessage = "pennyTestServerMessage"
  22. static let pennyTestStatusCode = "pennyTestStatusCode"
  23. static let pennyTestRequested = "pennyTestRequested"
  24. static let pennyTestPresentedOnce = "pennyTestPresentedOnce"
  25. static let criticalUpdate = "criticalUpdate"
  26. static let primaryBankWArningMessage = "Please verify your primary bank account to complete the registration."
  27. static let yearlyLimitNotification = "Yearly LImit"
  28. }
  29. enum Devices {
  30. case iphone5
  31. case iphone678
  32. case iphone678Plus
  33. case iphoneX
  34. case ipad
  35. case other
  36. }
  37. //pennyTestStatus='0'-----0 not started, 1 requested , 2 completed
  38. enum PennyTestStatusCode: String {
  39. case notStarted = "0"
  40. case requested = "1"
  41. case completed = "2"
  42. case cancelled = "3"
  43. }
  44. class Utility {
  45. static func getDeviceModel() -> Devices {
  46. if UIDevice().userInterfaceIdiom == .phone {
  47. switch UIScreen.main.nativeBounds.height {
  48. case 1136:
  49. return .iphone5
  50. case 1334:
  51. return .iphone678
  52. case 2208:
  53. return .iphone678Plus
  54. case 2436:
  55. return .iphoneX
  56. default:
  57. return .other
  58. }
  59. }else {
  60. return .ipad
  61. }
  62. }
  63. static func isVerifiedUser() -> Bool {
  64. let val = (UserDefaults.standard.object(forKey: UserKeys.verified) as? Bool ) ?? false
  65. return val
  66. }
  67. static func didSubmitKyc() -> Bool {
  68. let val = (UserDefaults.standard.object(forKey: UserKeys.kyc) as? Bool ) ?? false
  69. return val
  70. }
  71. static func isCriticalUpdate() -> Bool {
  72. // UserDefaults.standard.set(critical, forKey: AppConstants.criticalUpdate)
  73. let val = (UserDefaults.standard.object(forKey: AppConstants.criticalUpdate) as? String )?.lowercased() == "Y".lowercased()
  74. return val
  75. }
  76. static func didPennyTestRequested() -> Bool {
  77. let val = (UserDefaults.standard.object(forKey: AppConstants.pennyTestStatusCode) as? String ) ?? "0" == PennyTestStatusCode.requested.rawValue // 0 is false and "1" = true 2 = cancelled
  78. return val
  79. }
  80. static func pennyTestPresentedOnce() -> Bool {
  81. let val = UserDefaults.standard.bool(forKey: AppConstants.pennyTestPresentedOnce)
  82. // UserDefaults.standard.set(true, forKey: AppConstants.pennyTestPresentedOnce)
  83. return val
  84. }
  85. static func didPennyTestCancelled() -> Bool {
  86. let val = (UserDefaults.standard.object(forKey: AppConstants.pennyTestStatusCode) as? String ) ?? "0" == PennyTestStatusCode.cancelled.rawValue
  87. return val
  88. }
  89. static func didPennyTestNotInitiated() -> Bool {
  90. let val = (UserDefaults.standard.object(forKey: AppConstants.pennyTestStatusCode) as? String ) ?? PennyTestStatusCode.notStarted.rawValue == PennyTestStatusCode.notStarted.rawValue
  91. return val
  92. }
  93. static func pennyTestVerified() -> Bool {
  94. let val = (UserDefaults.standard.object(forKey: AppConstants.pennyTestStatusCode) as? String ) ?? PennyTestStatusCode.notStarted.rawValue == PennyTestStatusCode.completed.rawValue
  95. return val
  96. }
  97. static func shouldShowPennyTestError() -> Bool {
  98. let val = (UserDefaults.standard.object(forKey: AppConstants.pennyTestStatusCode) as? String ) ?? PennyTestStatusCode.notStarted.rawValue != PennyTestStatusCode.completed.rawValue
  99. return val
  100. }
  101. static func shouldShowPennyTestScreen() -> Bool {
  102. let completed = (UserDefaults.standard.object(forKey: AppConstants.pennyTestStatusCode) as? String ) ?? PennyTestStatusCode.notStarted.rawValue == PennyTestStatusCode.completed.rawValue
  103. let cancelled = Utility.didPennyTestCancelled()
  104. let requested = Utility.didPennyTestRequested()
  105. return !cancelled && !completed && !requested
  106. }
  107. static func getMyUserName() -> String {
  108. let defaults = UserDefaults.standard
  109. let myUsername = defaults.string(forKey: UserKeys.userId) ?? ""
  110. return myUsername
  111. }
  112. static func getMyId() -> String {
  113. let defaults = UserDefaults.standard
  114. let myId = defaults.string(forKey: UserKeys.senderId) ?? ""
  115. return myId
  116. }
  117. static func getMyKftcClientId() -> String {
  118. let defaults = UserDefaults.standard
  119. let myId = defaults.string(forKey: UserKeys.kftcClientId) ?? ""
  120. return myId
  121. }
  122. static func getMyIdNumber() -> String {
  123. let defaults = UserDefaults.standard
  124. let myId = defaults.string(forKey: UserKeys.idNumber) ?? ""
  125. return myId
  126. }
  127. static func getMyPrimaryAccountNumber() -> String {
  128. let defaults = UserDefaults.standard
  129. let val = defaults.string(forKey: UserKeys.primaryAccountNumber) ?? ""
  130. print(val)
  131. return val
  132. }
  133. static func isValidEmail(email: String) -> Bool {
  134. let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
  135. let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegex)
  136. return emailTest.evaluate(with: email)
  137. }
  138. static func getCommaSeperatedString(numberString: String) -> String? {
  139. let text = numberString.filter({ $0 != "," })
  140. if let number = Double(text) {
  141. let nsNumber = NSNumber.init(value: number)
  142. let currencyFormatter = NumberFormatter()
  143. currencyFormatter.numberStyle = .decimal
  144. let commaSeperatedNumberString = currencyFormatter.string(for: nsNumber)
  145. let text = commaSeperatedNumberString?.replacingOccurrences(of: ".", with: ",")
  146. return text
  147. }
  148. return nil
  149. }
  150. static func getCommaSeperatedStringWithDecimal(numberString: String) -> String? {
  151. let text = numberString.filter({ $0 != "," })
  152. if let number = Double(text) {
  153. let nsNumber = NSNumber.init(value: number)
  154. let currencyFormatter = NumberFormatter()
  155. currencyFormatter.numberStyle = .decimal
  156. currencyFormatter.groupingSize = 3
  157. currencyFormatter.usesGroupingSeparator = true
  158. let commaSeperatedNumberString = currencyFormatter.string(for: nsNumber)
  159. return commaSeperatedNumberString
  160. }
  161. return nil
  162. }
  163. static func save(user: User?, accessCodeBase64: String? = nil, password: String? = nil, login: Bool? = false) {
  164. func save(value: Any?, forKey: String) {
  165. let defaults = UserDefaults.standard
  166. defaults.set(value, forKey: forKey)
  167. }
  168. save(value: user?.dpUrl ?? "", forKey: UserKeys.dpUrl)
  169. save(value: user?.walletNumber ?? "", forKey: UserKeys.walletNumber)
  170. save(value: user?.primaryBankName ?? "", forKey: UserKeys.primaryBankName)
  171. let firstName = user?.firstName ?? ""
  172. let middleName = user?.lastName ?? ""
  173. let lastName = user?.lastName ?? ""
  174. let fullName = firstName + " " + middleName + " " + lastName
  175. save(value: fullName, forKey: UserKeys.fullName)
  176. save(value: firstName, forKey: UserKeys.firstName)
  177. save(value: lastName, forKey: UserKeys.lastName)
  178. if login ?? false {
  179. save(value: accessCodeBase64, forKey: UserKeys.accessCode)
  180. }
  181. save(value: user?.userId ?? "", forKey: UserKeys.userId)
  182. save(value: user?.nickName ?? "", forKey: UserKeys.nickName)
  183. save(value: user?.availableBalance ?? "", forKey: user?.availableBalance ?? "0" )
  184. save(value: user?.rewardPoint ?? "", forKey: UserKeys.rewardPoint)
  185. save(value: user?.verified ?? false, forKey: UserKeys.verified)
  186. save(value: user?.kyc ?? "", forKey: UserKeys.kyc)
  187. save(value: user?.kftcClientId ?? "", forKey: UserKeys.kftcClientId)
  188. save(value: user?.email ?? "", forKey: UserKeys.email)
  189. save(value: user?.mobileNumber ?? "", forKey: UserKeys.mobileNumber)
  190. save(value: user?.sourceId ?? "", forKey: UserKeys.sourceId)
  191. save(value: password, forKey: "com.gmeremit.password")
  192. save(value: user?.isReferred ?? "", forKey: UserKeys.isReferred)
  193. save(value: user?.idType ?? "", forKey: UserKeys.idType)
  194. save(value: user?.idNumber ?? "", forKey: UserKeys.idNumber)
  195. save(value: user?.country ?? "" , forKey: UserKeys.country)
  196. save(value: user?.countryCode, forKey: UserKeys.countryCode)
  197. save(value: user?.primaryAccountNumber, forKey: UserKeys.primaryAccountNumber)
  198. save(value: user?.senderId, forKey: UserKeys.senderId)
  199. save(value: user?.yearlyLimit, forKey: UserKeys.yearlyLimit)
  200. save(value: user?.dateOfBirth, forKey: UserKeys.dateOfBirth)
  201. save(value: user?.pennyTestStatus, forKey: AppConstants.pennyTestStatusCode)
  202. }
  203. static func numberWithoutprecedingZero(str: String) -> String {
  204. let formatter = NumberFormatter()
  205. let number = formatter.number(from: str)
  206. return "\(number ?? 0)" ?? ""
  207. }
  208. static func getAppVersion () -> String? {
  209. let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
  210. print(version)
  211. return version
  212. }
  213. static func getOsVersion() -> String {
  214. let version = UIDevice.current.systemVersion
  215. return version
  216. }
  217. static func getPhoneBrand() -> String {
  218. let phoneName = UIDevice.current.model
  219. return phoneName
  220. }
  221. static func getPhoneOs() -> String {
  222. let os = UIDevice.current.systemName
  223. return os
  224. }
  225. static func getUUid() -> String? {
  226. let uuid = UIDevice.current.identifierForVendor?.uuidString
  227. return uuid
  228. }
  229. static func getCliendId() -> String {
  230. return "172017F9EC11222E8107142733"
  231. }
  232. }