import { prisma } from "@/lib/prisma";
import bcrypt from "bcryptjs";
import { generateToken } from "@/lib/jwt";
import { NextResponse } from "next/server";

export async function POST(
  req: Request
) {
  try {
    const body = await req.json();

    const admin =
      await prisma.master_admin_users.findFirst({
        where: {
          user_email: body.email,
          active_status: true,
          delete_status: false,
        },
      });

    if (!admin) {
      return NextResponse.json(
        {
          success: false,
          message: "Admin not found",
        },
        { status: 400 }
      );
    }

    const match =
      await bcrypt.compare(
        body.password,
        admin.user_password
      );

    if (!match) {
      return NextResponse.json(
        {
          success: false,
          message: "Wrong password",
        },
        { status: 400 }
      );
    }

    const token =
      generateToken(admin.id);

    const response =
      NextResponse.json({
        success: true,
      });

    // response.cookies.set(
    //   "admin_token",
    //   token,
    //   {
    //     httpOnly: true,
    //     secure:
    //       process.env.NODE_ENV ===
    //       "production",
    //     path: "/",
    //   }
    // );

    response.cookies.set("admin_token", token, {
      httpOnly: true,
      secure: false,
      sameSite: "lax",
      path: "/",
    });

    return response;
  } catch (error) {
    return NextResponse.json(
      {
        success: false,
      },
      { status: 500 }
    );
  }
}