<?php

namespace App\Http\Controllers;

use App\Models\tiposLicencias;

use Illuminate\Http\Request;

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

        if($busqueda) {
            $tiposLicencias = TiposLicencias::where('tipoLicencia', 'LIKE', "%{$busqueda}%")->where('eliminado', 1)->get();

            if($tiposLicencias->count() == 0) {
                return redirect()->route('tiposLicencias.index')
                               ->with('error', 'No existe ningún tipo de licencia con el nombre "' . $busqueda . '". Por favor, inténtalo de nuevo.');
            }

            if($tiposLicencias->count() == 1) {
                $tipoLicencia = $tiposLicencias->first();
                return redirect()->route('tiposLicencias.edit', $tipoLicencia->id);
            }

            return view('tiposLicencia', ["tiposLicencias" => $tiposLicencias]);
        }

        $tiposLicencias = TiposLicencias::where('eliminado', 1)->get();
        return view('tiposLicencia', ["tiposLicencias" => $tiposLicencias]);
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        // No es necesario obtener todos los tipos de licencias aquí
        return view('tiposLicenciaCrearEditar', ['tipoLicencia' => null]); // Crea una nueva instancia para el formulario
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        $tipoLicencia = new TiposLicencias();
        $tipoLicencia->tipoLicencia = $request->tipoLicencia;
        $tipoLicencia->eliminado = 1;
        $tipoLicencia->save();

        return redirect()->route('tiposLicencias.index')->with('success', 'Tipo de licencia creado exitosamente.');
    }

    public function edit($id)
    {
        // Busca el tipo de licencia por ID
        $tipoLicencia = TiposLicencias::findOrFail($id);

        // Retorna la vista con el tipo de licencia para editar
        return view('tiposLicenciaCrearEditar', ['tipoLicencia' => $tipoLicencia]);
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, $id)
    {
        $tipoLicencia = TiposLicencias::findOrFail($id);
        $tipoLicencia->tipoLicencia = $request->tipoLicencia;
        if ($request->has('eliminado')) {
            $tipoLicencia->eliminado = $request->eliminado;
        }
        $tipoLicencia->save();

        return redirect()->route('tiposLicencias.index')->with('success', 'Tipo de licencia actualizado exitosamente.');
    }

    public function toggleStatus($id)
    {
        $tipoLicencia = TiposLicencias::findOrFail($id);
        $tipoLicencia->eliminado = !$tipoLicencia->eliminado;
        $tipoLicencia->save();

        $mensaje = $tipoLicencia->eliminado ? 'Tipo de licencia activado exitosamente.' : 'Tipo de licencia desactivado exitosamente.';
        return redirect()->route('tiposLicencias.index')->with('success', $mensaje);
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy($id)
    {
        $tipoLicencia = TiposLicencias::findOrFail($id);
        $tipoLicencia->eliminado = 0;
        $tipoLicencia->save();
        return redirect()->route('tiposLicencias.index')->with('success', 'Tipo de licencia eliminado exitosamente.');
    }
}