
import { NextRequest, NextResponse } from "next/server";
import { authOptions } from "@/app/api/auth/[...nextauth]/auth-options";
import { getServerSession } from "next-auth";
import { db } from "@/lib/db";
import { Prisma } from "@prisma/client";
import { getLogger } from "@/utils/logger";


const logger = getLogger("/api/admin/footerSection");


export const POST = async (req: NextRequest) => {
    try {

        const data = await req.formData();

        const session = await getServerSession(authOptions);
        if (!session || session.user.role !== "ADMIN") {
            logger.warn("Forbidden", { status: 403, session: session, userRole: session?.user.role });
            return new NextResponse("Forbidden", { status: 403 });
        }

        const footerSectionExists = await db.footerSection.findFirst({
            where: {
                title: data.get("title")?.toString() || "",
            }
        })

        if (footerSectionExists) {
            return NextResponse.json({ message: "Footer section with this title already exists" }, { status: 400 });
        }

        const footerSection = await db.footerSection.create({
            data: {
                title: data.get("title")?.toString() || "",
                description: data.get("description")?.toString() || "",
            }
        })

        return NextResponse.json({ message: "Footer section created successfully" }, { status: 200 });

    } catch (error: any) {
        logger.error("Error creating footer section", { errorMsg: error.message, errorData: error.config?.data });
        return new NextResponse("Internal server Error", { status: 500 });
    }

}


export const GET = async (req: NextRequest) => {
    try {
        const session = await getServerSession(authOptions);
        if (!session || session.user.role !== "ADMIN") {
            logger.warn("Forbidden", { status: 403, session: session, userRole: session?.user.role });
            return new NextResponse("Forbidden", { status: 403 });
        }

        const footerSections = await db.footerSection.findMany({});

        return NextResponse.json({ footerSections }, { status: 200 });

    } catch (error: any) {
        logger.error("Error fetching footer sections", { errorMsg: error.message });
        return new NextResponse("Internal server Error", { status: 500 });
    }
}