notification-bug-fix #112
| @ -474,16 +474,44 @@ async function processExpiringMembership( | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| async function getTrainerUserId(trainerId: string): Promise<string> { | ||||
|   try { | ||||
|     const trainerDoc = await app | ||||
|       .firestore() | ||||
|       .collection("trainer_profiles") | ||||
|       .doc(trainerId) | ||||
|       .get(); | ||||
| 
 | ||||
|     if (!trainerDoc.exists) { | ||||
|       throw new Error(`Trainer profile not found for ID: ${trainerId}`); | ||||
|     } | ||||
| 
 | ||||
|     const trainerData = trainerDoc.data(); | ||||
|     if (!trainerData?.userId) { | ||||
|       throw new Error(`userId not found in trainer profile: ${trainerId}`); | ||||
|     } | ||||
| 
 | ||||
|     return trainerData.userId; | ||||
|   } catch (error) { | ||||
|     logger.error(`Error getting userId for trainer ${trainerId}:`, error); | ||||
|     return trainerId; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| async function sendTrainerNotifications( | ||||
|   membershipId: string, | ||||
|   membershipData: MembershipData, | ||||
|   notificationType: "expired" | "expiring" | ||||
| ): Promise<void> { | ||||
|   try { | ||||
|     const trainerAssignments = await getTrainerAssignmentsForMembership(membershipId); | ||||
|     const trainerAssignments = await getTrainerAssignmentsForMembership( | ||||
|       membershipId | ||||
|     ); | ||||
| 
 | ||||
|     if (trainerAssignments.length === 0) { | ||||
|       logger.info(`No trainer assignments found for membership ${membershipId}`); | ||||
|       logger.info( | ||||
|         `No trainer assignments found for membership ${membershipId}` | ||||
|       ); | ||||
|       return; | ||||
|     } | ||||
| 
 | ||||
| @ -519,13 +547,17 @@ async function sendTrainerNotifications( | ||||
| 
 | ||||
|       try { | ||||
|         const trainerName = await getTrainerName(assignment.trainerId); | ||||
|         const trainerUserId = await getTrainerUserId(assignment.trainerId); | ||||
| 
 | ||||
|         const notifType = notificationType === "expired" ? "trainer_client_plan_expired" : "trainer_client_plan_expiring"; | ||||
|         const notifType = | ||||
|           notificationType === "expired" | ||||
|             ? "trainer_client_plan_expired" | ||||
|             : "trainer_client_plan_expiring"; | ||||
|         const existing = await app | ||||
|           .firestore() | ||||
|           .collection("notifications") | ||||
|           .where("type", "==", notifType) | ||||
|           .where("recipientId", "==", assignment.trainerId) | ||||
|           .where("recipientId", "==", trainerUserId) | ||||
|           .where("data.membershipId", "==", membershipId) | ||||
|           .where( | ||||
|             "data.expiryDate", | ||||
| @ -546,7 +578,7 @@ async function sendTrainerNotifications( | ||||
| 
 | ||||
|         const notificationData: any = { | ||||
|           senderId: "system", | ||||
|           recipientId: assignment.trainerId, | ||||
|           recipientId: trainerUserId, | ||||
|           type: notifType, | ||||
|           notificationSent: false, | ||||
|           timestamp: admin.firestore.FieldValue.serverTimestamp(), | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user