37 lines
1.4 KiB
TypeScript
37 lines
1.4 KiB
TypeScript
import { NextResponse } from "next/server";
|
|
|
|
function required(value: FormDataEntryValue | null) {
|
|
return typeof value === "string" && value.trim().length > 0;
|
|
}
|
|
|
|
export async function POST(request: Request) {
|
|
const form = await request.formData();
|
|
const name = form.get("name");
|
|
const email = form.get("email");
|
|
const manufacturer = form.get("manufacturer");
|
|
const model = form.get("model");
|
|
const deviceType = form.get("deviceType");
|
|
const description = form.get("description");
|
|
const privacy = form.get("privacy");
|
|
|
|
if (!required(name) || !required(email) || !required(manufacturer) || !required(model) || !required(deviceType) || !required(description) || privacy !== "on") {
|
|
return NextResponse.json({ message: "Bitte füllen Sie alle Pflichtfelder aus." }, { status: 400 });
|
|
}
|
|
|
|
const intakeUrl = process.env.OLYMPUS_INTAKE_API_URL;
|
|
const hasIntegrationToken = Boolean(process.env.OLYMPUS_INTAKE_API_TOKEN);
|
|
|
|
console.info("repair_intake.received", {
|
|
hasIntakeIntegration: Boolean(intakeUrl && hasIntegrationToken),
|
|
manufacturer: String(manufacturer),
|
|
model: String(model),
|
|
deviceType: String(deviceType),
|
|
hasPhone: required(form.get("phone")),
|
|
hasSerialNumber: required(form.get("serialNumber")),
|
|
hasAccessories: required(form.get("accessories")),
|
|
});
|
|
|
|
return NextResponse.json({
|
|
message: "Ihre Reparaturanfrage wurde erfasst. Sie erhalten nach Prüfung eine Rückmeldung.",
|
|
});
|
|
}
|