43 lines
1.0 KiB
TypeScript
43 lines
1.0 KiB
TypeScript
import { NextResponse } from "next/server";
|
||
import { prisma } from "@/lib/prisma";
|
||
|
||
const allowedStatuses = [
|
||
"NEW",
|
||
"IN_PROGRESS",
|
||
"CALL_SCHEDULED",
|
||
"WON",
|
||
"LOST",
|
||
] as const;
|
||
|
||
type LeadStatus = (typeof allowedStatuses)[number];
|
||
|
||
type PatchPayload = {
|
||
status?: LeadStatus;
|
||
};
|
||
|
||
export async function PATCH(
|
||
request: Request,
|
||
context: { params: Promise<{ id: string }> }
|
||
) {
|
||
try {
|
||
const { id } = await context.params;
|
||
const body = (await request.json()) as PatchPayload;
|
||
|
||
if (!body.status || !allowedStatuses.includes(body.status)) {
|
||
return NextResponse.json({ error: "Некорректный статус" }, { status: 400 });
|
||
}
|
||
|
||
const lead = await prisma.lead.update({
|
||
where: { id },
|
||
data: { status: body.status },
|
||
});
|
||
|
||
return NextResponse.json({ success: true, lead });
|
||
} catch (error) {
|
||
console.error("PATCH /api/leads/[id] error:", error);
|
||
return NextResponse.json(
|
||
{ error: "Не удалось обновить статус" },
|
||
{ status: 500 }
|
||
);
|
||
}
|
||
} |