<?php

namespace App\AI\Tools;

use App\Models\Evento;

class ListarEventosTool
{
    public function __invoke(
        ?string $fecha_desde = null,
        ?string $fecha_hasta = null,
        ?int $id_torneo = null
    ): string {
        $query = Evento::with(['equipoLocal.club', 'equipoVisitante.club'])
            ->whereNull('deleted_at');

        if ($fecha_desde) {
            $query->whereDate('fecha_evento', '>=', $fecha_desde);
        }
        if ($fecha_hasta) {
            $query->whereDate('fecha_evento', '<=', $fecha_hasta);
        }
        if ($id_torneo) {
            $query->where('id_torneo', $id_torneo);
        }

        $eventos = $query->orderBy('fecha_evento')->get()->map(fn($e) => [
            'id_evento'          => $e->id_evento,
            'fecha'              => $e->fecha_evento?->format('Y-m-d'),
            'hora'               => $e->hora_inicio?->format('H:i'),
            'local'              => $e->equipoLocal?->club?->nombre,
            'visitante'          => $e->equipoVisitante?->club?->nombre,
            'marcador_local'     => $e->marcador_local,
            'marcador_visitante' => $e->marcador_visitante,
            'sede'               => $e->sede,
        ]);

        return json_encode($eventos);
    }
}
