<?php

namespace App\Http\Controllers;

use App\Models\Expediente;
use Illuminate\Http\Request;

class ExpedienteController extends Controller
{
    /**
     * Muestra la lista de expedientes de YBER.
     */
    public function index()
    {
        $expedientes = Expediente::all();
        return view('expedientes.index', compact('expedientes'));
    }

    /**
     * Muestra el formulario para registrar un nuevo caso jurídico.
     */
    public function create()
    {
        return view('expedientes.create');
    }

    /**
     * Guarda el expediente en la base de datos.
     */
    public function store(Request $request)
    {
        $validated = $request->validate([
            'codigo_proceso'    => 'required|unique:expedientes',
            'cliente_nombre'    => 'required|string|max:255',
            'tipo_derecho'      => 'required|string',
            'hechos_relevantes' => 'required|string',
        ]);

        Expediente::create($validated);

        return redirect()->route('expedientes.index')
                         ->with('success', 'Expediente registrado con éxito.');
    }

    /**
     * Muestra el formulario para editar un expediente existente.
     */
    public function edit(Expediente $expediente)
    {
        return view('expedientes.edit', compact('expediente'));
    }

    /**
     * Actualiza la información del expediente.
     */
    public function update(Request $request, Expediente $expediente)
    {
        $validated = $request->validate([
            'codigo_proceso'    => 'required|unique:expedientes,codigo_proceso,' . $expediente->id,
            'cliente_nombre'    => 'required|string|max:255',
            'tipo_derecho'      => 'required|string',
            'hechos_relevantes' => 'required|string',
            'estado'            => 'required|in:abierto,en_tramite,cerrado',
        ]);

        $expediente->update($validated);

        return redirect()->route('expedientes.index')
                         ->with('success', 'Expediente actualizado correctamente.');
    }

    /**
     * Elimina un expediente del sistema.
     */
    public function destroy(Expediente $expediente)
    {
        $expediente->delete();

        return redirect()->route('expedientes.index')
                         ->with('success', 'Expediente eliminado con éxito.');
    }
}