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.
 
 
 
 

142 lines
3.9 KiB

//
// Database.swift
// GME Remit
//
// Created by InKwon James Kim on 17/07/2019.
// Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import FirebaseInstanceID
class GMEDB {
static let shared = GMEDB()
enum UserKeys: String, KeyProtocol {
case pennyTestServerMessage
case pennyTestStatusCode
case pennyTestRequested
case pennyTestPresentedOnce
case accessTokenRegTime
case accessTokenExpTime
case yearlyLimit
case userId = "com.gmeremit.username"
case senderId
case fullName = "com.gmeremit.fullName"
case firstName
case middleName
case lastName
case nickName = "com.gmeremit.nickName"
case dateOfBirth = "date_of_birth"
case email = "com.gmeremit.email"
case mobileNumber = "com.gmeremit.mobileNumber"
case rewardPoint = "com.gmeremit.rewardPoint"
case walletNumber = "com.gmeremit.walletNumber"
case availableBalance = "com.gmeremit.balance"
case primaryBankName = "com.gmeremit.bankName"
case primaryAccountNumber
case accessCode = "com.gmeremit.accessCode"
case dpUrl = "com.gmeremit.dpUrl"
case kyc = "com.gmeremit.isKYCSubmitted"
case verified = "com.gmeremit.isVerified"
case active
case cmRegistrationId = "cmRegistrationId"
case isReferred = "com.gmeremit.isReferred"
case country
case province
case provinceId
case sourceId = "com.gmeremit.sourceId"
case idType
case idNumber
case countryCode
case countryID
case errorCode
case hasRequestedPennyTest
case isPennyTestPending
case kftcClientId
case message
case id
case data
case isUseBiometricAuth = "com.gmeremit.isUseBiometricAuth"
case remindKFTCTokenDay
case redirectTo
}
enum AppKey: String, KeyProtocol {
case uuid
case firstTimeLanguageIsSet
case criticalUpdate
case currentLanguage
case dateOfDontShowNotification
case dateOfExpireNotification
case isOpenedTokenRenwalAlert
case isOpenedPopupNotification
}
let user = UserDefaultsWrapper<UserKeys>()
let app = UserDefaultsWrapper<AppKey>()
func getFcmToken(completion: @escaping (String?, Error?) -> Void) {
InstanceID.instanceID().instanceID { (result, error) in
completion(result?.token, error)
}
}
}
extension GMEDB {
@discardableResult
func setUser(_ user: User?) -> UserDefaultsWrapper<UserKeys> {
let firstName = user?.firstName ?? ""
let middleName = user?.lastName ?? ""
let lastName = user?.lastName ?? ""
let fullName = firstName + " " + middleName + " " + lastName
self.user
.set(user?.dpUrl, .dpUrl)
.set(user?.walletNumber, .walletNumber)
.set(user?.primaryBankName, .primaryBankName)
self.user
.set(fullName, .fullName)
.set(firstName, .firstName)
.set(lastName, .lastName)
.set(user?.userId, .userId)
.set(user?.nickName, .nickName)
self.user
.set(user?.kyc, .kyc)
.set(user?.pennyTestStatus, .pennyTestStatusCode)
.set(user?.verified, .verified)
self.user
.set(user?.email, .email)
.set(user?.mobileNumber, .mobileNumber)
.set(user?.sourceId, .sourceId)
.set(user?.isReferred, .isReferred)
self.user
.set(user?.idType, .idType)
.set(user?.idNumber, .idNumber)
.set(user?.country, .country)
.set(user?.countryCode, .countryCode)
self.user
.set(user?.primaryAccountNumber, .primaryAccountNumber)
.set(user?.senderId, .senderId)
.set(user?.yearlyLimit, .yearlyLimit)
.set(user?.dateOfBirth, .dateOfBirth)
self.user
.set(user?.rewardPoint, .rewardPoint)
.set(user?.availableBalance, .availableBalance)
.set(user?.accessTokenRegTime, .accessTokenRegTime)
.set(user?.accessTokenExpTime, .accessTokenExpTime)
.set(user?.redirectTo, .redirectTo)
return self.user
}
}