@ -10,45 +10,48 @@ import Foundation
class AppConstants {
static let uuid = " uuid "
static let dateFormat = " yyyy-MM-dd "
static let humanReadableDateFormat = " MMM d, yyyy "
static let errorBorderWidth : CGFloat = 0.1
static let themeRedColor = UIColor . init ( hex : " #ed1b24 " )
static let themeDarkRedColor = UIColor . init ( hex : " #be0007 " )
static let themeBlueColor = UIColor . init ( hex : " #303e9f " ) // 2 D 3 6 8 F
static let themWhiteColor = UIColor . init ( hex : " #ffffff " )
static let emergencyLogoutErrorCode = - 1111
static let maxKoreanMobileNoLength = 11
static let MainWireFrameNotificationName = " MainViewControllerSelect "
static let pennyTestServerMessage = " pennyTestServerMessage "
static let pennyTestStatusCode = " pennyTestStatusCode "
static let pennyTestRequested = " pennyTestRequested "
static let pennyTestPresentedOnce = " pennyTestPresentedOnce "
static let criticalUpdate = " criticalUpdate "
static let primaryBankWArningMessage = " Please verify your primary bank account to complete the registration. "
static let yearlyLimitNotification = " Yearly LImit "
static let firstTimeLanguageIsSet = " firstTimeLanguageIsSet "
static let currentLanguage = " currentLanguage "
static let uuid = " uuid "
static let dateFormat = " yyyy-MM-dd "
static let humanReadableDateFormat = " MMM d, yyyy "
static let errorBorderWidth : CGFloat = 0.1
static let themeRedColor = UIColor . init ( hex : " #ed1b24 " )
static let themeDarkRedColor = UIColor . init ( hex : " #be0007 " )
static let themeBlueColor = UIColor . init ( hex : " #303e9f " ) // 2 D 3 6 8 F
static let themWhiteColor = UIColor . init ( hex : " #ffffff " )
static let emergencyLogoutErrorCode = - 1111
static let maxKoreanMobileNoLength = 11
static let MainWireFrameNotificationName = " MainViewControllerSelect "
static let pennyTestServerMessage = " pennyTestServerMessage "
static let pennyTestStatusCode = " pennyTestStatusCode "
static let pennyTestRequested = " pennyTestRequested "
static let pennyTestPresentedOnce = " pennyTestPresentedOnce "
static let criticalUpdate = " criticalUpdate "
static let primaryBankWArningMessage = " Please verify your primary bank account to complete the registration. "
static let yearlyLimitNotification = " Yearly LImit "
static let firstTimeLanguageIsSet = " firstTimeLanguageIsSet "
static let currentLanguage = " currentLanguage "
static let selectedReceiverCountryCode = " receiverCountryCode "
static let accessTokenRegTime = " accessTokenRegTime "
static let accessTokenExpTime = " accessTokenExpTime "
}
enum Devices {
case iphone5
case iphone678
case iphone678Plus
case iphoneX
case ipad
case other
case iphone5
case iphone678
case iphone678Plus
case iphoneX
case ipad
case other
}
// p e n n y T e s t S t a t u s = ' 0 ' - - - - - 0 n o t s t a r t e d , 1 r e q u e s t e d , 2 c o m p l e t e d
enum PennyTestStatusCode : String {
case notStarted = " 0 "
case requested = " 1 "
case completed = " 2 "
case cancelled = " 3 "
case notStarted = " 0 "
case requested = " 1 "
case completed = " 2 "
case cancelled = " 3 "
}
enum Language : String {
@ -151,380 +154,407 @@ extension String {
class Utility {
static func getDeviceModel ( ) -> Devices {
if UIDevice ( ) . userInterfaceIdiom = = . phone {
switch UIScreen . main . nativeBounds . height {
case 1136 :
return . iphone5
case 1334 :
return . iphone678
case 2208 :
return . iphone678Plus
case 2436 :
return . iphoneX
default :
return . other
}
} else {
return . ipad
}
static func getDeviceModel ( ) -> Devices {
if UIDevice ( ) . userInterfaceIdiom = = . phone {
switch UIScreen . main . nativeBounds . height {
case 1136 :
return . iphone5
case 1334 :
return . iphone678
case 2208 :
return . iphone678Plus
case 2436 :
return . iphoneX
default :
return . other
}
} else {
return . ipad
}
}
// v a r c o d e : S t r i n g {
// s w i t c h s e l f {
// c a s e . e n , . t h , . i d , . m n , . u z :
// r e t u r n s e l f . r a w V a l u e
// c a s e . k r :
// r e t u r n " k o "
// c a s e . k h :
// r e t u r n " k m "
// c a s e . l k :
// r e t u r n " s i "
// c a s e . m m :
// r e t u r n " m y "
// c a s e . n p :
// r e t u r n " n e "
// c a s e . b d :
// r e t u r n " b n "
// c a s e . r u :
// r e t u r n " r u - R U "
// c a s e . v n :
// r e t u r n " v i - V N "
// }
static func getLanguageHeader ( for currentLanugage : String ) -> String {
var header = " "
switch currentLanugage {
case " ko " :
header = " kr "
case " km " :
header = " kh "
case " si " :
header = " lk "
case " my " :
header = " mm "
case " ne " :
header = " np "
case " bn " :
header = " bd "
case " ru-RU " :
header = " ru "
case " vi-VN " :
header = " vn "
case " uz " :
header = " uz "
case " mn " :
header = " mn "
case " id " :
header = " id "
case " th " :
header = " th "
default :
header = " en "
}
// v a r c o d e : S t r i n g {
// s w i t c h s e l f {
// c a s e . e n , . t h , . i d , . m n , . u z :
// r e t u r n s e l f . r a w V a l u e
// c a s e . k r :
// r e t u r n " k o "
// c a s e . k h :
// r e t u r n " k m "
// c a s e . l k :
// r e t u r n " s i "
// c a s e . m m :
// r e t u r n " m y "
// c a s e . n p :
// r e t u r n " n e "
// c a s e . b d :
// r e t u r n " b n "
// c a s e . r u :
// r e t u r n " r u - R U "
// c a s e . v n :
// r e t u r n " v i - V N "
// }
return header
}
static func isVerifiedUser ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : UserKeys . verified ) as ? Bool ) ? ? false
return val
}
static func didSubmitKyc ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : UserKeys . kyc ) as ? Bool ) ? ? false
return val
}
static func isCriticalUpdate ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . criticalUpdate ) as ? String ) ? . lowercased ( ) = = " Y " . lowercased ( )
return val
static func getLanguageHeader ( for currentLanugage : String ) -> String {
var header = " "
switch currentLanugage {
case " ko " :
header = " kr "
case " km " :
header = " kh "
case " si " :
header = " lk "
case " my " :
header = " mm "
case " ne " :
header = " np "
case " bn " :
header = " bd "
case " ru-RU " :
header = " ru "
case " vi-VN " :
header = " vn "
case " uz " :
header = " uz "
case " mn " :
header = " mn "
case " id " :
header = " id "
case " th " :
header = " th "
default :
header = " en "
}
return header
}
static func didPennyTestRequested ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? " 0 " = = PennyTestStatusCode . requested . rawValue // 0 i s f a l s e a n d " 1 " = t r u e 2 = c a n c e l l e d
return val
}
static func pennyTestPresentedOnce ( ) -> Bool {
let val = UserDefaults . standard . bool ( forKey : AppConstants . pennyTestPresentedOnce )
return val
}
static func didPennyTestCancelled ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? " 0 " = = PennyTestStatusCode . cancelled . rawValue
return val
}
static func didPennyTestNotInitiated ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? PennyTestStatusCode . notStarted . rawValue = = PennyTestStatusCode . notStarted . rawValue
return val
}
static func pennyTestVerified ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? PennyTestStatusCode . notStarted . rawValue = = PennyTestStatusCode . completed . rawValue
return val
}
static func shouldShowPennyTestError ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? PennyTestStatusCode . notStarted . rawValue != PennyTestStatusCode . completed . rawValue
return val
}
static func shouldShowPennyTestScreen ( ) -> Bool {
let completed = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? PennyTestStatusCode . notStarted . rawValue = = PennyTestStatusCode . completed . rawValue
let cancelled = Utility . didPennyTestCancelled ( )
let requested = Utility . didPennyTestRequested ( )
return ! cancelled && ! completed && ! requested
}
static func getMyUserName ( ) -> String {
let defaults = UserDefaults . standard
let myUsername = defaults . string ( forKey : UserKeys . userId ) ? ? " "
return myUsername
}
static func getMyId ( ) -> String {
let defaults = UserDefaults . standard
let myId = defaults . string ( forKey : UserKeys . senderId ) ? ? " "
return myId
}
static func getMyKftcClientId ( ) -> String {
let defaults = UserDefaults . standard
let myId = defaults . string ( forKey : UserKeys . kftcClientId ) ? ? " "
return myId
}
static func getMyIdNumber ( ) -> String {
let defaults = UserDefaults . standard
let myId = defaults . string ( forKey : UserKeys . idNumber ) ? ? " "
return myId
}
static func getMyPrimaryAccountNumber ( ) -> String {
let defaults = UserDefaults . standard
let val = defaults . string ( forKey : UserKeys . primaryAccountNumber ) ? ? " "
print ( val )
return val
}
static func isValidEmail ( email : String ) -> Bool {
let emailRegex = " [A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+ \\ .[A-Za-z]{2,} "
let emailTest = NSPredicate ( format : " SELF MATCHES %@ " , emailRegex )
return emailTest . evaluate ( with : email )
}
static func getCommaSeperatedString ( numberString : String ) -> String ? {
let text = numberString . filter ( { $0 != " , " } )
if let number = Double ( text ) {
let nsNumber = NSNumber . init ( value : number )
let currencyFormatter = NumberFormatter ( )
currencyFormatter . numberStyle = . decimal
let commaSeperatedNumberString = currencyFormatter . string ( for : nsNumber )
let text = commaSeperatedNumberString ? . replacingOccurrences ( of : " . " , with : " , " )
return text
}
return nil
}
static func getCommaSeperatedStringWithDecimal ( numberString : String ) -> String ? {
let text = numberString . filter ( { $0 != " , " } )
if let number = Double ( text ) {
let nsNumber = NSNumber . init ( value : number )
let currencyFormatter = NumberFormatter ( )
currencyFormatter . numberStyle = . decimal
currencyFormatter . groupingSize = 3
currencyFormatter . usesGroupingSeparator = true
let commaSeperatedNumberString = currencyFormatter . string ( for : nsNumber )
return commaSeperatedNumberString
}
return nil
}
static func save ( user : User ? , accessCodeBase64 : String ? = nil , password : String ? = nil , login : Bool ? = false ) {
func save ( value : Any ? , forKey : String ) {
let defaults = UserDefaults . standard
defaults . set ( value , forKey : forKey )
}
static func isVerifiedUser ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : UserKeys . verified ) as ? Bool ) ? ? false
return val
}
save ( value : user ? . dpUrl ? ? " " , forKey : UserKeys . dpUrl )
save ( value : user ? . walletNumber ? ? " " , forKey : UserKeys . walletNumber )
save ( value : user ? . primaryBankName ? ? " " , forKey : UserKeys . primaryBankName )
static func didSubmitKyc ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : UserKeys . kyc ) as ? Bool ) ? ? false
return val
}
let firstName = user ? . firstName ? ? " "
let middleName = user ? . lastName ? ? " "
let lastName = user ? . lastName ? ? " "
let fullName = firstName + " " + middleName + " " + lastName
save ( value : fullName , forKey : UserKeys . fullName )
save ( value : firstName , forKey : UserKeys . firstName )
save ( value : lastName , forKey : UserKeys . lastName )
if login ? ? false {
save ( value : accessCodeBase64 , forKey : UserKeys . accessCode )
save ( value : user ? . kftcClientId ? ? " " , forKey : UserKeys . kftcClientId )
}
save ( value : user ? . userId ? ? " " , forKey : UserKeys . userId )
save ( value : user ? . nickName ? ? " " , forKey : UserKeys . nickName )
save ( value : user ? . availableBalance ? ? " " , forKey : user ? . availableBalance ? ? " 0 " )
save ( value : user ? . rewardPoint ? ? " " , forKey : UserKeys . rewardPoint )
save ( value : user ? . verified ? ? false , forKey : UserKeys . verified )
save ( value : user ? . kyc ? ? " " , forKey : UserKeys . kyc )
save ( value : user ? . email ? ? " " , forKey : UserKeys . email )
save ( value : user ? . mobileNumber ? ? " " , forKey : UserKeys . mobileNumber )
save ( value : user ? . sourceId ? ? " " , forKey : UserKeys . sourceId )
save ( value : " 111111 " , forKey : " com.gmeremit.password " )
save ( value : user ? . isReferred ? ? " " , forKey : UserKeys . isReferred )
save ( value : user ? . idType ? ? " " , forKey : UserKeys . idType )
save ( value : user ? . idNumber ? ? " " , forKey : UserKeys . idNumber )
save ( value : user ? . country ? ? " " , forKey : UserKeys . country )
save ( value : user ? . countryCode , forKey : UserKeys . countryCode )
save ( value : user ? . primaryAccountNumber , forKey : UserKeys . primaryAccountNumber )
save ( value : user ? . senderId , forKey : UserKeys . senderId )
save ( value : user ? . yearlyLimit , forKey : UserKeys . yearlyLimit )
save ( value : user ? . dateOfBirth , forKey : UserKeys . dateOfBirth )
save ( value : user ? . pennyTestStatus , forKey : AppConstants . pennyTestStatusCode )
save ( value : user ? . accessTokenRegTime , forKey : AppConstants . accessTokenRegTime )
save ( value : user ? . accessTokenExpTime , forKey : AppConstants . accessTokenExpTime )
static func isCriticalUpdate ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . criticalUpdate ) as ? String ) ? . lowercased ( ) = = " Y " . lowercased ( )
return val
}
// s a v e r e m i n d d a y o f K F T C T o k e n
let remindDay = calculateDDay ( registDate : user ? . accessTokenRegTime )
save ( value : remindDay , forKey : UserKeys . remindKFTCTokenDay )
static func didPennyTestRequested ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? " 0 " = = PennyTestStatusCode . requested . rawValue // 0 i s f a l s e a n d " 1 " = t r u e 2 = c a n c e l l e d
return val
}
guard let encryptedPassword = password else { return }
static func pennyTestPresentedOnce ( ) -> Bool {
let val = UserDefaults . standard . bool ( forKey : AppConstants . pennyTestPresentedOnce )
return val
}
let email = UserDefaults . standard . string ( forKey : UserKeys . email ) ? ? " "
static func didPennyTestCancelled ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? " 0 " = = PennyTestStatusCode . cancelled . rawValue
return val
if email != KeyChain . shared . get ( key : . email ) {
KeyChain . shared . remove ( key : . biometricAuth )
}
static func didPennyTestNotInitiated ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? PennyTestStatusCode . notStarted . rawValue = = PennyTestStatusCode . notStarted . rawValue
return val
}
KeyChain . shared . save ( data : email , key : . email )
KeyChain . shared . save ( data : encryptedPassword , key : . password )
KeyChain . shared . save ( data : " 1 " , key : . login )
}
static func calculateDDay ( registDate : String ? ) -> String ? {
let dateFormatter = DateFormatter ( )
static func pennyTestVerified ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? PennyTestStatusCode . notStarted . rawValue = = PennyTestStatusCode . completed . rawValue
return val
}
dateFormatter . dateFormat = " M/d/yyyy h:mm:ss a "
dateFormatter . timeZone = NSTimeZone ( name : " UTC " ) as TimeZone ?
static func shouldShowPennyTestError ( ) -> Bool {
let val = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? PennyTestStatusCode . notStarted . rawValue != PennyTestStatusCode . completed . rawValue
return val
}
var dateComponent = DateComponents ( )
dateComponent . year = 1
static func shouldShowPennyTestScreen ( ) -> Bool {
let completed = ( UserDefaults . standard . object ( forKey : AppConstants . pennyTestStatusCode ) as ? String ) ? ? PennyTestStatusCode . notStarted . rawValue = = PennyTestStatusCode . completed . rawValue
let cancelled = Utility . didPennyTestCancelled ( )
let requested = Utility . didPennyTestRequested ( )
return ! cancelled && ! completed && ! requested
}
guard
let resigstDate = registDate ,
let date = dateFormatter . date ( from : resigstDate ) ,
let expireDate = Calendar . current . date ( byAdding : dateComponent , to : date ) else { return nil }
let now = Date ( )
let interval = expireDate . timeIntervalSince ( now )
return " \( Int ( interval / 86400 ) ) "
}
static func numberWithoutprecedingZero ( str : String ) -> String {
let formatter = NumberFormatter ( )
let number = formatter . number ( from : str )
return " \( number ? ? 0 ) "
}
static func getAppVersion ( ) -> String ? {
let version = Bundle . main . infoDictionary ? [ " CFBundleShortVersionString " ] as ? String
return version
}
static func getOsVersion ( ) -> String {
let version = UIDevice . current . systemVersion
return version
}
static func getPhoneBrand ( ) -> String {
let phoneName = UIDevice . current . model
return phoneName
}
static func getPhoneOs ( ) -> String {
let os = UIDevice . current . systemName
return os
}
static func getUUid ( ) -> String ? {
let uuid = UIDevice . current . identifierForVendor ? . uuidString
return uuid
}
static func getCliendId ( ) -> String {
return " 172017F9EC11222E8107142733 "
}
}
static func getMyUserName ( ) -> String {
let defaults = UserDefaults . standard
let myUsername = defaults . string ( forKey : UserKeys . userId ) ? ? " "
return myUsername
}
extension Utility {
static func getLanguages ( ) -> [ SendMoneyCountryViewModel ] {
let english = SendMoneyCountryViewModel ( )
english . name = " english_language_text " . localized ( )
english . id = " english_language_text "
english . title = " English "
english . code = " en "
static func getMyId ( ) -> String {
let defaults = UserDefaults . standard
let myId = defaults . string ( forKey : UserKeys . senderId ) ? ? " "
return myId
}
let korean = SendMoneyCountryViewModel ( )
korean . name = " korean_language_text " . localized ( )
korean . id = " korean_language_text "
korean . title = " 한국 "
korean . code = " kr "
static func getMyKftcClientId ( ) -> String {
let defaults = UserDefaults . standard
let myId = defaults . string ( forKey : UserKeys . kftcClientId ) ? ? " "
return myId
}
let cambodia = SendMoneyCountryViewModel ( )
cambodia . name = " cambodia_lanugage_text " . localized ( )
cambodia . id = " cambodia_lanugage_text "
cambodia . title = " ភាសាខ្មែរ "
cambodia . code = " kh "
static func getMyIdNumber ( ) -> String {
let defaults = UserDefaults . standard
let myId = defaults . string ( forKey : UserKeys . idNumber ) ? ? " "
return myId
}
static func getMyPrimaryAccountNumber ( ) -> String {
let defaults = UserDefaults . standard
let val = defaults . string ( forKey : UserKeys . primaryAccountNumber ) ? ? " "
print ( val )
return val
}
let srilanka = SendMoneyCountryViewModel ( )
srilanka . name = " srilanka_lanugage_text " . localized ( )
srilanka . id = " srilanka_lanugage_text "
srilanka . title = " සිංහල "
srilanka . code = " lk "
static func isValidEmail ( email : String ) -> Bool {
let emailRegex = " [A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+ \\ .[A-Za-z]{2,} "
let emailTest = NSPredicate ( format : " SELF MATCHES %@ " , emailRegex )
return emailTest . evaluate ( with : email )
}
let myanmar = SendMoneyCountryViewModel ( )
myanmar . name = " myanmar_language_text " . localized ( )
myanmar . id = " myanmar_language_text "
myanmar . title = " Myanmar "
myanmar . code = " mm "
static func getCommaSeperatedString ( numberString : String ) -> String ? {
let text = numberString . filter ( { $0 != " , " } )
if let number = Double ( text ) {
let nsNumber = NSNumber . init ( value : number )
let currencyFormatter = NumberFormatter ( )
currencyFormatter . numberStyle = . decimal
let commaSeperatedNumberString = currencyFormatter . string ( for : nsNumber )
let text = commaSeperatedNumberString ? . replacingOccurrences ( of : " . " , with : " , " )
return text
}
return nil
}
static func getCommaSeperatedStringWithDecimal ( numberString : String ) -> String ? {
let text = numberString . filter ( { $0 != " , " } )
if let number = Double ( text ) {
let nsNumber = NSNumber . init ( value : number )
let currencyFormatter = NumberFormatter ( )
currencyFormatter . numberStyle = . decimal
currencyFormatter . groupingSize = 3
currencyFormatter . usesGroupingSeparator = true
let commaSeperatedNumberString = currencyFormatter . string ( for : nsNumber )
return commaSeperatedNumberString
}
return nil
}
let russian = SendMoneyCountryViewModel ( )
russian . name = " russian_langugae_text " . localized ( )
russian . id = " русский "
russian . title = " русский "
russian . code = " ru "
static func save ( user : User ? , accessCodeBase64 : String ? = nil , password : String ? = nil , login : Bool ? = false ) {
func save ( value : Any ? , forKey : String ) {
let defaults = UserDefaults . standard
defaults . set ( value , forKey : forKey )
}
save ( value : user ? . dpUrl ? ? " " , forKey : UserKeys . dpUrl )
save ( value : user ? . walletNumber ? ? " " , forKey : UserKeys . walletNumber )
save ( value : user ? . primaryBankName ? ? " " , forKey : UserKeys . primaryBankName )
let firstName = user ? . firstName ? ? " "
let middleName = user ? . lastName ? ? " "
let lastName = user ? . lastName ? ? " "
let fullName = firstName + " " + middleName + " " + lastName
save ( value : fullName , forKey : UserKeys . fullName )
save ( value : firstName , forKey : UserKeys . firstName )
save ( value : lastName , forKey : UserKeys . lastName )
if login ? ? false {
save ( value : accessCodeBase64 , forKey : UserKeys . accessCode )
save ( value : user ? . kftcClientId ? ? " " , forKey : UserKeys . kftcClientId )
}
save ( value : user ? . userId ? ? " " , forKey : UserKeys . userId )
save ( value : user ? . nickName ? ? " " , forKey : UserKeys . nickName )
save ( value : user ? . availableBalance ? ? " " , forKey : user ? . availableBalance ? ? " 0 " )
save ( value : user ? . rewardPoint ? ? " " , forKey : UserKeys . rewardPoint )
save ( value : user ? . verified ? ? false , forKey : UserKeys . verified )
save ( value : user ? . kyc ? ? " " , forKey : UserKeys . kyc )
save ( value : user ? . email ? ? " " , forKey : UserKeys . email )
save ( value : user ? . mobileNumber ? ? " " , forKey : UserKeys . mobileNumber )
save ( value : user ? . sourceId ? ? " " , forKey : UserKeys . sourceId )
save ( value : " 111111 " , forKey : " com.gmeremit.password " )
save ( value : user ? . isReferred ? ? " " , forKey : UserKeys . isReferred )
save ( value : user ? . idType ? ? " " , forKey : UserKeys . idType )
save ( value : user ? . idNumber ? ? " " , forKey : UserKeys . idNumber )
save ( value : user ? . country ? ? " " , forKey : UserKeys . country )
save ( value : user ? . countryCode , forKey : UserKeys . countryCode )
save ( value : user ? . primaryAccountNumber , forKey : UserKeys . primaryAccountNumber )
save ( value : user ? . senderId , forKey : UserKeys . senderId )
save ( value : user ? . yearlyLimit , forKey : UserKeys . yearlyLimit )
save ( value : user ? . dateOfBirth , forKey : UserKeys . dateOfBirth )
save ( value : user ? . pennyTestStatus , forKey : AppConstants . pennyTestStatusCode )
guard let encryptedPassword = password else { return }
let email = UserDefaults . standard . string ( forKey : UserKeys . email ) ? ? " "
if email != KeyChain . shared . get ( key : . email ) {
KeyChain . shared . remove ( key : . biometricAuth )
}
KeyChain . shared . save ( data : email , key : . email )
KeyChain . shared . save ( data : encryptedPassword , key : . password )
KeyChain . shared . save ( data : " 1 " , key : . login )
}
let vietnam = SendMoneyCountryViewModel ( )
vietnam . name = " vietnam_language_text " . localized ( )
vietnam . id = " vietnam_language_text "
vietnam . title = " Tiếng Việt "
vietnam . code = " vn "
static func numberWithoutprecedingZero ( str : String ) -> String {
let formatter = NumberFormatter ( )
let number = formatter . number ( from : str )
return " \( number ? ? 0 ) " ? ? " "
}
let thailand = SendMoneyCountryViewModel ( )
thailand . name = " thailand_language_text " . localized ( )
thailand . id = " thailand_language_text "
thailand . title = " ไทย "
thailand . code = " th "
static func getAppVersion ( ) -> String ? {
let version = Bundle . main . infoDictionary ? [ " CFBundleShortVersionString " ] as ? String
print ( version )
return version
}
let indonesia = SendMoneyCountryViewModel ( )
indonesia . name = " indonesia_language_text " . localized ( )
indonesia . id = " indonesia_language_text "
indonesia . title = " Bahasa Indonesia "
indonesia . code = " id "
static func getOsVersion ( ) -> String {
let version = UIDevice . current . systemVersion
return version
}
let mongolia = SendMoneyCountryViewModel ( )
mongolia . name = " mongolia_language_text " . localized ( )
mongolia . id = " mongolia_language_text "
mongolia . title = " Монгол "
mongolia . code = " mn "
static func getPhoneBrand ( ) -> String {
let phoneName = UIDevice . current . model
return phoneName
}
let nepal = SendMoneyCountryViewModel ( )
nepal . name = " nepali_language_text " . localized ( )
nepal . id = " nepali_language_text "
nepal . title = " नेपाली "
nepal . code = " np "
static func getPhoneOs ( ) -> String {
let os = UIDevice . current . systemName
return os
}
let bangladesh = SendMoneyCountryViewModel ( )
bangladesh . name = " bengali_language_text " . localized ( )
bangladesh . id = " bengali_language_text "
bangladesh . title = " বাংলা "
bangladesh . code = " bd "
static func getUUid ( ) -> String ? {
let uuid = UIDevice . current . identifierForVendor ? . uuidString
return uuid
}
let uzbek = SendMoneyCountryViewModel ( )
uzbek . name = " uzbek_language_text " . localized ( )
uzbek . id = " uzbek_language_text "
uzbek . title = " O'zbek "
uzbek . code = " uz "
static func getCliendId ( ) -> String {
return " 172017F9EC11222E8107142733 "
}
}
extension Utility {
static func getLanguages ( ) -> [ SendMoneyCountryViewModel ] {
let english = SendMoneyCountryViewModel ( )
english . name = " english_language_text " . localized ( )
english . id = " english_language_text "
english . title = " English "
english . code = " en "
let korean = SendMoneyCountryViewModel ( )
korean . name = " korean_language_text " . localized ( )
korean . id = " korean_language_text "
korean . title = " 한국 "
korean . code = " kr "
let cambodia = SendMoneyCountryViewModel ( )
cambodia . name = " cambodia_lanugage_text " . localized ( )
cambodia . id = " cambodia_lanugage_text "
cambodia . title = " ភាសាខ្មែរ "
cambodia . code = " kh "
let srilanka = SendMoneyCountryViewModel ( )
srilanka . name = " srilanka_lanugage_text " . localized ( )
srilanka . id = " srilanka_lanugage_text "
srilanka . title = " සිංහල "
srilanka . code = " lk "
let myanmar = SendMoneyCountryViewModel ( )
myanmar . name = " myanmar_language_text " . localized ( )
myanmar . id = " myanmar_language_text "
myanmar . title = " Myanmar "
myanmar . code = " mm "
let russian = SendMoneyCountryViewModel ( )
russian . name = " russian_langugae_text " . localized ( )
russian . id = " русский "
russian . title = " русский "
russian . code = " ru "
let vietnam = SendMoneyCountryViewModel ( )
vietnam . name = " vietnam_language_text " . localized ( )
vietnam . id = " vietnam_language_text "
vietnam . title = " Tiếng Việt "
vietnam . code = " vn "
let thailand = SendMoneyCountryViewModel ( )
thailand . name = " thailand_language_text " . localized ( )
thailand . id = " thailand_language_text "
thailand . title = " ไทย "
thailand . code = " th "
let indonesia = SendMoneyCountryViewModel ( )
indonesia . name = " indonesia_language_text " . localized ( )
indonesia . id = " indonesia_language_text "
indonesia . title = " Bahasa Indonesia "
indonesia . code = " id "
let mongolia = SendMoneyCountryViewModel ( )
mongolia . name = " mongolia_language_text " . localized ( )
mongolia . id = " mongolia_language_text "
mongolia . title = " Монгол "
mongolia . code = " mn "
let nepal = SendMoneyCountryViewModel ( )
nepal . name = " nepali_language_text " . localized ( )
nepal . id = " nepali_language_text "
nepal . title = " नेपाली "
nepal . code = " np "
let bangladesh = SendMoneyCountryViewModel ( )
bangladesh . name = " bengali_language_text " . localized ( )
bangladesh . id = " bengali_language_text "
bangladesh . title = " বাংলা "
bangladesh . code = " bd "
let uzbek = SendMoneyCountryViewModel ( )
uzbek . name = " uzbek_language_text " . localized ( )
uzbek . id = " uzbek_language_text "
uzbek . title = " O'zbek "
uzbek . code = " uz "
let languages = [ english , korean , cambodia , srilanka , thailand , indonesia , mongolia , myanmar , nepal , bangladesh , russian , uzbek , vietnam ]
// l e t l a n g u a g e s = [ e n g l i s h , k o r e a n , c a m b o d i a , s r i l a n k a , m y a n m a r , r u s s i a n , v i e t n a m , t h a i l a n d , i n d o n e s i a , m o n g o l i a ]
return languages
}
// l e t l a n g u a g e s = [ e n g l i s h , k o r e a n , c a m b o d i a , s r i l a n k a , m y a n m a r , r u s s i a n , v i e t n a m , t h a i l a n d , i n d o n e s i a , m o n g o l i a ]
return languages
}
}