57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
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 },
|
|
);
|
|
}
|
|
};
|