You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							167 lines
						
					
					
						
							5.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							167 lines
						
					
					
						
							5.3 KiB
						
					
					
				
								<?php
							 | 
						|
								
							 | 
						|
								namespace App\Http\Controllers;
							 | 
						|
								
							 | 
						|
								use App\Models\tiposVeiculos;
							 | 
						|
								use Illuminate\Http\Request;
							 | 
						|
								use Barryvdh\DomPDF\Facade\Pdf;
							 | 
						|
								
							 | 
						|
								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.');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function exportExcel()
							 | 
						|
								    {
							 | 
						|
								        $tiposVeiculos = tiposVeiculos::all();
							 | 
						|
								        
							 | 
						|
								        $headers = [
							 | 
						|
								            'Content-Type' => 'text/csv',
							 | 
						|
								            'Content-Disposition' => 'attachment; filename="tipos_vehiculos.csv"',
							 | 
						|
								        ];
							 | 
						|
								
							 | 
						|
								        $callback = function() use ($tiposVeiculos) {
							 | 
						|
								            $file = fopen('php://output', 'w');
							 | 
						|
								            
							 | 
						|
								            // Encabezados
							 | 
						|
								            fputcsv($file, ['ID', 'Nombre', 'Tipo de Combustible', 'Estado', 'Fecha de Creación']);
							 | 
						|
								            
							 | 
						|
								            // Datos
							 | 
						|
								            foreach ($tiposVeiculos as $vehiculo) {
							 | 
						|
								                $estado = $vehiculo->status ? 'Activo' : 'Inactivo';
							 | 
						|
								                $tipoCombustible = '';
							 | 
						|
								                switch($vehiculo->tipo_combustible) {
							 | 
						|
								                    case 'gasolina_verde':
							 | 
						|
								                        $tipoCombustible = 'Gasolina Verde';
							 | 
						|
								                        break;
							 | 
						|
								                    case 'gasolina_roja':
							 | 
						|
								                        $tipoCombustible = 'Gasolina Roja';
							 | 
						|
								                        break;
							 | 
						|
								                    case 'diesel':
							 | 
						|
								                        $tipoCombustible = 'Diesel';
							 | 
						|
								                        break;
							 | 
						|
								                    default:
							 | 
						|
								                        $tipoCombustible = 'No especificado';
							 | 
						|
								                }
							 | 
						|
								                
							 | 
						|
								                fputcsv($file, [
							 | 
						|
								                    $vehiculo->id,
							 | 
						|
								                    $vehiculo->nombre,
							 | 
						|
								                    $tipoCombustible,
							 | 
						|
								                    $estado,
							 | 
						|
								                    $vehiculo->created_at->format('d/m/Y')
							 | 
						|
								                ]);
							 | 
						|
								            }
							 | 
						|
								            
							 | 
						|
								            fclose($file);
							 | 
						|
								        };
							 | 
						|
								        
							 | 
						|
								        return response()->stream($callback, 200, $headers);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function exportPDF()
							 | 
						|
								    {
							 | 
						|
								        $tiposVeiculos = tiposVeiculos::all();
							 | 
						|
								        $pdf = PDF::loadView('exports.tipos_vehiculos_pdf', ['tiposVeiculos' => $tiposVeiculos]);
							 | 
						|
								        return $pdf->download('tipos_vehiculos.pdf');
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |