From f08bd7648b790c004dde5c5b5bea1360b68c1558 Mon Sep 17 00:00:00 2001 From: Sharon Dcruz Date: Mon, 22 Sep 2025 08:30:39 +0000 Subject: [PATCH] feature/fitlien-828 (#122) Reviewed-on: https://git.cosqnet.com/cosqnet/fitlien-services/pulls/122 Co-authored-by: Sharon Dcruz Co-committed-by: Sharon Dcruz --- functions/src/memberCache/memberCache.ts | 65 +++++++++++++----------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/functions/src/memberCache/memberCache.ts b/functions/src/memberCache/memberCache.ts index 27ac98e..95cdd2e 100644 --- a/functions/src/memberCache/memberCache.ts +++ b/functions/src/memberCache/memberCache.ts @@ -19,7 +19,7 @@ interface MembershipData { isPartialPayment?: boolean; remainingAmount?: number; daysUntilExpiry?: number; - expirationDate?: admin.firestore.Timestamp; + expirationDate?: admin.firestore.Timestamp; createdAt?: admin.firestore.Timestamp; updatedAt?: admin.firestore.Timestamp; [key: string]: any; @@ -30,11 +30,6 @@ interface ClientFields { [key: string]: any; } -interface PaymentData { - dateTimestamp?: admin.firestore.Timestamp; - [key: string]: any; -} - interface MinimalCacheEntry { membershipId: string; userId: string; @@ -44,7 +39,7 @@ interface MinimalCacheEntry { phoneNumber?: string | null; alternateContact?: string | null; renewalDate?: string | null; - expirationDate?: string | null; + expirationDate?: string | null; createdAt?: string | null; daysUntilExpiry?: number | null; hasPersonalTraining: boolean; @@ -99,7 +94,9 @@ export const getMemberCache = onRequest( try { const [fileBuffer] = await file.download(); - const jsonData: MinimalJsonCacheData = JSON.parse(fileBuffer.toString()); + const jsonData: MinimalJsonCacheData = JSON.parse( + fileBuffer.toString() + ); logger.info( `Retrieved ${jsonData.totalMembers} members from cache for gym ${gymId}` @@ -229,7 +226,9 @@ export const updateMemberCache = onRequest( } ); -async function fetchAllMinimalMembers(gymId: string): Promise { +async function fetchAllMinimalMembers( + gymId: string +): Promise { const members: MinimalCacheEntry[] = []; const membershipsSnapshot = await app @@ -314,7 +313,11 @@ async function updateSpecificMembers( ); return null; } - return await generateMinimalCacheEntry(userId, doc.id, membershipData); + return await generateMinimalCacheEntry( + userId, + doc.id, + membershipData + ); } catch (error) { logger.error(`Error processing member ${doc.id}:`, error); return null; @@ -364,11 +367,11 @@ async function generateMinimalCacheEntry( membershipData: MembershipData ): Promise { try { - let firstName = ''; - let lastName = ''; - let email = ''; - let phoneNumber = ''; - let alternateContact = ''; + let firstName = ""; + let lastName = ""; + let email = ""; + let phoneNumber = ""; + let alternateContact = ""; try { const clientFieldsSnapshot = await app @@ -382,11 +385,12 @@ async function generateMinimalCacheEntry( const fieldData = fieldDoc.data() as ClientFields; const fields = fieldData.fields || {}; - firstName = fields['first-name'] || fieldData['first-name'] || ''; - lastName = fields['last-name'] || fieldData['last-name'] || ''; - email = fields['email'] || fieldData['email'] || ''; - phoneNumber = fields['phone-number'] || fieldData['phone-number'] || ''; - alternateContact = fields['alternate-contact'] || fieldData['alternate-contact'] || ''; + firstName = fields["first-name"] || fieldData["first-name"] || ""; + lastName = fields["last-name"] || fieldData["last-name"] || ""; + email = fields["email"] || fieldData["email"] || ""; + phoneNumber = fields["phone-number"] || fieldData["phone-number"] || ""; + alternateContact = + fields["alternate-contact"] || fieldData["alternate-contact"] || ""; } } catch (error) { logger.error(`Error getting fields for user ${userId}:`, error); @@ -394,11 +398,12 @@ async function generateMinimalCacheEntry( const daysUntilExpiry = membershipData.daysUntilExpiry || null; - const displayName = firstName.length === 0 ? 'Unknown' : - (lastName.length === 0 ? firstName : `${firstName} ${lastName}`); - - const displayName = firstName.length === 0 ? 'Unknown' : - (lastName.length === 0 ? firstName : `${firstName} ${lastName}`); + const displayName = + firstName.length === 0 + ? "Unknown" + : lastName.length === 0 + ? firstName + : `${firstName} ${lastName}`; const isPartial = membershipData.isPartialPayment === true; const remaining = membershipData.remainingAmount || 0; @@ -407,20 +412,21 @@ async function generateMinimalCacheEntry( const minimalEntry: MinimalCacheEntry = { membershipId, userId, - status: membershipData.status || 'N/A', + status: membershipData.status || "N/A", displayName, email: email || null, phoneNumber: phoneNumber || null, alternateContact: alternateContact || null, - renewalDate: null, + renewalDate: null, expirationDate: membershipData.expirationDate ? membershipData.expirationDate.toDate().toISOString() - : null, + : null, createdAt: membershipData.createdAt ? membershipData.createdAt.toDate().toISOString() : null, daysUntilExpiry, - hasPersonalTraining: membershipData.subscription?.hasPersonalTraining === true, + hasPersonalTraining: + membershipData.subscription?.hasPersonalTraining === true, hasPartialPayment, remainingAmount: remaining, lastUpdated: new Date().toISOString(), @@ -432,4 +438,3 @@ async function generateMinimalCacheEntry( throw error; } } -