Initial commit: Import existing Laravel project
This commit is contained in:
75
routes/web.php
Normal file
75
routes/web.php
Normal file
@@ -0,0 +1,75 @@
|
||||
<?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';
|
||||
Reference in New Issue
Block a user