import { NextRequest, NextResponse } from 'next/server';
import { typedQuery } from '@/backend/utils/typedQuery';

interface CardDetail {
  label: string;
  value: string;
}

interface Card {
  id:number
  title: string;
  logo: string;
  image: string;
  ccurl:string;
  details: CardDetail[];
  benefits: string[];
   creditcarddetails: CardDetailsRow[];
}

interface CardRow {
  id: number;
  name: string;
  minSalary: string;
  annualFee: string;
  ccurl: string;
  image: string;
}

interface BenefitRow {
  benefit: string;
}

interface CardDetailsRow {
  benfitcatgory: string;
  benefitdetails: string;
  benefitid: number;
}

// Optional: force Node.js runtime to avoid Edge behavior
export const runtime = 'nodejs';

export async function GET(
  req: NextRequest,
  { params }: { params:  Promise<{id: string}>  }
) {
  const vparams= await params;
  const id = vparams.id;
//console.log('[INFO] Fetching card details for ID:', id);
  try {
    // Fetch main card info
    const [cards] = await typedQuery<CardRow>(
      `
      SELECT DISTINCT
        cc.idcreditcards AS id,
        cc.creditcardsname AS name,
        cc.MinimumSalary AS minSalary,
        cc.AnnualFee AS annualFee,
        CONCAT('/cardimages/', cc.creditcardsimagename) AS image
        ,cc.ccurl
      FROM creditcards cc
      INNER JOIN creditcardstypes ct ON ct.idcreditcards = cc.idcreditcards
      WHERE cc.ccurl = ?
      `,
      [id]
    );

    if (cards.length === 0) {
      return NextResponse.json({ error: 'Card not found' }, { status: 404 });
    }

    const card = cards[0];

    // Fetch feature benefits
    const [benefitsRows] = await typedQuery<BenefitRow>(
      `
      SELECT creditcardsfeturesDetails AS benefit
      FROM creditcardsfetures
      WHERE idcreditcards = ?
      `,
      [card.id]
    );

    const benefits = benefitsRows.map((row) => row.benefit);

    // Fetch detailed benefits
    const [cardDetailsRows] = await typedQuery<CardDetailsRow>(
      `
      SELECT
        idcreditcardsbenefits AS benefitid,
        creditcardsbenefitsDetails AS benefitdetails,
        creditcardsbenefitscategory AS benfitcatgory
      FROM creditcardsbenefits
      WHERE idcreditcards = ?
      `,
      [card.id]
    );

    const creditcarddetails = cardDetailsRows;

    // Card summary details
    const details: CardDetail[] = [
      { label: 'Minimum Salary', value: `AED ${card.minSalary || 'N/A'}` },
      { label: 'Annual Fee', value: `${card.annualFee || 'N/A'}` },
    ];

    // Final API response
    const cardData: Card = {
      id:card.id,
      title: card.name,
      logo: '/default-logo.png',
      image: card.image,
      ccurl: card.ccurl,
      details,
      benefits,
      creditcarddetails     
    };

    return NextResponse.json(cardData);
  } catch (error) {
    //console.error('API error:', error);
    return NextResponse.json(
      { success: false, error: (error as Error).message },
      { status: 500 }
    );
  }
}
