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.

354 lines
13 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
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. static let firstTimeLanguageIsSet = "firstTimeLanguageIsSet"
  29. }
  30. enum Devices {
  31. case iphone5
  32. case iphone678
  33. case iphone678Plus
  34. case iphoneX
  35. case ipad
  36. case other
  37. }
  38. //pennyTestStatus='0'-----0 not started, 1 requested , 2 completed
  39. enum PennyTestStatusCode: String {
  40. case notStarted = "0"
  41. case requested = "1"
  42. case completed = "2"
  43. case cancelled = "3"
  44. }
  45. class Utility {
  46. static func getDeviceModel() -> Devices {
  47. if UIDevice().userInterfaceIdiom == .phone {
  48. switch UIScreen.main.nativeBounds.height {
  49. case 1136:
  50. return .iphone5
  51. case 1334:
  52. return .iphone678
  53. case 2208:
  54. return .iphone678Plus
  55. case 2436:
  56. return .iphoneX
  57. default:
  58. return .other
  59. }
  60. }else {
  61. return .ipad
  62. }
  63. }
  64. static func isVerifiedUser() -> Bool {
  65. let val = (UserDefaults.standard.object(forKey: UserKeys.verified) as? Bool ) ?? false
  66. return val
  67. }
  68. static func didSubmitKyc() -> Bool {
  69. let val = (UserDefaults.standard.object(forKey: UserKeys.kyc) as? Bool ) ?? false
  70. return val
  71. }
  72. static func isCriticalUpdate() -> Bool {
  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. return val
  83. }
  84. static func didPennyTestCancelled() -> Bool {
  85. let val = (UserDefaults.standard.object(forKey: AppConstants.pennyTestStatusCode) as? String ) ?? "0" == PennyTestStatusCode.cancelled.rawValue
  86. return val
  87. }
  88. static func didPennyTestNotInitiated() -> Bool {
  89. let val = (UserDefaults.standard.object(forKey: AppConstants.pennyTestStatusCode) as? String ) ?? PennyTestStatusCode.notStarted.rawValue == PennyTestStatusCode.notStarted.rawValue
  90. return val
  91. }
  92. static func pennyTestVerified() -> Bool {
  93. let val = (UserDefaults.standard.object(forKey: AppConstants.pennyTestStatusCode) as? String ) ?? PennyTestStatusCode.notStarted.rawValue == PennyTestStatusCode.completed.rawValue
  94. return val
  95. }
  96. static func shouldShowPennyTestError() -> Bool {
  97. let val = (UserDefaults.standard.object(forKey: AppConstants.pennyTestStatusCode) as? String ) ?? PennyTestStatusCode.notStarted.rawValue != PennyTestStatusCode.completed.rawValue
  98. return val
  99. }
  100. static func shouldShowPennyTestScreen() -> Bool {
  101. let completed = (UserDefaults.standard.object(forKey: AppConstants.pennyTestStatusCode) as? String ) ?? PennyTestStatusCode.notStarted.rawValue == PennyTestStatusCode.completed.rawValue
  102. let cancelled = Utility.didPennyTestCancelled()
  103. let requested = Utility.didPennyTestRequested()
  104. return !cancelled && !completed && !requested
  105. }
  106. static func getMyUserName() -> String {
  107. let defaults = UserDefaults.standard
  108. let myUsername = defaults.string(forKey: UserKeys.userId) ?? ""
  109. return myUsername
  110. }
  111. static func getMyId() -> String {
  112. let defaults = UserDefaults.standard
  113. let myId = defaults.string(forKey: UserKeys.senderId) ?? ""
  114. return myId
  115. }
  116. static func getMyKftcClientId() -> String {
  117. let defaults = UserDefaults.standard
  118. let myId = defaults.string(forKey: UserKeys.kftcClientId) ?? ""
  119. return myId
  120. }
  121. static func getMyIdNumber() -> String {
  122. let defaults = UserDefaults.standard
  123. let myId = defaults.string(forKey: UserKeys.idNumber) ?? ""
  124. return myId
  125. }
  126. static func getMyPrimaryAccountNumber() -> String {
  127. let defaults = UserDefaults.standard
  128. let val = defaults.string(forKey: UserKeys.primaryAccountNumber) ?? ""
  129. print(val)
  130. return val
  131. }
  132. static func isValidEmail(email: String) -> Bool {
  133. let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
  134. let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegex)
  135. return emailTest.evaluate(with: email)
  136. }
  137. static func getCommaSeperatedString(numberString: String) -> String? {
  138. let text = numberString.filter({ $0 != "," })
  139. if let number = Double(text) {
  140. let nsNumber = NSNumber.init(value: number)
  141. let currencyFormatter = NumberFormatter()
  142. currencyFormatter.numberStyle = .decimal
  143. let commaSeperatedNumberString = currencyFormatter.string(for: nsNumber)
  144. let text = commaSeperatedNumberString?.replacingOccurrences(of: ".", with: ",")
  145. return text
  146. }
  147. return nil
  148. }
  149. static func getCommaSeperatedStringWithDecimal(numberString: String) -> String? {
  150. let text = numberString.filter({ $0 != "," })
  151. if let number = Double(text) {
  152. let nsNumber = NSNumber.init(value: number)
  153. let currencyFormatter = NumberFormatter()
  154. currencyFormatter.numberStyle = .decimal
  155. currencyFormatter.groupingSize = 3
  156. currencyFormatter.usesGroupingSeparator = true
  157. let commaSeperatedNumberString = currencyFormatter.string(for: nsNumber)
  158. return commaSeperatedNumberString
  159. }
  160. return nil
  161. }
  162. static func save(user: User?, accessCodeBase64: String? = nil, password: String? = nil, login: Bool? = false) {
  163. func save(value: Any?, forKey: String) {
  164. let defaults = UserDefaults.standard
  165. defaults.set(value, forKey: forKey)
  166. }
  167. save(value: user?.dpUrl ?? "", forKey: UserKeys.dpUrl)
  168. save(value: user?.walletNumber ?? "", forKey: UserKeys.walletNumber)
  169. save(value: user?.primaryBankName ?? "", forKey: UserKeys.primaryBankName)
  170. let firstName = user?.firstName ?? ""
  171. let middleName = user?.lastName ?? ""
  172. let lastName = user?.lastName ?? ""
  173. let fullName = firstName + " " + middleName + " " + lastName
  174. save(value: fullName, forKey: UserKeys.fullName)
  175. save(value: firstName, forKey: UserKeys.firstName)
  176. save(value: lastName, forKey: UserKeys.lastName)
  177. if login ?? false {
  178. save(value: accessCodeBase64, forKey: UserKeys.accessCode)
  179. save(value: user?.kftcClientId ?? "", forKey: UserKeys.kftcClientId)
  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?.email ?? "", forKey: UserKeys.email)
  188. save(value: user?.mobileNumber ?? "", forKey: UserKeys.mobileNumber)
  189. save(value: user?.sourceId ?? "", forKey: UserKeys.sourceId)
  190. save(value: password, forKey: "com.gmeremit.password")
  191. save(value: user?.isReferred ?? "", forKey: UserKeys.isReferred)
  192. save(value: user?.idType ?? "", forKey: UserKeys.idType)
  193. save(value: user?.idNumber ?? "", forKey: UserKeys.idNumber)
  194. save(value: user?.country ?? "" , forKey: UserKeys.country)
  195. save(value: user?.countryCode, forKey: UserKeys.countryCode)
  196. save(value: user?.primaryAccountNumber, forKey: UserKeys.primaryAccountNumber)
  197. save(value: user?.senderId, forKey: UserKeys.senderId)
  198. save(value: user?.yearlyLimit, forKey: UserKeys.yearlyLimit)
  199. save(value: user?.dateOfBirth, forKey: UserKeys.dateOfBirth)
  200. save(value: user?.pennyTestStatus, forKey: AppConstants.pennyTestStatusCode)
  201. }
  202. static func numberWithoutprecedingZero(str: String) -> String {
  203. let formatter = NumberFormatter()
  204. let number = formatter.number(from: str)
  205. return "\(number ?? 0)" ?? ""
  206. }
  207. static func getAppVersion () -> String? {
  208. let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
  209. print(version)
  210. return version
  211. }
  212. static func getOsVersion() -> String {
  213. let version = UIDevice.current.systemVersion
  214. return version
  215. }
  216. static func getPhoneBrand() -> String {
  217. let phoneName = UIDevice.current.model
  218. return phoneName
  219. }
  220. static func getPhoneOs() -> String {
  221. let os = UIDevice.current.systemName
  222. return os
  223. }
  224. static func getUUid() -> String? {
  225. let uuid = UIDevice.current.identifierForVendor?.uuidString
  226. return uuid
  227. }
  228. static func getCliendId() -> String {
  229. return "172017F9EC11222E8107142733"
  230. }
  231. }
  232. extension Utility {
  233. static func getLanguages() -> [SendMoneyCountryViewModel] {
  234. let english = SendMoneyCountryViewModel()
  235. english.name = "english_language_text".localized()
  236. english.id = "english_language_text"
  237. english.title = "English"
  238. english.code = "en"
  239. let korean = SendMoneyCountryViewModel()
  240. korean.name = "korean_language_text".localized()
  241. korean.id = "korean_language_text"
  242. korean.title = "한국"
  243. korean.code = "kr"
  244. let cambodia = SendMoneyCountryViewModel()
  245. cambodia.name = "cambodia_lanugage_text".localized()
  246. cambodia.id = "cambodia_lanugage_text"
  247. cambodia.title = "ភាសាខ្មែរ"
  248. cambodia.code = "kh"
  249. let srilanka = SendMoneyCountryViewModel()
  250. srilanka.name = "srilanka_lanugage_text".localized()
  251. srilanka.id = "srilanka_lanugage_text"
  252. srilanka.title = "සිංහල"
  253. srilanka.code = "lk"
  254. let myanmar = SendMoneyCountryViewModel()
  255. myanmar.name = "myanmar_language_text".localized()
  256. myanmar.id = "myanmar_language_text"
  257. myanmar.title = "Myanmar"
  258. myanmar.code = "mm"
  259. let russian = SendMoneyCountryViewModel()
  260. russian.name = "russian_langugae_text".localized()
  261. russian.id = "russian_langugae_text"
  262. russian.code = "ru"
  263. let vietnam = SendMoneyCountryViewModel()
  264. vietnam.name = "vietnam_language_text".localized()
  265. vietnam.id = "vietnam_language_text"
  266. vietnam.code = "vn"
  267. let thailand = SendMoneyCountryViewModel()
  268. thailand.name = "thailand_language_text".localized()
  269. thailand.id = "thailand_language_text"
  270. thailand.title = "ไทย"
  271. thailand.code = "th"
  272. let indonesia = SendMoneyCountryViewModel()
  273. indonesia.name = "indonesia_language_text".localized()
  274. indonesia.id = "indonesia_language_text"
  275. indonesia.title = "Indonesia"
  276. indonesia.code = "id"
  277. let mongolia = SendMoneyCountryViewModel()
  278. mongolia.name = "mongolia_language_text".localized()
  279. mongolia.id = "mongolia_language_text"
  280. mongolia.title = "Монгол"
  281. mongolia.code = "mn"
  282. let nepal = SendMoneyCountryViewModel()
  283. nepal.name = "nepali_language_text".localized()
  284. nepal.id = "nepali_language_text"
  285. nepal.title = "नेपाली"
  286. nepal.code = "np"
  287. let bangladesh = SendMoneyCountryViewModel()
  288. bangladesh.name = "bangladesh_language_text".localized()
  289. bangladesh.id = "bangladesh_language_text"
  290. bangladesh.title = "bangladesh"
  291. bangladesh.code = "bd"
  292. let languages = [english, korean, cambodia, srilanka, thailand, indonesia, mongolia, myanmar, nepal, bangladesh]
  293. // let languages = [english, korean, cambodia, srilanka, myanmar, russian, vietnam, thailand, indonesia, mongolia]
  294. return languages
  295. }
  296. }