77 lines
1.8 KiB
TypeScript
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)
|
|
}
|