import { NextRequest, NextResponse } from 'next/server';
import { dbConnect } from '@/lib/dbConnect';
import { CoursePurchaseHistory } from '@/models/CoursePurchaseHistory';
import { Student } from '@/models/Student';
import { Order } from '@/models/Order';
import { Course } from '@/models/Course';
import { requireAuth } from '@/lib/auth';

interface Params {
  params: { id: string };
}

// GET /api/purchase-history/[id]
export async function GET(req: NextRequest, { params }: Params) {
  const auth = requireAuth(req);
  if (auth instanceof NextResponse) return auth;

  try {
    await dbConnect();
    const record = await CoursePurchaseHistory.findById(params.id)
      .populate('student', 'name email phoneNumber')
      .populate('order')
      .populate('courseId', 'title level slug courseType regularPrice offerPrice')
      .populate('lessons', 'title price chapterNumber durationMinutes');

    if (!record) {
      return NextResponse.json({ success: false, error: 'Purchase history record not found' }, { status: 404 });
    }

    // Verify access
    if (auth.user.role === 'student' && record.student._id.toString() !== auth.user.id) {
      return NextResponse.json({ success: false, error: 'Forbidden' }, { status: 403 });
    }

    return NextResponse.json({ success: true, record });
  } catch (error: any) {
    return NextResponse.json(
      { success: false, error: error.message || 'Server error fetching purchase history' },
      { status: 500 }
    );
  }
}
