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

// POST /api/campeonatos/[id]/partidos/[partidoId]/estadisticas - Registrar estadísticas de jugador
export async function POST(
  request: NextRequest,
  { params }: { params: Promise<{ id: string; partidoId: string }> }
) {
  try {
    const session = await getServerSession(authOptions);
    if (!session?.user) {
      return NextResponse.json({ error: 'No autorizado' }, { status: 401 });
    }

    if (!['COORDINADOR', 'PROFESOR'].includes(session.user.rol || '')) {
      return NextResponse.json({ error: 'No autorizado' }, { status: 403 });
    }

    const { partidoId } = await params;
    const body = await request.json();
    const { alumnoId, minutosJugados, goles, asistencias, tarjetasAmarillas, tarjetasRojas } = body;

    if (!alumnoId) {
      return NextResponse.json({ error: 'Se requiere alumnoId' }, { status: 400 });
    }

    // Verificar si ya existe
    const existing = await prisma.estadisticaCampeonato.findFirst({
      where: { partidoId, alumnoId },
    });

    let estadistica;
    if (existing) {
      estadistica = await prisma.estadisticaCampeonato.update({
        where: { id: existing.id },
        data: {
          minutosJugados: minutosJugados || 0,
          goles: goles || 0,
          asistencias: asistencias || 0,
          tarjetasAmarillas: tarjetasAmarillas || 0,
          tarjetasRojas: tarjetasRojas || 0,
        },
      });
    } else {
      estadistica = await prisma.estadisticaCampeonato.create({
        data: {
          partidoId,
          alumnoId,
          minutosJugados: minutosJugados || 0,
          goles: goles || 0,
          asistencias: asistencias || 0,
          tarjetasAmarillas: tarjetasAmarillas || 0,
          tarjetasRojas: tarjetasRojas || 0,
        },
      });
    }

    return NextResponse.json({ estadistica }, { status: 201 });
  } catch (error) {
    console.error('Error creating estadistica:', error);
    return NextResponse.json({ error: 'Error al registrar estadísticas' }, { status: 500 });
  }
}
