// // 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 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 isExistingUser 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 case agreeYn case referralCode case hasUpdatedDefaultCredentials case hasVerifiedOTP case expirtDate case idStatus case notificationCount case showInviteCode case rewardPoints case profileImage } enum AppKey: String, KeyProtocol { case ngrokHost case uuid case firstTimeLanguageIsSet case criticalUpdate case currentLanguage case dateOfDontShowNotification case dateOfExpireNotification case isOpenedTokenRenwalAlert case isOpenedPopupNotification case openCount } enum UserRegisterKey: String, KeyProtocol { case mobileNumber case referenceId case generatedUserId } let user = UserDefaultsWrapper() let app = UserDefaultsWrapper() let register = UserDefaultsWrapper() let generatedUserId = 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) .set(user?.selfieDocPath, .profileImage) 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?.verified, .verified) .set(user?.hasUpdatedDefaultCredentials, .hasUpdatedDefaultCredentials) .set(user?.notificationCount, .notificationCount) .set(user?.hasVerifiedOTP, .hasVerifiedOTP) .set(user?.isExistingUser, .isExistingUser) .set(user?.showInviteCode, .showInviteCode) 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) .set(user?.rewardPoint, .rewardPoints) self.user .set(user?.agreeYn, .agreeYn) .set(user?.referralCode, .referralCode) self.user .set(user?.expiryDate, .expirtDate) .set(user?.idStaus, .idStatus) return self.user } }