Files
clinera-site/monitor-obaid-appointment.js
T

138 lines
5.3 KiB
JavaScript

// Monitor for obaid's new appointment in real-time
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
async function monitorObaidAppointment() {
console.log('👀 MONITORING FOR OBAID\'S NEW APPOINTMENT');
console.log('='.repeat(50));
console.log('📱 Waiting for appointment creation...');
console.log(' (Create your appointment in the UI now!)');
console.log('');
let lastAppointmentCount = await prisma.appointment.count();
let lastReminderCount = await prisma.scheduledReminder.count();
let lastMessageCount = await prisma.messageLog.count();
let checkCount = 0;
const monitor = setInterval(async () => {
checkCount++;
try {
const currentAppointmentCount = await prisma.appointment.count();
const currentReminderCount = await prisma.scheduledReminder.count();
const currentMessageCount = await prisma.messageLog.count();
// Check for new appointment
if (currentAppointmentCount > lastAppointmentCount) {
console.log('\n🆕 NEW APPOINTMENT DETECTED!');
// Get the latest appointment
const latestAppointment = await prisma.appointment.findFirst({
where: {
lead: { phone: '+201066544750' } // obaid's correct number
},
orderBy: { createdAt: 'desc' },
include: {
lead: true,
treatment: true,
scheduledReminders: {
include: { template: true }
}
}
});
if (latestAppointment) {
console.log(`📋 Appointment Details:`);
console.log(` ID: ${latestAppointment.id}`);
console.log(` Patient: ${latestAppointment.lead.name}`);
console.log(` Phone: ${latestAppointment.lead.phone}`);
console.log(` Treatment: ${latestAppointment.treatment.name}`);
console.log(` Date/Time: ${latestAppointment.dateTime}`);
console.log(` Status: ${latestAppointment.status}`);
console.log(` Created: ${latestAppointment.createdAt}`);
console.log(` Reminders: ${latestAppointment.scheduledReminders.length}`);
if (latestAppointment.scheduledReminders.length > 0) {
console.log('\n📅 Scheduled Reminders:');
latestAppointment.scheduledReminders.forEach((r, i) => {
console.log(` ${i + 1}. ${r.template.trigger} - ${r.scheduledFor} (${r.status})`);
});
// Check for due reminders
const dueNow = latestAppointment.scheduledReminders.filter(r =>
r.status === 'pending' && new Date(r.scheduledFor) <= new Date()
);
if (dueNow.length > 0) {
console.log(`\n${dueNow.length} reminders due now - triggering cron...`);
const cronResponse = await fetch('http://localhost:3000/api/cron/send-reminders?key=dev-cron-key', {
method: 'POST'
});
if (cronResponse.ok) {
const cronResult = await cronResponse.json();
console.log(`📤 Cron result: sent=${cronResult.sent}, failed=${cronResult.failed}`);
if (cronResult.sent > 0) {
console.log('🎉 BOOKING CONFIRMATION SENT TO OBAID!');
console.log('📱 Check your WhatsApp (+201066544750)');
}
}
}
} else {
console.log('❌ No reminders scheduled - something went wrong!');
}
}
}
// Check for new reminders
if (currentReminderCount > lastReminderCount) {
console.log(`📅 Reminders: ${lastReminderCount}${currentReminderCount}`);
}
// Check for new messages
if (currentMessageCount > lastMessageCount) {
console.log(`📨 Messages: ${lastMessageCount}${currentMessageCount}`);
// Show latest message to obaid
const latestMessage = await prisma.messageLog.findFirst({
where: { phone: '+201066544750' },
orderBy: { createdAt: 'desc' }
});
if (latestMessage) {
console.log(` Latest to obaid: ${latestMessage.status} - "${latestMessage.message.substr(0, 40)}..."`);
}
}
// Update counters
lastAppointmentCount = currentAppointmentCount;
lastReminderCount = currentReminderCount;
lastMessageCount = currentMessageCount;
// Show status every 10 checks (20 seconds)
if (checkCount % 10 === 0) {
console.log(`⏱️ Monitoring... (${checkCount * 2}s) - ${currentAppointmentCount} appointments, ${currentMessageCount} messages`);
}
} catch (error) {
console.error('❌ Monitor error:', error.message);
}
}, 2000); // Check every 2 seconds
// Stop monitoring after 5 minutes
setTimeout(() => {
clearInterval(monitor);
console.log('\n⏹️ Monitoring stopped.');
console.log('If no appointment detected, create it in the Clinera UI.');
prisma.$disconnect();
process.exit(0);
}, 5 * 60 * 1000);
}
console.log('🎯 OBAID - CREATE YOUR APPOINTMENT NOW!');
console.log(' This monitor will detect it and show the reminder flow.');
console.log('');
monitorObaidAppointment().catch(console.error);