phosphat-report-app/app/routes/api.check-duplicate-report.ts

43 lines
1.4 KiB
TypeScript

import { json } from "@remix-run/node";
import type { ActionFunctionArgs } from "@remix-run/node";
import { prisma } from "~/utils/db.server";
import { requireAuthLevel } from "~/utils/auth.server";
export const action = async ({ request }: ActionFunctionArgs) => {
await requireAuthLevel(request, 1);
if (request.method !== "POST") {
return json({ error: "Method not allowed" }, { status: 405 });
}
try {
const { createdDate, shift, areaId, dredgerLocationId, reclamationLocationId } = await request.json();
// Parse the date and set to start of day
const date = new Date(createdDate);
date.setHours(0, 0, 0, 0);
const nextDay = new Date(date);
nextDay.setDate(nextDay.getDate() + 1);
// Check if a report already exists with same date, shift, area, dredger location, and reclamation location
const existingReport = await prisma.report.findFirst({
where: {
createdDate: {
gte: date,
lt: nextDay
},
shift,
areaId: parseInt(areaId),
dredgerLocationId: parseInt(dredgerLocationId),
reclamationLocationId: parseInt(reclamationLocationId)
}
});
return json({ exists: !!existingReport });
} catch (error) {
console.error("Error checking for duplicate report:", error);
return json({ error: "Failed to check for duplicate" }, { status: 500 });
}
};