// // 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 ngrokHost case uuid case firstTimeLanguageIsSet case criticalUpdate case currentLanguage case dateOfDontShowNotification case dateOfExpireNotification case isOpenedTokenRenwalAlert case isOpenedPopupNotification case openCount } let user = UserDefaultsWrapper() let app = UserDefaultsWrapper() 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 { 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 } }