<?php

namespace App\Http\Controllers\Ajustador;

use App\Http\Controllers\Controller;
use App\Models\Caso;
use Illuminate\Support\Facades\Auth;
use Inertia\Inertia;

class AjustadorDashboardController extends Controller
{
    public function index()
    {
        $ajustador = Auth::guard('ajustador')->user();

        $casos = Caso::where('ajustador_id', $ajustador->id)
            ->where('estado_actual', '!=', 'recoordinacion')
            ->with(['cliente', 'vehiculo', 'taller', 'aseguradora'])
            ->orderBy('created_at', 'desc')
            ->get();

        // Normalizar archivos para cada caso
        $casos->each(function ($caso) {
            $paths = $caso->aviso_siniestro_path;
            if (is_string($paths)) {
                $decoded = json_decode($paths, true);
                $caso->aviso_siniestro_path = is_array($decoded) ? $decoded : [];
            } elseif (! is_array($paths)) {
                $caso->aviso_siniestro_path = [];
            }
        });

        return Inertia::render('Ajustador/Dashboard', [
            'title' => 'Mis Casos Asignados',
            'ajustador' => $ajustador,
            'casos' => $casos,
            'estados' => Caso::ESTADOS,
        ]);
    }

    public function show(Caso $caso)
    {
        $ajustador = Auth::guard('ajustador')->user();

        if ($caso->ajustador_id !== $ajustador->id) {
            return redirect()->route('ajustador.dashboard')
                ->with('message', 'Este caso ya no está asignado a ti.');
        }

        $caso->load(['cliente', 'vehiculo', 'taller', 'aseguradora', 'broker']);

        $paths = $caso->aviso_siniestro_path;
        if (is_string($paths)) {
            $decoded = json_decode($paths, true);
            $caso->aviso_siniestro_path = is_array($decoded) ? $decoded : [];
        } elseif (! is_array($paths)) {
            $caso->aviso_siniestro_path = [];
        }

        $ajustadorPaths = $caso->ajustador_archivos;
        if (is_string($ajustadorPaths)) {
            $decoded = json_decode($ajustadorPaths, true);
            $caso->ajustador_archivos = is_array($decoded) ? $decoded : [];
        } elseif (! is_array($ajustadorPaths)) {
            $caso->ajustador_archivos = [];
        }

        return Inertia::render('Ajustador/CasoShow', [
            'title' => 'Caso '.$caso->numero_reclamo,
            'caso' => $caso,
            'ajustador' => $ajustador,
            'estados' => Caso::ESTADOS,
        ]);
    }
}
