<?php

namespace App\Http\Middleware;

use App\Models\Caso;
use Illuminate\Http\Request;
use Inertia\Middleware;

class HandleInertiaRequests extends Middleware
{
    /**
     * The root template that is loaded on the first page visit.
     *
     * @var string
     */
    protected $rootView = 'app';

    /**
     * Determine the current asset version.
     */
    public function version(Request $request): ?string
    {
        return parent::version($request);
    }

    /**
     * Define the props that are shared by default.
     *
     * @return array<string, mixed>
     */
    public function share(Request $request): array
    {
        $user = $request->user();
        $stats = [
            'casos_activos' => 0,
            'en_reparacion' => 0,
            'pendientes' => 0,
            'finalizados' => 0,
        ];

        if ($user) {
            $query = Caso::query();

            // Si no es admin, filtrar por su tenant
            if ($user->rol !== 'admin' && $user->tenant_id) {
                $query->where('tenant_id', $user->tenant_id);
            }

            $stats = [
                'casos_activos' => (clone $query)->whereIn('estado_actual', [
                    'pendiente_coordinacion',
                    'coordinado',
                    'caso_en_ruta',
                    'analisis',
                    'inspeccion_realizada',
                    'elaboracion_informe',
                    'mesa_compras',
                    'en_reparacion',
                    'facturacion',
                ])->count(),
                'en_reparacion' => (clone $query)->where('estado_actual', 'en_reparacion')->count(),
                'pendientes' => (clone $query)->where('estado_actual', 'pendiente_coordinacion')->count(),
                'finalizados' => (clone $query)->where('estado_actual', 'finalizado')->count(),
            ];
        }

        return [
            ...parent::share($request),
            'auth' => [
                'user' => $user,
            ],
            'global_stats' => $stats,
            'flash' => [
                'message' => $request->session()->get('message'),
                'error' => $request->session()->get('error'),
            ],
            'ajustador_password' => $request->session()->get('ajustador_password'),
            'ajustador_email' => $request->session()->get('ajustador_email'),
        ];
    }
}
