43 lines
1.4 KiB
TypeScript
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 });
|
|
}
|
|
};
|