import { NextRequest, NextResponse } from 'next/server';
import { getServerSession } from 'next-auth';
import { authOptions } from '@/lib/auth';
import { prisma } from '@/lib/db';

export async function GET(
  request: NextRequest,
  { params }: { params: { id: string } }
) {
  try {
    const session = await getServerSession(authOptions);
    if (!session) {
      return NextResponse.json({ error: 'No autorizado' }, { status: 401 });
    }

    const pago = await prisma.pagoDetalle.findUnique({
      where: { id: params.id },
      include: {
        alumno: {
          include: {
            usuario: {
              select: {
                nombres: true,
                apellidos: true,
                rut: true
              }
            }
          }
        }
      }
    });

    if (!pago) {
      return NextResponse.json({ error: 'Pago no encontrado' }, { status: 404 });
    }

    return NextResponse.json(pago);
  } catch (error) {
    console.error('Error fetching pago:', error);
    return NextResponse.json({ error: 'Error al obtener pago' }, { status: 500 });
  }
}

export async function DELETE(
  request: NextRequest,
  { params }: { params: { id: string } }
) {
  try {
    const session = await getServerSession(authOptions);
    if (!session) {
      return NextResponse.json({ error: 'No autorizado' }, { status: 401 });
    }

    const userRol = (session.user as any).rol;
    if (userRol !== 'COORDINADOR') {
      return NextResponse.json({ error: 'Solo el coordinador puede eliminar pagos' }, { status: 403 });
    }

    await prisma.pagoDetalle.delete({
      where: { id: params.id }
    });

    return NextResponse.json({ message: 'Pago eliminado correctamente' });
  } catch (error) {
    console.error('Error deleting pago:', error);
    return NextResponse.json({ error: 'Error al eliminar pago' }, { status: 500 });
  }
}
