import type { NextApiRequest, NextApiResponse } from "next";
import axios from "axios";

export default async function handler(
  req: NextApiRequest,
  res: NextApiResponse
) {
  if (req.method !== "GET") {
    return res.status(405).json({ message: "Method not allowed" });
  }

  const { account_number, bank_code } = req.query;

  if (!account_number || !bank_code) {
    return res
      .status(400)
      .json({ message: "account_number and bank_code are required" });
  }

  const paystackApiKey = process.env.API_KEY;

  if (!paystackApiKey) {
    return res
      .status(500)
      .json({ message: "Paystack API key is not configured on the server" });
  }

  try {
    const paystackResponse = await axios.get(
      `https://api.paystack.co/bank/resolve?account_number=${account_number}&bank_code=${bank_code}`,
      {
        headers: {
          Authorization: `Bearer ${paystackApiKey}`,
        },
      }
    );

    return res.status(200).json(paystackResponse.data);
  } catch (error: any) {
    console.error("Error resolving bank account via Paystack:", error.response?.data || error.message);
    const statusCode = error.response?.status || 500;
    const errorMessage =
      error.response?.data?.message || "Failed to resolve bank account";
    return res.status(statusCode).json({ message: errorMessage });
  }
}
