// // Database.swift // GME Remit // // Created by InKwon James Kim on 17/07/2019. // Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. // protocol GMEDBKeyProtocol: RawRepresentable, CaseIterable {} class GMEDB { static let shared = GMEDB() private var database: UserDefaults { return UserDefaults.standard } enum UserKeys: String, GMEDBKeyProtocol { case pennyTestServerMessage = "pennyTestServerMessage" case pennyTestStatusCode = "pennyTestStatusCode" case pennyTestRequested = "pennyTestRequested" case pennyTestPresentedOnce = "pennyTestPresentedOnce" case accessTokenRegTime = "accessTokenRegTime" case accessTokenExpTime = "accessTokenExpTime" case yearlyLimit = "yearlyLimit" case userId = "com.gmeremit.username" case senderId = "senderId" case fullName = "com.gmeremit.fullName" case firstName = "firstName" case middleName = "middleName" case lastName = "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 = "PrimaryAccountNumber" case accessCode = "com.gmeremit.accessCode" case dpUrl = "com.gmeremit.dpUrl" case kyc = "com.gmeremit.isKYCSubmitted" case verified = "com.gmeremit.isVerified" case active = "active" case cmRegistrationId = "cmRegistrationId" case isReferred = "com.gmeremit.isReferred" case country = "country" case province = "province" case provinceId = "provinceId" case sourceId = "com.gmeremit.sourceId" case idType = "idType" case idNumber = "idNumber" case countryCode = "countryCode" case ErrorCode = "ErrorCode" case hasRequestedPennyTest = "hasRequestedPennyTest" case isPennyTestPending = "isPennyTestPending" case kftcClientId = "kftcClientId" case Msg = "Msg" case Id = "Id" case Data = "Data" case isUseBiometricAuth = "com.gmeremit.isUseBiometricAuth" case remindKFTCTokenDay = "remindKFTCTokenDay" } enum AppKey: String, GMEDBKeyProtocol { case uuid = "uuid" case firstTimeLanguageIsSet = "firstTimeLanguageIsSet" case criticalUpdate = "criticalUpdate" case currentLanguage = "currentLanguage" case dateOfDontShowNotification = "dateOfDontShowNotification" case dateOfExpireNotification = "dateOfExpireNotification" case isOpenedTokenRenwalAlert = "isOpenedTokenRenwalAlert" case isOpenedPopupNotification = "isOpenedPopupNotification" } let user = UserDefaultsWrapper() let app = UserDefaultsWrapper() } 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?.availableBalance, .availableBalance) .set(user?.rewardPoint, .rewardPoint) .set(user?.verified, .verified) .set(user?.kyc, .kyc) 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?.pennyTestStatus, .pennyTestStatusCode) .set(user?.accessTokenRegTime, .accessTokenRegTime) .set(user?.accessTokenExpTime, .accessTokenExpTime) return self.user } }