muller-reporting-sys/app/api/shifts/route.ts
2025-11-12 22:21:35 +03:00

77 lines
1.8 KiB
TypeScript

import { prisma } from "@/lib/prisma"
import { auth } from "@/lib/auth"
import { NextResponse } from "next/server"
export async function POST(req: Request) {
const session = await auth()
const manager = await prisma.shiftManager.findFirst({
where: { email: session?.user?.email || "" }
})
if (!manager) {
return NextResponse.json({ error: "Manager not found" }, { status: 404 })
}
const body = await req.json()
const { name, shiftDate, teamId, operators } = body
const shiftDateObj = new Date(shiftDate)
let startTime: Date
let endTime: Date
if (name === "AM") {
// AM shift: 7:00 AM to 7:00 PM (same day)
startTime = new Date(shiftDateObj)
startTime.setHours(7, 0, 0, 0)
endTime = new Date(shiftDateObj)
endTime.setHours(19, 0, 0, 0)
} else {
// PM shift: 7:00 PM to 7:00 AM (next day)
startTime = new Date(shiftDateObj)
startTime.setHours(19, 0, 0, 0)
endTime = new Date(shiftDateObj)
endTime.setDate(endTime.getDate() + 1) // Next day
endTime.setHours(7, 0, 0, 0)
}
const shift = await prisma.shift.create({
data: {
name,
shiftDate: new Date(shiftDate),
startTime,
endTime,
shiftManagerId: manager.id,
status: "active"
}
})
const machines = await prisma.machine.findMany({ take: 7 })
for (let i = 0; i < operators.length; i++) {
if (operators[i]) {
await prisma.shiftTeamMember.create({
data: {
shiftId: shift.id,
teamId,
workerId: operators[i],
shiftRole: "Blow Moulder Level 1",
machineId: machines[i].id
}
})
await prisma.machineShiftReport.create({
data: {
shiftId: shift.id,
machineId: machines[i].id,
workerId: operators[i]
}
})
}
}
return NextResponse.json(shift)
}