feature/fitlien-828 (#122)
All checks were successful
Deploy FitLien services to Dev / Deploy to Dev (push) Successful in 3m12s
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:
parent
a8cb7dce8c
commit
f08bd7648b
@ -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<MinimalCacheEntry[]> {
|
||||
async function fetchAllMinimalMembers(
|
||||
gymId: string
|
||||
): Promise<MinimalCacheEntry[]> {
|
||||
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<MinimalCacheEntry> {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user