feat: dashboard amélioré, exports budgets, alertes expiration et correctifs
## Dashboard - Refonte complète du tableau de bord avec widgets budgets, commandes, contrats - Intégration des données d'exécution budgétaire en temps réel ## Exports & Rapports - BudgetExecutionExport : export Excel de l'exécution budgétaire - Template PDF budgets (budgets_pdf.blade.php) - Routes d'export PDF et Excel ## Alertes & Notifications - Commande CheckExpirations : détection des contrats/assets arrivant à échéance - Mail ExpiringElementsMail avec template Blade - Planification via routes/console.php ## Correctifs - CommandePolicy et ContratPolicy : ajustements des règles d'autorisation - ContratController : corrections mineures - Commande model : ajustements relations/casts - AuthenticatedLayout : refonte navigation avec icônes budgets - Assets/Form.vue : corrections formulaire - Seeder rôles/permissions mis à jour - Dépendances composer mises à jour (barryvdh/laravel-dompdf, maatwebsite/excel) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -19,7 +19,7 @@ class ContratController extends Controller
|
||||
|
||||
$query = Contrat::with(['fournisseur', 'service']);
|
||||
|
||||
if (!$request->user()->hasRole('admin')) {
|
||||
if (!$request->user()->hasAnyRole(['admin', 'raf'])) {
|
||||
$query->where('service_id', $request->user()->service_id);
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ class ContratController extends Controller
|
||||
->orWhereHas('fournisseur', fn($f) => $f->where('nom', 'like', "%{$search}%"));
|
||||
});
|
||||
})->when($request->service_id, function ($q, $serviceId) use ($request) {
|
||||
if ($request->user()->hasRole('admin')) {
|
||||
if ($request->user()->hasAnyRole(['admin', 'raf'])) {
|
||||
$q->where('service_id', $serviceId);
|
||||
}
|
||||
})->when($request->fournisseur_id, function ($q, $fournisseurId) {
|
||||
@@ -50,7 +50,7 @@ class ContratController extends Controller
|
||||
|
||||
return Inertia::render('Contrats/Index', [
|
||||
'contrats' => $contrats,
|
||||
'services' => $request->user()->hasRole('admin') ? Service::all() : Service::where('id', $request->user()->service_id)->get(),
|
||||
'services' => $request->user()->hasAnyRole(['admin', 'raf']) ? Service::all() : Service::where('id', $request->user()->service_id)->get(),
|
||||
'fournisseurs' => Fournisseur::active()->orderBy('nom')->get(),
|
||||
'communes' => \App\Models\Commune::orderBy('nom')->get(),
|
||||
'filters' => $request->only(['search', 'service_id', 'fournisseur_id', 'statut']),
|
||||
@@ -63,7 +63,7 @@ class ContratController extends Controller
|
||||
$this->authorize('create', Contrat::class);
|
||||
|
||||
return Inertia::render('Contrats/Create', [
|
||||
'services' => $request->user()->hasRole('admin') ? Service::all() : Service::where('id', $request->user()->service_id)->get(),
|
||||
'services' => $request->user()->hasAnyRole(['admin', 'raf']) ? Service::all() : Service::where('id', $request->user()->service_id)->get(),
|
||||
'fournisseurs' => Fournisseur::active()->orderBy('nom')->get(),
|
||||
'communes' => \App\Models\Commune::orderBy('nom')->get(),
|
||||
'statuts' => Contrat::STATUTS_LABELS,
|
||||
@@ -86,13 +86,13 @@ class ContratController extends Controller
|
||||
];
|
||||
|
||||
// Only admins can select other services, otherwise we force the user's service
|
||||
if ($request->user()->hasRole('admin')) {
|
||||
if ($request->user()->hasAnyRole(['admin', 'raf'])) {
|
||||
$rules['service_id'] = 'required|exists:services,id';
|
||||
}
|
||||
|
||||
$validated = $request->validate($rules);
|
||||
|
||||
if (!$request->user()->hasRole('admin')) {
|
||||
if (!$request->user()->hasAnyRole(['admin', 'raf'])) {
|
||||
$validated['service_id'] = $request->user()->service_id;
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@ class ContratController extends Controller
|
||||
|
||||
return Inertia::render('Contrats/Edit', [
|
||||
'contrat' => $contrat,
|
||||
'services' => $request->user()->hasRole('admin') ? Service::all() : Service::where('id', $request->user()->service_id)->get(),
|
||||
'services' => $request->user()->hasAnyRole(['admin', 'raf']) ? Service::all() : Service::where('id', $request->user()->service_id)->get(),
|
||||
'fournisseurs' => Fournisseur::active()->orderBy('nom')->get(),
|
||||
'communes' => \App\Models\Commune::orderBy('nom')->get(),
|
||||
'statuts' => Contrat::STATUTS_LABELS,
|
||||
@@ -142,7 +142,7 @@ class ContratController extends Controller
|
||||
'preavis_jours' => 'nullable|integer|min:0',
|
||||
];
|
||||
|
||||
if ($request->user()->hasRole('admin')) {
|
||||
if ($request->user()->hasAnyRole(['admin', 'raf'])) {
|
||||
$rules['service_id'] = 'required|exists:services,id';
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user