feature/fitlien-828 (#122)
All checks were successful
Deploy FitLien services to Dev / Deploy to Dev (push) Successful in 3m12s

Reviewed-on: #122
Co-authored-by: Sharon Dcruz <sharondcruz@cosq.net>
Co-committed-by: Sharon Dcruz <sharondcruz@cosq.net>
This commit is contained in:
Sharon Dcruz 2025-09-22 08:30:39 +00:00 committed by Dhansh A S
parent a8cb7dce8c
commit f08bd7648b

View File

@ -19,7 +19,7 @@ interface MembershipData {
isPartialPayment?: boolean; isPartialPayment?: boolean;
remainingAmount?: number; remainingAmount?: number;
daysUntilExpiry?: number; daysUntilExpiry?: number;
expirationDate?: admin.firestore.Timestamp; expirationDate?: admin.firestore.Timestamp;
createdAt?: admin.firestore.Timestamp; createdAt?: admin.firestore.Timestamp;
updatedAt?: admin.firestore.Timestamp; updatedAt?: admin.firestore.Timestamp;
[key: string]: any; [key: string]: any;
@ -30,11 +30,6 @@ interface ClientFields {
[key: string]: any; [key: string]: any;
} }
interface PaymentData {
dateTimestamp?: admin.firestore.Timestamp;
[key: string]: any;
}
interface MinimalCacheEntry { interface MinimalCacheEntry {
membershipId: string; membershipId: string;
userId: string; userId: string;
@ -44,7 +39,7 @@ interface MinimalCacheEntry {
phoneNumber?: string | null; phoneNumber?: string | null;
alternateContact?: string | null; alternateContact?: string | null;
renewalDate?: string | null; renewalDate?: string | null;
expirationDate?: string | null; expirationDate?: string | null;
createdAt?: string | null; createdAt?: string | null;
daysUntilExpiry?: number | null; daysUntilExpiry?: number | null;
hasPersonalTraining: boolean; hasPersonalTraining: boolean;
@ -99,7 +94,9 @@ export const getMemberCache = onRequest(
try { try {
const [fileBuffer] = await file.download(); const [fileBuffer] = await file.download();
const jsonData: MinimalJsonCacheData = JSON.parse(fileBuffer.toString()); const jsonData: MinimalJsonCacheData = JSON.parse(
fileBuffer.toString()
);
logger.info( logger.info(
`Retrieved ${jsonData.totalMembers} members from cache for gym ${gymId}` `Retrieved ${jsonData.totalMembers} members from cache for gym ${gymId}`
@ -229,7 +226,9 @@ export const updateMemberCache = onRequest(
} }
); );
async function fetchAllMinimalMembers(gymId: string): Promise<MinimalCacheEntry[]> { async function fetchAllMinimalMembers(
gymId: string
): Promise<MinimalCacheEntry[]> {
const members: MinimalCacheEntry[] = []; const members: MinimalCacheEntry[] = [];
const membershipsSnapshot = await app const membershipsSnapshot = await app
@ -314,7 +313,11 @@ async function updateSpecificMembers(
); );
return null; return null;
} }
return await generateMinimalCacheEntry(userId, doc.id, membershipData); return await generateMinimalCacheEntry(
userId,
doc.id,
membershipData
);
} catch (error) { } catch (error) {
logger.error(`Error processing member ${doc.id}:`, error); logger.error(`Error processing member ${doc.id}:`, error);
return null; return null;
@ -364,11 +367,11 @@ async function generateMinimalCacheEntry(
membershipData: MembershipData membershipData: MembershipData
): Promise<MinimalCacheEntry> { ): Promise<MinimalCacheEntry> {
try { try {
let firstName = ''; let firstName = "";
let lastName = ''; let lastName = "";
let email = ''; let email = "";
let phoneNumber = ''; let phoneNumber = "";
let alternateContact = ''; let alternateContact = "";
try { try {
const clientFieldsSnapshot = await app const clientFieldsSnapshot = await app
@ -382,11 +385,12 @@ async function generateMinimalCacheEntry(
const fieldData = fieldDoc.data() as ClientFields; const fieldData = fieldDoc.data() as ClientFields;
const fields = fieldData.fields || {}; const fields = fieldData.fields || {};
firstName = fields['first-name'] || fieldData['first-name'] || ''; firstName = fields["first-name"] || fieldData["first-name"] || "";
lastName = fields['last-name'] || fieldData['last-name'] || ''; lastName = fields["last-name"] || fieldData["last-name"] || "";
email = fields['email'] || fieldData['email'] || ''; email = fields["email"] || fieldData["email"] || "";
phoneNumber = fields['phone-number'] || fieldData['phone-number'] || ''; phoneNumber = fields["phone-number"] || fieldData["phone-number"] || "";
alternateContact = fields['alternate-contact'] || fieldData['alternate-contact'] || ''; alternateContact =
fields["alternate-contact"] || fieldData["alternate-contact"] || "";
} }
} catch (error) { } catch (error) {
logger.error(`Error getting fields for user ${userId}:`, error); logger.error(`Error getting fields for user ${userId}:`, error);
@ -394,11 +398,12 @@ async function generateMinimalCacheEntry(
const daysUntilExpiry = membershipData.daysUntilExpiry || null; const daysUntilExpiry = membershipData.daysUntilExpiry || null;
const displayName = firstName.length === 0 ? 'Unknown' : const displayName =
(lastName.length === 0 ? firstName : `${firstName} ${lastName}`); firstName.length === 0
? "Unknown"
const displayName = firstName.length === 0 ? 'Unknown' : : lastName.length === 0
(lastName.length === 0 ? firstName : `${firstName} ${lastName}`); ? firstName
: `${firstName} ${lastName}`;
const isPartial = membershipData.isPartialPayment === true; const isPartial = membershipData.isPartialPayment === true;
const remaining = membershipData.remainingAmount || 0; const remaining = membershipData.remainingAmount || 0;
@ -407,20 +412,21 @@ async function generateMinimalCacheEntry(
const minimalEntry: MinimalCacheEntry = { const minimalEntry: MinimalCacheEntry = {
membershipId, membershipId,
userId, userId,
status: membershipData.status || 'N/A', status: membershipData.status || "N/A",
displayName, displayName,
email: email || null, email: email || null,
phoneNumber: phoneNumber || null, phoneNumber: phoneNumber || null,
alternateContact: alternateContact || null, alternateContact: alternateContact || null,
renewalDate: null, renewalDate: null,
expirationDate: membershipData.expirationDate expirationDate: membershipData.expirationDate
? membershipData.expirationDate.toDate().toISOString() ? membershipData.expirationDate.toDate().toISOString()
: null, : null,
createdAt: membershipData.createdAt createdAt: membershipData.createdAt
? membershipData.createdAt.toDate().toISOString() ? membershipData.createdAt.toDate().toISOString()
: null, : null,
daysUntilExpiry, daysUntilExpiry,
hasPersonalTraining: membershipData.subscription?.hasPersonalTraining === true, hasPersonalTraining:
membershipData.subscription?.hasPersonalTraining === true,
hasPartialPayment, hasPartialPayment,
remainingAmount: remaining, remainingAmount: remaining,
lastUpdated: new Date().toISOString(), lastUpdated: new Date().toISOString(),
@ -432,4 +438,3 @@ async function generateMinimalCacheEntry(
throw error; throw error;
} }
} }