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
			| 
								 
											6 months 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);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |