import { NextResponse } from "next/server";
import { getServerSession } from "next-auth";
import { authOptions } from "@/lib/auth";
import prisma from "@/lib/prisma";

export async function GET() {
  try {
    const leaveTypes = await prisma.leaveType.findMany({
      orderBy: { name: "asc" },
    });
    return NextResponse.json(leaveTypes);
  } catch (error) {
    return NextResponse.json({ error: "Failed to fetch leave types" }, { status: 500 });
  }
}

export async function POST(req: Request) {
  try {
    const session = await getServerSession(authOptions);
    if (!session || session.user.role !== "ADMIN") {
      return NextResponse.json({ error: "Unauthorized" }, { status: 403 });
    }

    const body = await req.json();
    const leaveType = await prisma.leaveType.create({ data: body });
    return NextResponse.json(leaveType, { status: 201 });
  } catch (error) {
    return NextResponse.json({ error: "Failed to create leave type" }, { status: 500 });
  }
}
