76 lines
2.9 KiB
PHP
76 lines
2.9 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\ProfileController;
|
|
use Illuminate\Foundation\Application;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Inertia\Inertia;
|
|
|
|
use App\Http\Controllers\OrderController;
|
|
use App\Http\Controllers\AttachmentController;
|
|
use App\Http\Controllers\HardwareController;
|
|
|
|
Route::get('/', function () {
|
|
return redirect()->route('login');
|
|
});
|
|
|
|
use App\Models\Order;
|
|
use App\Http\Resources\OrderResource;
|
|
|
|
Route::get('/dashboard', function () {
|
|
// 1. Compteurs par statut
|
|
$counts = [
|
|
'draft' => Order::where('status', 'draft')->count(),
|
|
'validated' => Order::where('status', 'validated')->count(),
|
|
'ordered' => Order::where('status', 'ordered')->count(),
|
|
'delivered' => Order::where('status', 'delivered')->count(),
|
|
'closed' => Order::where('status', 'closed')->count(),
|
|
];
|
|
|
|
// 2. Montant total engagé HT (commandes Validées + Commandées)
|
|
$totalEngagedHt = Order::whereIn('status', ['validated', 'ordered'])->sum('amount_ht');
|
|
|
|
// 3. Montant total TTC des commandes de l'année en cours
|
|
$totalTtc = Order::whereYear('created_at', now()->year)->sum('amount_ttc');
|
|
|
|
// 4. Liste des commandes en attente de livraison (Validées + Commandées)
|
|
// Classées de la plus urgente à la plus lointaine
|
|
$pendingDeliveries = Order::whereIn('status', ['validated', 'ordered'])
|
|
->orderBy('delivery_deadline', 'asc')
|
|
->limit(10)
|
|
->get();
|
|
|
|
// 5. Alertes : commandes dont la date souhaitée est dépassée (et non livrées/closes)
|
|
$overdueOrders = Order::overdue()
|
|
->orderBy('delivery_deadline', 'asc')
|
|
->get();
|
|
|
|
return Inertia::render('Dashboard', [
|
|
'metrics' => [
|
|
'counts' => $counts,
|
|
'total_engaged_ht' => (float) $totalEngagedHt,
|
|
'total_ttc' => (float) $totalTtc,
|
|
'overdue_count' => $overdueOrders->count(),
|
|
],
|
|
'pending_deliveries' => OrderResource::collection($pendingDeliveries),
|
|
'overdue_orders' => OrderResource::collection($overdueOrders),
|
|
]);
|
|
})->middleware(['auth', 'verified'])->name('dashboard');
|
|
|
|
Route::middleware('auth')->group(function () {
|
|
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
|
|
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
|
|
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
|
|
|
|
// Suivi des commandes
|
|
Route::post('/commandes/{commande}/transition', [OrderController::class, 'transition'])->name('commandes.transition');
|
|
Route::resource('commandes', OrderController::class);
|
|
|
|
// Pièces jointes
|
|
Route::get('/attachments/{attachment}', [AttachmentController::class, 'show'])->name('attachments.show');
|
|
|
|
// Gestion de matériel d'infrastructure
|
|
Route::resource('materiels', HardwareController::class);
|
|
});
|
|
|
|
require __DIR__.'/auth.php';
|