Compute allowed centers and regroupment at the time of generating the export

This commit is contained in:
2025-04-03 17:47:46 +02:00
parent 128d365a72
commit e48bec490c
17 changed files with 449 additions and 111 deletions

View File

@@ -25,6 +25,7 @@ use Chill\MainBundle\Form\Type\Export\FormatterType;
use Chill\MainBundle\Form\Type\Export\PickCenterType;
use Chill\MainBundle\Repository\SavedExportOrExportGenerationRepository;
use Chill\MainBundle\Security\Authorization\SavedExportVoter;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\EntityManagerInterface;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
@@ -117,7 +118,7 @@ class ExportController extends AbstractController
$options = match ($step) {
'export', 'generate_export' => [
'export_alias' => $alias,
'picked_centers' => $exportManager->getPickedCenters($data['centers'] ?? []),
'picked_centers' => $this->exportFormHelper->getPickedCenters($data),
],
'formatter', 'generate_formatter' => [
'export_alias' => $alias,
@@ -337,9 +338,15 @@ class ExportController extends AbstractController
if ($this->filterStatsByCenters) {
$formCenters = $this->createCreateFormExport($alias, 'generate_centers', [], null);
$formCenters->submit($dataCenters);
$dataCenters = $formCenters->getData();
$dataAsCollection = $formCenters->getData()['centers'];
$centers = $dataAsCollection['centers'];
$regroupments = $dataAsCollection['regroupments'];
$dataCenters = [
'centers' => $centers instanceof Collection ? $centers->toArray() : $centers,
'regroupments' => $regroupments instanceof Collection ? $regroupments->toArray() : $regroupments,
];
} else {
$dataCenters = ['centers' => []];
$dataCenters = ['centers' => [], 'regroupments' => []];
}
$formExport = $this->createCreateFormExport($alias, 'generate_export', $dataCenters, null);
@@ -358,7 +365,7 @@ class ExportController extends AbstractController
}
return [
'centers' => $dataCenters['centers'],
'centers' => ['centers' => $dataCenters['centers'], 'regroupments' => $dataCenters['regroupments'] ?? []],
'export' => $dataExport['export']['export'] ?? [],
'filters' => $dataExport['export']['filters'] ?? [],
'aggregators' => $dataExport['export']['aggregators'] ?? [],
@@ -401,7 +408,7 @@ class ExportController extends AbstractController
false === $exportManager->isGrantedForElement(
$export,
null,
$exportManager->getPickedCenters($data['centers'])
$this->exportFormHelper->getPickedCenters($data['centers']),
)
) {
throw $this->createAccessDeniedException('you do not have access to this export for those centers');
@@ -411,7 +418,7 @@ class ExportController extends AbstractController
'centers_step_raw',
$request->request->all()
);
$this->session->set('centers_step', $data);
$this->session->set('centers_step', $data['centers']);
return $this->redirectToRoute('chill_main_export_new', [
'step' => $this->getNextStep('centers', $export),