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.4 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}%")->where('status', true)->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::where('status', true)->get();
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');
}
}