<?php

namespace App\Http\Controllers;

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

class TiposVeiculosController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index(Request $request)
    {
        $busqueda = $request->busqueda;

        if($busqueda) {
            $tiposVeiculos = tiposVeiculos::where('nombre', 'LIKE', "%{$busqueda}%")->get();

            if($tiposVeiculos->count() == 0) {
                return redirect()->route('tiposVeiculos.index')
                               ->with('error', value: 'No existe ningun tipo de vehiculo con el nombre "' . $busqueda . '". Por favor, inténtalo de nuevo.');
            }

            // Si solo hay una marca, mostrar sus detalles
            if($tiposVeiculos->count() == 1) {
                $tiposVeiculos = $tiposVeiculos->first();
                return redirect()->route('vehiculos.edit', $tiposVeiculos->id);
            }

            // Si hay múltiples coincidencias, mostrar la lista filtrada
            return view('vehiculos', ["tiposVeiculos" => $tiposVeiculos]);
        }

            // Si no hay búsqueda, mostrar todas las marcas
            $tiposVeiculos = tiposVeiculos::all();
            return view('vehiculos', ["tiposVeiculos" => $tiposVeiculos]);
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        $tiposVeiculos = tiposVeiculos::all();
        return view('vehiculosCrearEditar',['tiposVeiculos'=>$tiposVeiculos]);
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        $tiposVeiculos = new tiposVeiculos($request->all());
        $tiposVeiculos->status = true;
        $tiposVeiculos->save();
        return redirect()->route('vehiculos.index')->with('success', 'Tipo de vehiculo creado exitosamente.');
    }

    /**
     * Display the specified resource.
     */
    public function show(tiposVeiculos $tiposVeiculos)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit($id)
    {
        $tipoVehiculo = tiposVeiculos::find($id);
        return view('vehiculosCrearEditar', ['tipoVehiculo' => $tipoVehiculo]);
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, $id)
    {
        $tipoVehiculo = tiposVeiculos::find($id);
        $tipoVehiculo->fill($request->all());
        if ($request->has('status')) {
            $tipoVehiculo->status = $request->status;
        }
        $tipoVehiculo->save();
        return redirect()->route('vehiculos.index')->with('success', 'Vehículo actualizado exitosamente.');
    }

    public function toggleStatus($id)
    {
        $tipoVehiculo = tiposVeiculos::findOrFail($id);
        $tipoVehiculo->status = !$tipoVehiculo->status;
        $tipoVehiculo->save();

        $mensaje = $tipoVehiculo->status ? 'Tipo de vehículo activado exitosamente.' : 'Tipo de vehículo desactivado exitosamente.';
        return redirect()->route('vehiculos.index')->with('success', $mensaje);
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy($id)
    {
        $tiposVeiculos = tiposVeiculos::find($id);
        $tiposVeiculos->status = false;
        $tiposVeiculos->save();
        return redirect()->route('vehiculos.index')->with('success', 'Vehiculo eliminado exitosamente.');
    }
}