From 4ff963d1e280f85e11e5d4a3f9d2803d75a1e232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Thu, 5 Nov 2026 17:18:26 +0100 Subject: [PATCH] feat: let managers edit the staffing matrix --- .../System/StaffingRule/CreateController.php | 10 ++--- .../System/StaffingRule/DeleteController.php | 10 ++--- .../System/StaffingRule/EditController.php | 10 ++--- .../System/StaffingRule/ExportController.php | 10 ++--- .../System/StaffingRule/IndexController.php | 8 ++-- .../System/StaffingRule/PreviewController.php | 10 ++--- src/Menu/AdminMenuBuilder.php | 4 +- src/Menu/ManagerMenuBuilder.php | 11 +++++ .../system/staffing_rule/_form.html.twig | 0 .../system/staffing_rule/index.html.twig | 10 ++--- .../staffing_rule/modal_create.html.twig | 2 +- .../staffing_rule/modal_delete.html.twig | 0 .../system/staffing_rule/modal_edit.html.twig | 2 +- .../system/staffing_rule/preview.html.twig | 6 +-- .../StaffingRuleControllerTest.php | 43 ++++++++++++++----- 15 files changed, 84 insertions(+), 52 deletions(-) rename src/Controller/{Admin => Administrative}/System/StaffingRule/CreateController.php (79%) rename src/Controller/{Admin => Administrative}/System/StaffingRule/DeleteController.php (77%) rename src/Controller/{Admin => Administrative}/System/StaffingRule/EditController.php (79%) rename src/Controller/{Admin => Administrative}/System/StaffingRule/ExportController.php (82%) rename src/Controller/{Admin => Administrative}/System/StaffingRule/IndexController.php (65%) rename src/Controller/{Admin => Administrative}/System/StaffingRule/PreviewController.php (77%) rename templates/{admin => administrative}/system/staffing_rule/_form.html.twig (100%) rename templates/{admin => administrative}/system/staffing_rule/index.html.twig (91%) rename templates/{admin => administrative}/system/staffing_rule/modal_create.html.twig (63%) rename templates/{admin => administrative}/system/staffing_rule/modal_delete.html.twig (100%) rename templates/{admin => administrative}/system/staffing_rule/modal_edit.html.twig (62%) rename templates/{admin => administrative}/system/staffing_rule/preview.html.twig (92%) rename tests/Controller/{Admin => Administrative}/System/StaffingRule/StaffingRuleControllerTest.php (78%) diff --git a/src/Controller/Admin/System/StaffingRule/CreateController.php b/src/Controller/Administrative/System/StaffingRule/CreateController.php similarity index 79% rename from src/Controller/Admin/System/StaffingRule/CreateController.php rename to src/Controller/Administrative/System/StaffingRule/CreateController.php index 910863a..af367c6 100644 --- a/src/Controller/Admin/System/StaffingRule/CreateController.php +++ b/src/Controller/Administrative/System/StaffingRule/CreateController.php @@ -1,6 +1,6 @@ $rule->getProductCode(), ]); - return new HxRedirectResponse($this->generateUrl('app_admin_system_staffing_rule_index')); + return new HxRedirectResponse($this->generateUrl('app_administrative_system_staffing_rule_index')); } - return $this->render('admin/system/staffing_rule/modal_create.html.twig', [ + return $this->render('administrative/system/staffing_rule/modal_create.html.twig', [ 'form' => $form->createView(), ]); } diff --git a/src/Controller/Admin/System/StaffingRule/DeleteController.php b/src/Controller/Administrative/System/StaffingRule/DeleteController.php similarity index 77% rename from src/Controller/Admin/System/StaffingRule/DeleteController.php rename to src/Controller/Administrative/System/StaffingRule/DeleteController.php index cf3cfda..a6b24fa 100644 --- a/src/Controller/Admin/System/StaffingRule/DeleteController.php +++ b/src/Controller/Administrative/System/StaffingRule/DeleteController.php @@ -1,6 +1,6 @@ isMethod('POST')) { @@ -34,10 +34,10 @@ class DeleteController extends AbstractController 'product_code' => $rule->getProductCode(), ]); - return new HxRedirectResponse($this->generateUrl('app_admin_system_staffing_rule_index')); + return new HxRedirectResponse($this->generateUrl('app_administrative_system_staffing_rule_index')); } - return $this->render('admin/system/staffing_rule/modal_delete.html.twig', [ + return $this->render('administrative/system/staffing_rule/modal_delete.html.twig', [ 'rule' => $rule, ]); } diff --git a/src/Controller/Admin/System/StaffingRule/EditController.php b/src/Controller/Administrative/System/StaffingRule/EditController.php similarity index 79% rename from src/Controller/Admin/System/StaffingRule/EditController.php rename to src/Controller/Administrative/System/StaffingRule/EditController.php index 7432b18..67e0ed7 100644 --- a/src/Controller/Admin/System/StaffingRule/EditController.php +++ b/src/Controller/Administrative/System/StaffingRule/EditController.php @@ -1,6 +1,6 @@ createForm(StaffingRuleType::class, $rule); @@ -37,10 +37,10 @@ class EditController extends AbstractController 'product_code' => $rule->getProductCode(), ]); - return new HxRedirectResponse($this->generateUrl('app_admin_system_staffing_rule_index')); + return new HxRedirectResponse($this->generateUrl('app_administrative_system_staffing_rule_index')); } - return $this->render('admin/system/staffing_rule/modal_edit.html.twig', [ + return $this->render('administrative/system/staffing_rule/modal_edit.html.twig', [ 'form' => $form->createView(), ]); } diff --git a/src/Controller/Admin/System/StaffingRule/ExportController.php b/src/Controller/Administrative/System/StaffingRule/ExportController.php similarity index 82% rename from src/Controller/Admin/System/StaffingRule/ExportController.php rename to src/Controller/Administrative/System/StaffingRule/ExportController.php index e55de06..5cf9f78 100644 --- a/src/Controller/Admin/System/StaffingRule/ExportController.php +++ b/src/Controller/Administrative/System/StaffingRule/ExportController.php @@ -1,6 +1,6 @@ addFlash('error', 'Ein Jobprofil oder Honorar der Besetzungsmatrix ist nicht (mehr) vorhanden: '.$e->getMessage()); - return $this->redirectToRoute('app_admin_system_staffing_rule_index'); + return $this->redirectToRoute('app_administrative_system_staffing_rule_index'); } if ([] === $rows) { $this->addFlash('error', 'Keine Daten für den Export vorhanden'); - return $this->redirectToRoute('app_admin_system_staffing_rule_preview'); + return $this->redirectToRoute('app_administrative_system_staffing_rule_preview'); } $spreadsheet = $this->previewExporter->export($rows); diff --git a/src/Controller/Admin/System/StaffingRule/IndexController.php b/src/Controller/Administrative/System/StaffingRule/IndexController.php similarity index 65% rename from src/Controller/Admin/System/StaffingRule/IndexController.php rename to src/Controller/Administrative/System/StaffingRule/IndexController.php index d8644c9..2c8e47f 100644 --- a/src/Controller/Admin/System/StaffingRule/IndexController.php +++ b/src/Controller/Administrative/System/StaffingRule/IndexController.php @@ -1,6 +1,6 @@ render('admin/system/staffing_rule/index.html.twig', [ + return $this->render('administrative/system/staffing_rule/index.html.twig', [ 'rules' => $this->staffingRuleRepository->getList(), ]); } diff --git a/src/Controller/Admin/System/StaffingRule/PreviewController.php b/src/Controller/Administrative/System/StaffingRule/PreviewController.php similarity index 77% rename from src/Controller/Admin/System/StaffingRule/PreviewController.php rename to src/Controller/Administrative/System/StaffingRule/PreviewController.php index 0cd17f7..913e81f 100644 --- a/src/Controller/Admin/System/StaffingRule/PreviewController.php +++ b/src/Controller/Administrative/System/StaffingRule/PreviewController.php @@ -1,6 +1,6 @@ addFlash('error', 'Ein Jobprofil oder Honorar der Besetzungsmatrix ist nicht (mehr) vorhanden: '.$e->getMessage()); - return $this->redirectToRoute('app_admin_system_staffing_rule_index'); + return $this->redirectToRoute('app_administrative_system_staffing_rule_index'); } // The candidates are a computed list, not a query: page the finished rows. The Excel @@ -39,7 +39,7 @@ class PreviewController extends AbstractController $request->query->getInt('limit', 50), ); - return $this->render('admin/system/staffing_rule/preview.html.twig', [ + return $this->render('administrative/system/staffing_rule/preview.html.twig', [ 'pagination' => $pagination, ]); } diff --git a/src/Menu/AdminMenuBuilder.php b/src/Menu/AdminMenuBuilder.php index 3842e02..65fa164 100644 --- a/src/Menu/AdminMenuBuilder.php +++ b/src/Menu/AdminMenuBuilder.php @@ -279,13 +279,13 @@ class AdminMenuBuilder extends AbstractMenuBuilder ], ]); $settingsMenu->addChild('Besetzungsmatrix', [ - 'route' => 'app_admin_system_staffing_rule_index', + 'route' => 'app_administrative_system_staffing_rule_index', 'linkAttributes' => [ 'title' => 'Besetzungsmatrix', ], 'extras' => [ 'routes' => [ - ['pattern' => '/^app_admin_system_staffing_rule_/'], + ['pattern' => '/^app_administrative_system_staffing_rule_/'], ], ], ]); diff --git a/src/Menu/ManagerMenuBuilder.php b/src/Menu/ManagerMenuBuilder.php index f81668a..ea966d0 100644 --- a/src/Menu/ManagerMenuBuilder.php +++ b/src/Menu/ManagerMenuBuilder.php @@ -167,6 +167,17 @@ class ManagerMenuBuilder extends AbstractMenuBuilder 'icon' => 'settings', ], ]); + $settingsMenu->addChild('Besetzungsmatrix', [ + 'route' => 'app_administrative_system_staffing_rule_index', + 'linkAttributes' => [ + 'title' => 'Besetzungsmatrix', + ], + 'extras' => [ + 'routes' => [ + ['pattern' => '/^app_administrative_system_staffing_rule_/'], + ], + ], + ]); $settingsMenu->addChild('Reisen', [ 'route' => 'app_administrative_system_destination_index', 'linkAttributes' => [ diff --git a/templates/admin/system/staffing_rule/_form.html.twig b/templates/administrative/system/staffing_rule/_form.html.twig similarity index 100% rename from templates/admin/system/staffing_rule/_form.html.twig rename to templates/administrative/system/staffing_rule/_form.html.twig diff --git a/templates/admin/system/staffing_rule/index.html.twig b/templates/administrative/system/staffing_rule/index.html.twig similarity index 91% rename from templates/admin/system/staffing_rule/index.html.twig rename to templates/administrative/system/staffing_rule/index.html.twig index 8c03730..9467e14 100644 --- a/templates/admin/system/staffing_rule/index.html.twig +++ b/templates/administrative/system/staffing_rule/index.html.twig @@ -1,4 +1,4 @@ -{% extends 'admin/layout.html.twig' %} +{% extends 'administrative/layout.html.twig' %} {% block title %}Einstellungen - Besetzungsmatrix{% endblock %} @@ -9,7 +9,7 @@

Besetzungsmatrix

- + Vorschau @@ -53,14 +53,14 @@