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.
83 lines
2.4 KiB
83 lines
2.4 KiB
1 week ago
|
<?php
|
||
|
|
||
|
namespace App\Http\Controllers;
|
||
|
|
||
|
use App\Models\Maintenance;
|
||
|
use App\Models\Vehicle;
|
||
|
use Illuminate\Http\Request;
|
||
|
use Illuminate\Support\Facades\DB;
|
||
|
|
||
|
class MaintenanceController extends Controller
|
||
|
{
|
||
|
public function index()
|
||
|
{
|
||
|
return view('maintenance.dashboard');
|
||
|
}
|
||
|
|
||
|
public function getMaintenanceHistory()
|
||
|
{
|
||
|
$maintenances = Maintenance::with('vehicle')
|
||
|
->orderBy('date', 'desc')
|
||
|
->get();
|
||
|
|
||
|
return response()->json($maintenances);
|
||
|
}
|
||
|
|
||
|
public function getPendingAlerts()
|
||
|
{
|
||
|
$alerts = Maintenance::with('vehicle')
|
||
|
->where('status', 'Pendiente')
|
||
|
->where('next_maintenance_date', '<=', now()->addDays(30))
|
||
|
->orderBy('next_maintenance_date', 'asc')
|
||
|
->get();
|
||
|
|
||
|
return response()->json($alerts);
|
||
|
}
|
||
|
|
||
|
public function store(Request $request)
|
||
|
{
|
||
|
$validated = $request->validate([
|
||
|
'vehicle_id' => 'required|exists:vehicles,id',
|
||
|
'maintenance_type' => 'required|string',
|
||
|
'date' => 'required|date',
|
||
|
'description' => 'required|string',
|
||
|
'cost' => 'required|numeric|min:0',
|
||
|
'status' => 'required|in:Pendiente,En Proceso,Completado',
|
||
|
'next_maintenance_date' => 'nullable|date'
|
||
|
]);
|
||
|
|
||
|
$maintenance = Maintenance::create($validated);
|
||
|
|
||
|
return response()->json([
|
||
|
'message' => 'Mantenimiento registrado exitosamente',
|
||
|
'maintenance' => $maintenance
|
||
|
], 201);
|
||
|
}
|
||
|
|
||
|
public function update(Request $request, Maintenance $maintenance)
|
||
|
{
|
||
|
$validated = $request->validate([
|
||
|
'vehicle_id' => 'required|exists:vehicles,id',
|
||
|
'maintenance_type' => 'required|string',
|
||
|
'date' => 'required|date',
|
||
|
'description' => 'required|string',
|
||
|
'cost' => 'required|numeric|min:0',
|
||
|
'status' => 'required|in:Pendiente,En Proceso,Completado',
|
||
|
'next_maintenance_date' => 'nullable|date'
|
||
|
]);
|
||
|
|
||
|
$maintenance->update($validated);
|
||
|
|
||
|
return response()->json([
|
||
|
'message' => 'Mantenimiento actualizado exitosamente',
|
||
|
'maintenance' => $maintenance
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
public function getVehicles()
|
||
|
{
|
||
|
$vehicles = Vehicle::where('status', 'Activo')->get();
|
||
|
return response()->json($vehicles);
|
||
|
}
|
||
|
}
|