import { NextRequest, NextResponse } from 'next/server'; import { NotificationAction, createNotificationLog, } from '~/lib/services/audit/notificationEntries.service'; import loadEnv from '../handler/load-env'; import sendOpenJobsEmails from '../handler/send-open-jobs-emails'; import validateApiKey from '../handler/validate-api-key'; export const POST = async (request: NextRequest) => { loadEnv(); try { validateApiKey(request); } catch { return NextResponse.json({}, { status: 401, statusText: 'Unauthorized' }); } try { const doctors = await sendOpenJobsEmails(); const doctorIds = doctors?.join(', ') ?? '-'; console.info( `Successfully sent out open job notification emails to doctorIds: ${doctorIds}`, ); await createNotificationLog({ action: NotificationAction.DOCTOR_NEW_JOBS, status: 'SUCCESS', comment: `doctors that received email: ${doctorIds}`, }); return NextResponse.json( { message: 'Successfully sent out open job notification emails to doctors.', }, { status: 200 }, ); } catch (e) { console.error( 'Error sending out open job notification emails to doctors.', e, ); await createNotificationLog({ action: NotificationAction.DOCTOR_NEW_JOBS, status: 'FAIL', comment: e instanceof Error ? e.message : 'Unknown error', }); return NextResponse.json( { message: 'Failed to send out open job notification emails to doctors.', }, { status: 500 }, ); } };