From 44baf98c4e2938fb2be453a5c8d6143c4bb4e1f7 Mon Sep 17 00:00:00 2001 From: GlennCavarle Date: Fri, 7 Sep 2018 09:39:10 +0200 Subject: [PATCH] Move templates from pia to processing (#71) * Move template reference from PIA to Processing --- config/packages/security.yaml | 14 +- config/services_test.yaml | 2 +- ...ProcessingTemplatesBatchImportCommand.php} | 20 +-- .../BackOffice/PiaTemplateController.php | 160 ------------------ .../ProcessingTemplateController.php | 160 ++++++++++++++++++ src/Controller/Pia/PiaController.php | 12 +- ...r.php => ProcessingTemplateController.php} | 66 ++++---- src/Entity/Pia/Pia.php | 28 +-- src/Entity/Pia/Processing.php | 24 +++ ...PiaTemplate.php => ProcessingTemplate.php} | 38 +++-- src/Entity/Pia/Structure.php | 20 ++- src/Entity/Pia/StructureType.php | 12 +- .../CreateProcessingTemplateForm.php} | 4 +- .../EditProcessingTemplateForm.php} | 4 +- .../RemoveProcessingTemplateForm.php} | 4 +- src/Form/Structure/EditStructureForm.php | 4 +- src/Form/Structure/EditStructureTypeForm.php | 4 +- src/Migrations/Version20180907003943.php | 86 ++++++++++ ...y.php => ProcessingTemplateRepository.php} | 4 +- ...vice.php => ProcessingTemplateService.php} | 18 +- templates/pia/Layout/navbar.html.twig | 4 +- .../manageProcessingTemplates.html.twig} | 36 ++-- .../removeProcessingTemplate.html.twig} | 8 +- ...aTemplate.json => processingTemplate.json} | 0 tests/acceptance/PiaTemplatesCest.php | 76 --------- tests/acceptance/ProcessingTemplatesCest.php | 76 +++++++++ ... => ProcessingTemplateBatchImportTest.php} | 12 +- translations/Pia.fr.yml | 2 +- 28 files changed, 498 insertions(+), 400 deletions(-) rename src/Command/{PiaTemplatesBatchImportCommand.php => ProcessingTemplatesBatchImportCommand.php} (91%) delete mode 100644 src/Controller/BackOffice/PiaTemplateController.php create mode 100644 src/Controller/BackOffice/ProcessingTemplateController.php rename src/Controller/Pia/{PiaTemplateController.php => ProcessingTemplateController.php} (71%) rename src/Entity/Pia/{PiaTemplate.php => ProcessingTemplate.php} (80%) rename src/Form/{PiaTemplate/CreatePiaTemplateForm.php => ProcessingTemplate/CreateProcessingTemplateForm.php} (94%) rename src/Form/{PiaTemplate/EditPiaTemplateForm.php => ProcessingTemplate/EditProcessingTemplateForm.php} (95%) rename src/Form/{PiaTemplate/RemovePiaTemplateForm.php => ProcessingTemplate/RemoveProcessingTemplateForm.php} (89%) create mode 100644 src/Migrations/Version20180907003943.php rename src/Repository/{PiaTemplateRepository.php => ProcessingTemplateRepository.php} (92%) rename src/Services/{PiaTemplateService.php => ProcessingTemplateService.php} (75%) rename templates/pia/{PiaTemplate/managePiaTemplates.html.twig => ProcessingTemplate/manageProcessingTemplates.html.twig} (77%) rename templates/pia/{PiaTemplate/removePiaTemplate.html.twig => ProcessingTemplate/removeProcessingTemplate.html.twig} (82%) rename tests/_data/{piaTemplate.json => processingTemplate.json} (100%) delete mode 100644 tests/acceptance/PiaTemplatesCest.php create mode 100644 tests/acceptance/ProcessingTemplatesCest.php rename tests/functional/{PiaTemplateBatchImportTest.php => ProcessingTemplateBatchImportTest.php} (80%) diff --git a/config/packages/security.yaml b/config/packages/security.yaml index f8c86a3..6e45d39 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -37,11 +37,11 @@ security: - CAN_EDIT_PORTFOLIO - CAN_DELETE_PORTFOLIO - CAN_MANAGE_PIA_TEMPLATES: - - CAN_SHOW_PIA_TEMPLATE - - CAN_CREATE_PIA_TEMPLATE - - CAN_EDIT_PIA_TEMPLATE - - CAN_DELETE_PIA_TEMPLATE + CAN_MANAGE_PROCESSING_TEMPLATES: + - CAN_SHOW_PROCESSING_TEMPLATE + - CAN_CREATE_PROCESSING_TEMPLATE + - CAN_EDIT_PROCESSING_TEMPLATE + - CAN_DELETE_PROCESSING_TEMPLATE CAN_EXPLORE_PIAS: - CAN_SHOW_PROCESSING @@ -140,7 +140,7 @@ security: - CAN_MANAGE_PROCESSINGS - CAN_MANAGE_PIAS - CAN_ACCESS_BACK_OFFICE - - CAN_SHOW_PIA_TEMPLATE + - CAN_SHOW_PROCESSING_TEMPLATE - CAN_IMPORT_PIA - CAN_MANAGE_FOLDERS - CAN_MANAGE_ONLY_OWNED_USERS @@ -174,7 +174,7 @@ security: ROLE_SUPER_ADMIN: - ROLE_TECHNICAL_ADMIN - CAN_EXPORT_PIA - - CAN_MANAGE_PIA_TEMPLATES + - CAN_MANAGE_PROCESSING_TEMPLATES encoders: diff --git a/config/services_test.yaml b/config/services_test.yaml index 6f44e3a..49e5afc 100644 --- a/config/services_test.yaml +++ b/config/services_test.yaml @@ -8,4 +8,4 @@ services: # # test.App\Service\MyService: '@App\Service\MyService' JsonToEntityTransformer: '@PiaApi\DataExchange\Transformer\JsonToEntityTransformer' - PiaTemplateService: '@PiaApi\Services\PiaTemplateService' \ No newline at end of file + ProcessingTemplateService: '@PiaApi\Services\ProcessingTemplateService' \ No newline at end of file diff --git a/src/Command/PiaTemplatesBatchImportCommand.php b/src/Command/ProcessingTemplatesBatchImportCommand.php similarity index 91% rename from src/Command/PiaTemplatesBatchImportCommand.php rename to src/Command/ProcessingTemplatesBatchImportCommand.php index dd231aa..b79c269 100644 --- a/src/Command/PiaTemplatesBatchImportCommand.php +++ b/src/Command/ProcessingTemplatesBatchImportCommand.php @@ -13,9 +13,9 @@ use Doctrine\ORM\EntityManagerInterface; use PiaApi\DataExchange\Transformer\JsonToEntityTransformer; use PiaApi\Entity\Pia\Pia; -use PiaApi\Entity\Pia\PiaTemplate; +use PiaApi\Entity\Pia\ProcessingTemplate; use PiaApi\Entity\Pia\Structure; -use PiaApi\Services\PiaTemplateService; +use PiaApi\Services\ProcessingTemplateService; use splitbrain\PHPArchive\Tar; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; @@ -26,7 +26,7 @@ use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\SplFileInfo; -class PiaTemplatesBatchImportCommand extends Command +class ProcessingTemplatesBatchImportCommand extends Command { const NAME = 'pia:templates:batch-import'; @@ -41,9 +41,9 @@ class PiaTemplatesBatchImportCommand extends Command protected $entityManager; /** - * @var PiaTemplateService + * @var ProcessingTemplateService */ - protected $piaTemplateService; + protected $processingTemplateService; /** * @var SymfonyStyle @@ -58,19 +58,19 @@ class PiaTemplatesBatchImportCommand extends Command public function __construct( EntityManagerInterface $entityManager, JsonToEntityTransformer $jsonToEntityTransformer, - PiaTemplateService $piaTemplateService + ProcessingTemplateService $processingTemplateService ) { parent::__construct(); $this->entityManager = $entityManager; $this->jsonToEntityTransformer = $jsonToEntityTransformer; - $this->piaTemplateService = $piaTemplateService; + $this->processingTemplateService = $processingTemplateService; } protected function configure() { $this ->setName(self::NAME) - ->setDescription('Imports a collection of PIA templates into backend') + ->setDescription('Imports a collection of processing templates into backend') ->setHelp('This command allows you to import all json files included in a specific folder as PIA templates') ->addArgument('path', InputArgument::REQUIRED, 'The target directory (or archive) that contains templates json files (can be relative or absolute)') ->addOption('enable-all', null, InputOption::VALUE_NONE, 'Does the templates imported should be enabled ? By default, all templates are disabled') @@ -136,14 +136,14 @@ private function extractArchive(string $archivePath): string return $tempDir; } - private function buildTemplate(string $filePath, string $fileName, bool $enabled = false): PiaTemplate + private function buildTemplate(string $filePath, string $fileName, bool $enabled = false): ProcessingTemplate { $templateJson = file_get_contents($filePath); // Fetching template json as entity in order to get target template name only $pia = $this->fetchDataAsEntities($templateJson); - $template = $this->piaTemplateService->createTemplate( + $template = $this->processingTemplateService->createTemplate( $pia->getName(), $templateJson, $fileName diff --git a/src/Controller/BackOffice/PiaTemplateController.php b/src/Controller/BackOffice/PiaTemplateController.php deleted file mode 100644 index 60d8c6f..0000000 --- a/src/Controller/BackOffice/PiaTemplateController.php +++ /dev/null @@ -1,160 +0,0 @@ -piaTemplateService = $piaTemplateService; - } - - /** - * @Route("/managePiaTemplates", name="manage_pia_templates") - * @Security("is_granted('CAN_ACCESS_BACK_OFFICE') and is_granted('CAN_SHOW_PIA_TEMPLATE')") - * - * @param Request $request - */ - public function managePiaTemplatesAction(Request $request) - { - $pagerfanta = $this->buildPager($request, PiaTemplate::class); - - return $this->render('pia/PiaTemplate/managePiaTemplates.html.twig', [ - 'piaTemplates' => $pagerfanta, - ]); - } - - /** - * @Route("/managePiaTemplates/addPiaTemplate", name="manage_pia_templates_add_pia_template") - * @Security("is_granted('CAN_ACCESS_BACK_OFFICE') and is_granted('CAN_CREATE_PIA_TEMPLATE')") - * - * @param Request $request - */ - public function addPiaTemplateAction(Request $request) - { - $form = $this->createForm(CreatePiaTemplateForm::class, [], [ - 'action' => $this->generateUrl('manage_pia_templates_add_pia_template'), - ]); - - $form->handleRequest($request); - - if ($form->isSubmitted() && $form->isValid()) { - $piaTemplateData = $form->getData(); - - $piaTemplate = $this->piaTemplateService->createTemplateWithFile( - $piaTemplateData['name'], - $piaTemplateData['data'], - isset($piaTemplateData['description']) ? $piaTemplateData['description'] : null - ); - - $this->getDoctrine()->getManager()->persist($piaTemplate); - $this->getDoctrine()->getManager()->flush(); - - return $this->redirect($this->generateUrl('manage_pia_templates')); - } - - return $this->render('pia/Layout/form.html.twig', [ - 'form' => $form->createView(), - ]); - } - - /** - * @Route("/managePiaTemplates/editPiaTemplate/{piaTemplateId}", name="manage_pia_templates_edit_pia_template") - * @Security("is_granted('CAN_ACCESS_BACK_OFFICE') and is_granted('CAN_EDIT_PIA_TEMPLATE')") - * - * @param Request $request - */ - public function editPiaTemplateAction(Request $request) - { - $piaTemplateId = $request->get('piaTemplateId'); - $piaTemplate = $this->getDoctrine()->getRepository(PiaTemplate::class)->find($piaTemplateId); - - if ($piaTemplate === null) { - throw new NotFoundHttpException(sprintf('PiaTemplate « %s » does not exist', $piaTemplateId)); - } - - $form = $this->createForm(EditPiaTemplateForm::class, $piaTemplate, [ - 'action' => $this->generateUrl('manage_pia_templates_edit_pia_template', ['piaTemplateId' => $piaTemplate->getId()]), - ]); - - $form->handleRequest($request); - - if ($form->isSubmitted() && $form->isValid()) { - $piaTemplate = $form->getData(); - - $hasFile = $request->files->get('edit_pia_template_form'); - - if ($hasFile && $file = $hasFile['newData']) { - $piaTemplate->addFile($file); - } - - $this->getDoctrine()->getManager()->persist($piaTemplate); - $this->getDoctrine()->getManager()->flush(); - - return $this->redirect($this->generateUrl('manage_pia_templates')); - } - - return $this->render('pia/Layout/form.html.twig', [ - 'form' => $form->createView(), - ]); - } - - /** - * @Route("/managePiaTemplates/removePiaTemplate/{piaTemplateId}", name="manage_pia_templates_remove_pia_template") - * @Security("is_granted('CAN_ACCESS_BACK_OFFICE') and is_granted('CAN_DELETE_PIA_TEMPLATE')") - * - * @param Request $request - */ - public function removePiaTemplateAction(Request $request) - { - $piaTemplateId = $request->get('piaTemplateId'); - $piaTemplate = $this->getDoctrine()->getRepository(PiaTemplate::class)->find($piaTemplateId); - - if ($piaTemplate === null) { - throw new NotFoundHttpException(sprintf('PiaTemplate « %s » does not exist', $piaTemplateId)); - } - - $form = $this->createForm(RemovePiaTemplateForm::class, $piaTemplate, [ - 'action' => $this->generateUrl('manage_pia_templates_remove_pia_template', ['piaTemplateId' => $piaTemplate->getId()]), - ]); - - $form->handleRequest($request); - - if ($form->isSubmitted() && $form->isValid()) { - $piaTemplate = $form->getData(); - - $this->getDoctrine()->getManager()->remove($piaTemplate); - $this->getDoctrine()->getManager()->flush(); - - return $this->redirect($this->generateUrl('manage_pia_templates')); - } - - return $this->render('pia/PiaTemplate/removePiaTemplate.html.twig', [ - 'form' => $form->createView(), - ]); - } -} diff --git a/src/Controller/BackOffice/ProcessingTemplateController.php b/src/Controller/BackOffice/ProcessingTemplateController.php new file mode 100644 index 0000000..02def46 --- /dev/null +++ b/src/Controller/BackOffice/ProcessingTemplateController.php @@ -0,0 +1,160 @@ +pTemplateService = $pTemplateService; + } + + /** + * @Route("/manageProcessingTemplates", name="manage_processing_templates") + * @Security("is_granted('CAN_ACCESS_BACK_OFFICE') and is_granted('CAN_SHOW_PROCESSING_TEMPLATE')") + * + * @param Request $request + */ + public function manageProcessingTemplatesAction(Request $request) + { + $pagerfanta = $this->buildPager($request, ProcessingTemplate::class); + + return $this->render('pia/ProcessingTemplate/manageProcessingTemplates.html.twig', [ + 'templates' => $pagerfanta, + ]); + } + + /** + * @Route("/manageProcessingTemplates/addProcessingTemplate", name="manage_processing_templates_add_processing_template") + * @Security("is_granted('CAN_ACCESS_BACK_OFFICE') and is_granted('CAN_CREATE_PROCESSING_TEMPLATE')") + * + * @param Request $request + */ + public function addProcessingTemplateAction(Request $request) + { + $form = $this->createForm(CreateProcessingTemplateForm::class, [], [ + 'action' => $this->generateUrl('manage_processing_templates_add_processing_template'), + ]); + + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $pTemplateData = $form->getData(); + + $pTemplate = $this->pTemplateService->createTemplateWithFile( + $pTemplateData['name'], + $pTemplateData['data'], + isset($pTemplateData['description']) ? $pTemplateData['description'] : null + ); + + $this->getDoctrine()->getManager()->persist($pTemplate); + $this->getDoctrine()->getManager()->flush(); + + return $this->redirect($this->generateUrl('manage_processing_templates')); + } + + return $this->render('pia/Layout/form.html.twig', [ + 'form' => $form->createView(), + ]); + } + + /** + * @Route("/manageProcessingTemplates/editProcessingTemplate/{templateId}", name="manage_processing_templates_edit_processing_template") + * @Security("is_granted('CAN_ACCESS_BACK_OFFICE') and is_granted('CAN_EDIT_PROCESSING_TEMPLATE')") + * + * @param Request $request + */ + public function editProcessingTemplateAction(Request $request) + { + $templateId = $request->get('templateId'); + $pTemplate = $this->getDoctrine()->getRepository(ProcessingTemplate::class)->find($templateId); + + if ($pTemplate === null) { + throw new NotFoundHttpException(sprintf('ProcessingTemplate « %s » does not exist', $templateId)); + } + + $form = $this->createForm(EditProcessingTemplateForm::class, $pTemplate, [ + 'action' => $this->generateUrl('manage_processing_templates_edit_processing_template', ['templateId' => $pTemplate->getId()]), + ]); + + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $pTemplate = $form->getData(); + + $hasFile = $request->files->get('edit_processing_template_form'); + + if ($hasFile && $file = $hasFile['newData']) { + $pTemplate->addFile($file); + } + + $this->getDoctrine()->getManager()->persist($pTemplate); + $this->getDoctrine()->getManager()->flush(); + + return $this->redirect($this->generateUrl('manage_processing_templates')); + } + + return $this->render('pia/Layout/form.html.twig', [ + 'form' => $form->createView(), + ]); + } + + /** + * @Route("/manageProcessingTemplates/removeProcessingTemplate/{templateId}", name="manage_processing_templates_remove_processing_template") + * @Security("is_granted('CAN_ACCESS_BACK_OFFICE') and is_granted('CAN_DELETE_PROCESSING_TEMPLATE')") + * + * @param Request $request + */ + public function removeProcessingTemplateAction(Request $request) + { + $templateId = $request->get('templateId'); + $pTemplate = $this->getDoctrine()->getRepository(ProcessingTemplate::class)->find($templateId); + + if ($pTemplate === null) { + throw new NotFoundHttpException(sprintf('ProcessingTemplate « %s » does not exist', $templateId)); + } + + $form = $this->createForm(RemoveProcessingTemplateForm::class, $pTemplate, [ + 'action' => $this->generateUrl('manage_processing_templates_remove_processing_template', ['templateId' => $pTemplate->getId()]), + ]); + + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $pTemplate = $form->getData(); + + $this->getDoctrine()->getManager()->remove($pTemplate); + $this->getDoctrine()->getManager()->flush(); + + return $this->redirect($this->generateUrl('manage_processing_templates')); + } + + return $this->render('pia/ProcessingTemplate/removeProcessingTemplate.html.twig', [ + 'form' => $form->createView(), + ]); + } +} diff --git a/src/Controller/Pia/PiaController.php b/src/Controller/Pia/PiaController.php index 8fc756b..abfd861 100644 --- a/src/Controller/Pia/PiaController.php +++ b/src/Controller/Pia/PiaController.php @@ -16,7 +16,7 @@ use PiaApi\DataExchange\Transformer\JsonToEntityTransformer; use PiaApi\DataHandler\RequestDataHandler; use PiaApi\Entity\Pia\Pia; -use PiaApi\Entity\Pia\PiaTemplate; +use PiaApi\Entity\Pia\ProcessingTemplate; use PiaApi\Entity\Pia\Processing; use PiaApi\Entity\Pia\Answer; use PiaApi\Entity\Pia\Measure; @@ -256,13 +256,13 @@ public function createAction(Request $request) */ public function createFromTemplateAction(Request $request, $id) { - /** @var PiaTemplate $piaTemplate */ - $piaTemplate = $this->getDoctrine()->getRepository(PiaTemplate::class)->find($id); - if ($piaTemplate === null) { - return $this->view($piaTemplate, Response::HTTP_NOT_FOUND); + /** @var ProcessingTemplate $pTemplate */ + $pTemplate = $this->getDoctrine()->getRepository(ProcessingTemplate::class)->find($id); + if ($pTemplate === null) { + return $this->view($pTemplate, Response::HTTP_NOT_FOUND); } - $pia = $this->jsonToEntityTransformer->transform($piaTemplate->getData()); + $pia = $this->jsonToEntityTransformer->transform($pTemplate->getData()); $pia->setName($request->get('name', $pia->getName())); $pia->setAuthorName($request->get('author_name', $pia->getAuthorName())); $pia->setEvaluatorName($request->get('evaluator_name', $pia->getEvaluatorName())); diff --git a/src/Controller/Pia/PiaTemplateController.php b/src/Controller/Pia/ProcessingTemplateController.php similarity index 71% rename from src/Controller/Pia/PiaTemplateController.php rename to src/Controller/Pia/ProcessingTemplateController.php index 420ce19..03271e4 100644 --- a/src/Controller/Pia/PiaTemplateController.php +++ b/src/Controller/Pia/ProcessingTemplateController.php @@ -13,9 +13,9 @@ use FOS\RestBundle\Controller\Annotations as FOSRest; use FOS\RestBundle\View\View; use Nelmio\ApiDocBundle\Annotation as Nelmio; -use PiaApi\Command\ImportPiaTemplatesCommand; +use PiaApi\Command\ImportProcessingTemplatesCommand; use PiaApi\DataExchange\Transformer\JsonToEntityTransformer; -use PiaApi\Entity\Pia\PiaTemplate; +use PiaApi\Entity\Pia\ProcessingTemplate; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Swagger\Annotations as Swg; use Symfony\Bundle\FrameworkBundle\Console\Application; @@ -28,7 +28,7 @@ use Symfony\Component\HttpKernel\KernelInterface; use Symfony\Component\PropertyAccess\PropertyAccessorInterface; -class PiaTemplateController extends RestController +class ProcessingTemplateController extends RestController { /** * @var JsonToEntityTransformer @@ -44,11 +44,11 @@ public function __construct( } /** - * Lists all PiaTemplates, for a Structure if User is not a Technical admin. + * Lists all ProcessingTemplates, for a Structure if User is not a Technical admin. * - * @Swg\Tag(name="PiaTemplate") + * @Swg\Tag(name="ProcessingTemplate") * - * @FOSRest\Get("/pia-templates") + * @FOSRest\Get("/processing-templates") * * @Swg\Parameter( * name="Authorization", @@ -60,14 +60,14 @@ public function __construct( * * @Swg\Response( * response=200, - * description="Returns all PiaTemplates", + * description="Returns all ProcessingTemplates", * @Swg\Schema( * type="array", - * @Swg\Items(ref=@Nelmio\Model(type=PiaTemplate::class, groups={"Default"})) + * @Swg\Items(ref=@Nelmio\Model(type=ProcessingTemplate::class, groups={"Default"})) * ) * ) * - * @Security("is_granted('CAN_SHOW_PIA_TEMPLATE')") + * @Security("is_granted('CAN_SHOW_PROCESSING_TEMPLATE')") * * @return View */ @@ -75,7 +75,7 @@ public function listAction(Request $request) { $structure = $this->getUser()->getStructure(); if ($structure !== null) { - $collection = $this->getRepository()->findAvailablePiaTemplatesForStructure($structure); + $collection = $this->getRepository()->findAvailableProcessingTemplatesForStructure($structure); } elseif ($this->isGranted('ROLE_TECHNICAL_ADMIN')) { $collection = $this->getRepository()->findAll(); } else { @@ -86,11 +86,11 @@ public function listAction(Request $request) } /** - * Shows one PiaTemplate by its ID. + * Shows one ProcessingTemplate by its ID. * - * @Swg\Tag(name="PiaTemplate") + * @Swg\Tag(name="ProcessingTemplate") * - * @FOSRest\Get("/pia-templates/{id}") + * @FOSRest\Get("/processing-templates/{id}") * * @Swg\Parameter( * name="Authorization", @@ -104,44 +104,44 @@ public function listAction(Request $request) * in="path", * type="string", * required=true, - * description="The ID of the PiaTemplate" + * description="The ID of the ProcessingTemplate" * ) * * @Swg\Response( * response=200, - * description="Returns one PiaTemplate", + * description="Returns one ProcessingTemplate", * @Swg\Schema( * type="object", - * ref=@Nelmio\Model(type=PiaTemplate::class, groups={"Default"}) + * ref=@Nelmio\Model(type=ProcessingTemplate::class, groups={"Default"}) * ) * ) * @Swg\Response( * response=404, - * description="PiaTemplate does not exists" + * description="ProcessingTemplate does not exists" * ) * - * @Security("is_granted('CAN_SHOW_PIA_TEMPLATE')") + * @Security("is_granted('CAN_SHOW_PROCESSING_TEMPLATE')") * * @return View */ public function showAction(Request $request, $id) { - $piaTemplate = $this->getRepository()->find($id); - if ($piaTemplate === null) { - return $this->view($piaTemplate, Response::HTTP_NOT_FOUND); + $pTemplate = $this->getRepository()->find($id); + if ($pTemplate === null) { + return $this->view($pTemplate, Response::HTTP_NOT_FOUND); } - $this->canAccessResourceOr403($piaTemplate); + $this->canAccessResourceOr403($pTemplate); - return $this->view($piaTemplate, Response::HTTP_OK); + return $this->view($pTemplate, Response::HTTP_OK); } /** - * Imports PiaTemplates contained in a given archive. + * Imports ProcessingTemplates contained in a given archive. * - * @Swg\Tag(name="PiaTemplate") + * @Swg\Tag(name="ProcessingTemplate") * - * @FOSRest\Post("/pia-templates/importCollection") + * @FOSRest\Post("/processing-templates/importCollection") * * @Swg\Parameter( * name="Authorization", @@ -162,19 +162,19 @@ public function showAction(Request $request, $id) * in="formData", * type="file", * required=true, - * description="The archive of PiaTemplates" + * description="The archive of ProcessingTemplates" * ) * * @Swg\Response( * response=200, - * description="Empty content, Import PiaTemplates is OK" + * description="Empty content, Import ProcessingTemplates is OK" * ) * @Swg\Response( * response=500, - * description="Empty content, Import PiaTemplates fails" + * description="Empty content, Import ProcessingTemplates fails" * ) * - * @Security("is_granted('CAN_CREATE_PIA_TEMPLATE')") + * @Security("is_granted('CAN_CREATE_PROCESSING_TEMPLATE')") * * @return View */ @@ -191,7 +191,7 @@ public function importCollectionAction(Request $request, KernelInterface $kernel $application->setAutoExit(false); $inputData = [ - 'command' => ImportPiaTemplatesCommand::NAME, + 'command' => ImportProcessingTemplatesCommand::NAME, 'templatesFolderOrArchive' => $uploadedFile->getRealPath(), '--no-interaction' => true, ]; @@ -210,12 +210,12 @@ public function importCollectionAction(Request $request, KernelInterface $kernel protected function getEntityClass() { - return PiaTemplate::class; + return ProcessingTemplate::class; } public function canAccessResourceOr403($resource): void { - if (!$resource instanceof PiaTemplate) { + if (!$resource instanceof ProcessingTemplate) { throw new AccessDeniedHttpException(); } diff --git a/src/Entity/Pia/Pia.php b/src/Entity/Pia/Pia.php index 5878b29..195f2cd 100644 --- a/src/Entity/Pia/Pia.php +++ b/src/Entity/Pia/Pia.php @@ -199,14 +199,6 @@ class Pia implements Timestampable */ protected $structure; - /** - * @ORM\ManyToOne(targetEntity="PiaTemplate", inversedBy="pias") - * @JMS\Groups({"Full"}) - * - * @var PiaTemplate - */ - protected $template; - /** * @ORM\Column(type="string") * @JMS\Groups({"Default", "Full"}) @@ -243,10 +235,10 @@ public function __construct() public function computeProgress(): int { $currentAnswerCount = count($this->answers ?? []); - $currentQuestionCount = Pia::QUESTION_NUMBER; + $currentQuestionCount = self::QUESTION_NUMBER; if ($currentAnswerCount > $currentQuestionCount) { - $currentQuestionCount = Pia::OLD_QUESTION_NUMBER; + $currentQuestionCount = self::OLD_QUESTION_NUMBER; } $progress = round((100 / $currentQuestionCount) * $currentAnswerCount); @@ -270,22 +262,6 @@ public function setStructure(?Structure $structure): void $this->structure = $structure; } - /** - * @return PiaTemplate - */ - public function getTemplate(): ?PiaTemplate - { - return $this->template; - } - - /** - * @param PiaTemplate $template - */ - public function setTemplate(?PiaTemplate $template): void - { - $this->template = $template; - } - /** * @return Collection|Answer[] */ diff --git a/src/Entity/Pia/Processing.php b/src/Entity/Pia/Processing.php index 3106f60..8a28479 100644 --- a/src/Entity/Pia/Processing.php +++ b/src/Entity/Pia/Processing.php @@ -137,6 +137,14 @@ class Processing */ protected $folder; + /** + * @ORM\ManyToOne(targetEntity="ProcessingTemplate", inversedBy="processings") + * @JMS\Groups({"Full"}) + * + * @var ProcessingTemplate + */ + protected $template; + public function __construct( string $name, Folder $folder, @@ -425,4 +433,20 @@ public function setStatus(int $status): void } $this->status = $status; } + + /** + * @return ProcessingTemplate + */ + public function getTemplate(): ?ProcessingTemplate + { + return $this->template; + } + + /** + * @param ProcessingTemplate $template + */ + public function setTemplate(?ProcessingTemplate $template): void + { + $this->template = $template; + } } diff --git a/src/Entity/Pia/PiaTemplate.php b/src/Entity/Pia/ProcessingTemplate.php similarity index 80% rename from src/Entity/Pia/PiaTemplate.php rename to src/Entity/Pia/ProcessingTemplate.php index c99e827..d8ed40f 100644 --- a/src/Entity/Pia/PiaTemplate.php +++ b/src/Entity/Pia/ProcessingTemplate.php @@ -20,10 +20,10 @@ use Symfony\Component\HttpFoundation\File\UploadedFile; /** - * @ORM\Entity(repositoryClass="PiaApi\Repository\PiaTemplateRepository") + * @ORM\Entity(repositoryClass="PiaApi\Repository\ProcessingTemplateRepository") * @ORM\Table(name="pia_template") */ -class PiaTemplate implements Timestampable +class ProcessingTemplate implements Timestampable { use ResourceTrait, TimestampableEntity; @@ -69,12 +69,12 @@ class PiaTemplate implements Timestampable protected $importedFileName; /** - * @ORM\OneToMany(targetEntity="Pia", mappedBy="template") + * @ORM\OneToMany(targetEntity="Processing", mappedBy="template") * @JMS\Exclude() * * @var Collection */ - protected $pias; + protected $processings; /** * @ORM\ManyToMany(targetEntity="Structure", inversedBy="templates") @@ -105,7 +105,7 @@ class PiaTemplate implements Timestampable public function __construct(string $name) { $this->name = $name; - $this->pias = new ArrayCollection(); + $this->processings = new ArrayCollection(); $this->structures = new ArrayCollection(); $this->structureTypes = new ArrayCollection(); } @@ -174,17 +174,17 @@ public function setDescription(?string $description): void /** * @return Collection */ - public function getPias(): Collection + public function getProcessings(): Collection { - return $this->pias; + return $this->processings; } /** - * @param Collection $pias + * @param Collection $processings */ - public function setPias(Collection $pias): void + public function setProcessings(Collection $processings): void { - $this->pias = $pias; + $this->processings = $processings; } /** @@ -204,7 +204,7 @@ public function setImportedFileName(string $importedFileName): void } /** - * Add file to the pia_template. + * Add file to the template. * * @param UploadedFile $file */ @@ -231,7 +231,9 @@ public function getStructures(): array public function addStructure(Structure $structure): void { if ($this->structures->contains($structure)) { - throw new InvalidArgumentException(sprintf('Structure « %s » is already in PiaTemplate', $structure)); + throw new InvalidArgumentException( + sprintf('The ProcessingTemplate « %s » is already allowed for Structure « %s »', $this->name, $structure->getName()) + ); } $this->structures->add($structure); } @@ -244,7 +246,9 @@ public function addStructure(Structure $structure): void public function removeStructure(Structure $structure): void { if (!$this->structures->contains($structure)) { - throw new InvalidArgumentException(sprintf('Structure « %s » is not in PiaTemplate', $structure)); + throw new InvalidArgumentException( + sprintf('The ProcessingTemplate « %s » is not allowed for Structure « %s » and so cannot be disociated', $this->name, $structure->getName()) + ); } $this->structures->removeElement($structure); } @@ -265,7 +269,9 @@ public function getStructureTypes(): array public function addStructureType(StructureType $structureType): void { if ($this->structureTypes->contains($structureType)) { - throw new \InvalidArgumentException(sprintf('StructureType « %s » is already in PiaTemplate', $structureType)); + throw new \InvalidArgumentException( + sprintf('The ProcessingTemplate « %s » is already allowed for StructureType « %s »', $this->name, $structureType) + ); } $this->structureTypes->add($structureType); } @@ -278,7 +284,9 @@ public function addStructureType(StructureType $structureType): void public function removeStructureType(StructureType $structureType): void { if (!$this->structureTypes->contains($structureType)) { - throw new \InvalidArgumentException(sprintf('StructureType « %s » is not in PiaTemplate', $structureType)); + throw new \InvalidArgumentException( + sprintf('The ProcessingTemplate « %s » is not allowed for StructureType « %s » and so cannot be disociated', $this->name, $structureType) + ); } $this->structureTypes->removeElement($structureType); } diff --git a/src/Entity/Pia/Structure.php b/src/Entity/Pia/Structure.php index 7eafd89..4eabcc5 100644 --- a/src/Entity/Pia/Structure.php +++ b/src/Entity/Pia/Structure.php @@ -68,7 +68,7 @@ class Structure implements Timestampable protected $users; /** - * @ORM\ManyToMany(targetEntity="PiaTemplate", mappedBy="structures") + * @ORM\ManyToMany(targetEntity="ProcessingTemplate", mappedBy="structures") * @JMS\Exclude() * * @var Collection @@ -178,7 +178,7 @@ public function setType(?StructureType $type): void } /** - * @return array|PiaTemplate[] + * @return array|ProcessingTemplate[] */ public function getTemplates(): array { @@ -186,28 +186,32 @@ public function getTemplates(): array } /** - * @param PiaTemplate $template + * @param ProcessingTemplate $template * * @throws InvalidArgumentException */ - public function addTemplate(PiaTemplate $template): void + public function addTemplate(ProcessingTemplate $template): void { if ($this->templates->contains($template)) { - throw new InvalidArgumentException(sprintf('Template « %s » is already in THIS', $template)); + throw new InvalidArgumentException( + sprintf('The ProcessingTemplate « %s » is already allowed for Structure « %s »', $template->getName(), $this->name) + ); } $template->addStructure($this); $this->templates->add($template); } /** - * @param PiaTemplate $template + * @param ProcessingTemplate $template * * @throws InvalidArgumentException */ - public function removeTemplate(PiaTemplate $template): void + public function removeTemplate(ProcessingTemplate $template): void { if (!$this->templates->contains($template)) { - throw new InvalidArgumentException(sprintf('Template « %s » is not in THIS', $template)); + throw new InvalidArgumentException( + sprintf('The ProcessingTemplate « %s » is not allowed for Structure « %s » and so cannot be disociated', $template->getName(), $this->name) + ); } $template->removeStructure($this); $this->templates->removeElement($template); diff --git a/src/Entity/Pia/StructureType.php b/src/Entity/Pia/StructureType.php index 666819f..9da39ba 100644 --- a/src/Entity/Pia/StructureType.php +++ b/src/Entity/Pia/StructureType.php @@ -41,7 +41,7 @@ class StructureType protected $structures; /** - * @ORM\ManyToMany(targetEntity="PiaTemplate", mappedBy="structureTypes") + * @ORM\ManyToMany(targetEntity="ProcessingTemplate", mappedBy="structureTypes") * @JMS\Exclude() * * @var Collection @@ -89,7 +89,7 @@ public function setStructures(Collection $structures): void } /** - * @return array|PiaTemplate[] + * @return array|ProcessingTemplate[] */ public function getTemplates(): array { @@ -97,11 +97,11 @@ public function getTemplates(): array } /** - * @param PiaTemplate $template + * @param ProcessingTemplate $template * * @throws InvalidArgumentException */ - public function addTemplate(PiaTemplate $template): void + public function addTemplate(ProcessingTemplate $template): void { if ($this->templates->contains($template)) { throw new \InvalidArgumentException(sprintf('Template « %s » is already in StructureType', $template)); @@ -111,11 +111,11 @@ public function addTemplate(PiaTemplate $template): void } /** - * @param PiaTemplate $template + * @param ProcessingTemplate $template * * @throws InvalidArgumentException */ - public function removeTemplate(PiaTemplate $template): void + public function removeTemplate(ProcessingTemplate $template): void { if (!$this->templates->contains($template)) { throw new \InvalidArgumentException(sprintf('Template « %s » is not in StructureType', $template)); diff --git a/src/Form/PiaTemplate/CreatePiaTemplateForm.php b/src/Form/ProcessingTemplate/CreateProcessingTemplateForm.php similarity index 94% rename from src/Form/PiaTemplate/CreatePiaTemplateForm.php rename to src/Form/ProcessingTemplate/CreateProcessingTemplateForm.php index 90718da..1f6b84d 100644 --- a/src/Form/PiaTemplate/CreatePiaTemplateForm.php +++ b/src/Form/ProcessingTemplate/CreateProcessingTemplateForm.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace PiaApi\Form\PiaTemplate; +namespace PiaApi\Form\ProcessingTemplate; use PiaApi\Form\BaseForm; use Symfony\Component\Form\FormBuilderInterface; @@ -18,7 +18,7 @@ use Symfony\Component\Form\Extension\Core\Type\FileType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; -class CreatePiaTemplateForm extends BaseForm +class CreateProcessingTemplateForm extends BaseForm { public function __construct(RegistryInterface $doctrine) { diff --git a/src/Form/PiaTemplate/EditPiaTemplateForm.php b/src/Form/ProcessingTemplate/EditProcessingTemplateForm.php similarity index 95% rename from src/Form/PiaTemplate/EditPiaTemplateForm.php rename to src/Form/ProcessingTemplate/EditProcessingTemplateForm.php index b2df8cd..26ad53a 100644 --- a/src/Form/PiaTemplate/EditPiaTemplateForm.php +++ b/src/Form/ProcessingTemplate/EditProcessingTemplateForm.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace PiaApi\Form\PiaTemplate; +namespace PiaApi\Form\ProcessingTemplate; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\Type\ButtonType; @@ -17,7 +17,7 @@ use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; -class EditPiaTemplateForm extends CreatePiaTemplateForm +class EditProcessingTemplateForm extends CreateProcessingTemplateForm { public function buildForm(FormBuilderInterface $builder, array $options) { diff --git a/src/Form/PiaTemplate/RemovePiaTemplateForm.php b/src/Form/ProcessingTemplate/RemoveProcessingTemplateForm.php similarity index 89% rename from src/Form/PiaTemplate/RemovePiaTemplateForm.php rename to src/Form/ProcessingTemplate/RemoveProcessingTemplateForm.php index e053de3..3859543 100644 --- a/src/Form/PiaTemplate/RemovePiaTemplateForm.php +++ b/src/Form/ProcessingTemplate/RemoveProcessingTemplateForm.php @@ -8,13 +8,13 @@ * file that was distributed with this source code. */ -namespace PiaApi\Form\PiaTemplate; +namespace PiaApi\Form\ProcessingTemplate; use PiaApi\Form\BaseForm; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\Type\ButtonType; -class RemovePiaTemplateForm extends BaseForm +class RemoveProcessingTemplateForm extends BaseForm { public function buildForm(FormBuilderInterface $builder, array $options) { diff --git a/src/Form/Structure/EditStructureForm.php b/src/Form/Structure/EditStructureForm.php index 95d6964..089b116 100644 --- a/src/Form/Structure/EditStructureForm.php +++ b/src/Form/Structure/EditStructureForm.php @@ -13,7 +13,7 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\Type\ButtonType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; -use PiaApi\Entity\Pia\PiaTemplate; +use PiaApi\Entity\Pia\ProcessingTemplate; use Symfony\Bridge\Doctrine\Form\Type\EntityType; class EditStructureForm extends CreateStructureForm @@ -24,7 +24,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder ->remove('submit') ->add('templates', EntityType::class, [ - 'class' => PiaTemplate::class, + 'class' => ProcessingTemplate::class, 'choice_label' => 'name', 'multiple' => true, 'expanded' => true, diff --git a/src/Form/Structure/EditStructureTypeForm.php b/src/Form/Structure/EditStructureTypeForm.php index efbea2d..6e44980 100644 --- a/src/Form/Structure/EditStructureTypeForm.php +++ b/src/Form/Structure/EditStructureTypeForm.php @@ -14,7 +14,7 @@ use Symfony\Component\Form\Extension\Core\Type\ButtonType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Bridge\Doctrine\Form\Type\EntityType; -use PiaApi\Entity\Pia\PiaTemplate; +use PiaApi\Entity\Pia\ProcessingTemplate; class EditStructureTypeForm extends CreateStructureTypeForm { @@ -25,7 +25,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) ->remove('submit') ->add('templates', EntityType::class, [ - 'class' => PiaTemplate::class, + 'class' => ProcessingTemplate::class, 'choice_label' => 'name', 'multiple' => true, 'expanded' => true, diff --git a/src/Migrations/Version20180907003943.php b/src/Migrations/Version20180907003943.php new file mode 100644 index 0000000..afbb9e7 --- /dev/null +++ b/src/Migrations/Version20180907003943.php @@ -0,0 +1,86 @@ +abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + + $this->addSql('ALTER TABLE pia_processing ADD template_id INT DEFAULT NULL'); + $this->addSql('ALTER TABLE pia_processing ADD CONSTRAINT FK_81E5D0EC5DA0FB8 FOREIGN KEY (template_id) REFERENCES pia_template (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('CREATE INDEX IDX_81E5D0EC5DA0FB8 ON pia_processing (template_id)'); + + $this->moveTemplatesFromPiaToProcessing(); + + $this->addSql('ALTER TABLE pia DROP CONSTRAINT fk_253a30625da0fb8'); + $this->addSql('DROP INDEX idx_253a30625da0fb8'); + $this->addSql('ALTER TABLE pia DROP template_id'); + } + + public function down(Schema $schema) + { + $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + + $this->addSql('ALTER TABLE pia ADD template_id INT DEFAULT NULL'); + $this->addSql('ALTER TABLE pia ADD CONSTRAINT fk_253a30625da0fb8 FOREIGN KEY (template_id) REFERENCES pia_template (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('CREATE INDEX idx_253a30625da0fb8 ON pia (template_id)'); + + $this->revertMoveTemplatesFromPiaToProcessing(); + + $this->addSql('ALTER TABLE pia_processing DROP CONSTRAINT FK_81E5D0EC5DA0FB8'); + $this->addSql('DROP INDEX IDX_81E5D0EC5DA0FB8'); + $this->addSql('ALTER TABLE pia_processing DROP template_id'); + } + + protected function moveTemplatesFromPiaToProcessing() + { + //select all PIA with a defined template + $piasWithTemplate = $this->connection->executeQuery('SELECT * FROM pia WHERE template_id IS NOT NULL'); + + //move template_id from pia to parent processing + foreach ($piasWithTemplate->fetchAll() as $piaData) { + $this->addSql( + sprintf( + 'UPDATE pia_processing SET template_id = %d WHERE id = %d', + $piaData['template_id'], + $piaData['processing_id'] + ) + ); + } + } + + protected function revertMoveTemplatesFromPiaToProcessing() + { + //select all PIA with a defined template + $processingsWithTemplate = $this->connection->executeQuery('SELECT * FROM pia_processing WHERE template_id IS NOT NULL'); + + //move template_id from processing to last pia + foreach ($processingsWithTemplate->fetchAll() as $procData) { + //select last pia + $lastPia = $this->connection->executeQuery( + sprintf('SELECT * FROM pia WHERE processing_id = %d ORDER BY id DESC LIMIT 1', $procData['id']))->fetch(); + if (!$lastPia) { + continue; + } + + $this->addSql(sprintf('UPDATE pia SET template_id = %d WHERE id = %d', $procData['template_id'], $lastPia['id'])); + } + } +} diff --git a/src/Repository/PiaTemplateRepository.php b/src/Repository/ProcessingTemplateRepository.php similarity index 92% rename from src/Repository/PiaTemplateRepository.php rename to src/Repository/ProcessingTemplateRepository.php index ad72e40..4d08bc9 100644 --- a/src/Repository/PiaTemplateRepository.php +++ b/src/Repository/ProcessingTemplateRepository.php @@ -13,9 +13,9 @@ use Doctrine\ORM\EntityRepository; use PiaApi\Entity\Pia\Structure; -class PiaTemplateRepository extends EntityRepository +class ProcessingTemplateRepository extends EntityRepository { - public function findAvailablePiaTemplatesForStructure(?Structure $structure): array + public function findAvailableProcessingTemplatesForStructure(?Structure $structure): array { $qb = $this->createQueryBuilder('pt'); diff --git a/src/Services/PiaTemplateService.php b/src/Services/ProcessingTemplateService.php similarity index 75% rename from src/Services/PiaTemplateService.php rename to src/Services/ProcessingTemplateService.php index e88b240..0886368 100644 --- a/src/Services/PiaTemplateService.php +++ b/src/Services/ProcessingTemplateService.php @@ -11,10 +11,10 @@ namespace PiaApi\Services; use Symfony\Bridge\Doctrine\RegistryInterface; -use PiaApi\Entity\Pia\PiaTemplate; +use PiaApi\Entity\Pia\ProcessingTemplate; use Symfony\Component\HttpFoundation\File\UploadedFile; -class PiaTemplateService extends AbstractService +class ProcessingTemplateService extends AbstractService { public function __construct( RegistryInterface $doctrine @@ -24,7 +24,7 @@ public function __construct( public function getEntityClass(): string { - return PiaTemplate::class; + return ProcessingTemplate::class; } /** @@ -33,11 +33,11 @@ public function getEntityClass(): string * @param string $importedFileName * @param string|null $description * - * @return PiaTemplate + * @return ProcessingTemplate */ - public function createTemplate(string $name, string $jsonContent, string $importedFileName, ?string $description = null): PiaTemplate + public function createTemplate(string $name, string $jsonContent, string $importedFileName, ?string $description = null): ProcessingTemplate { - $template = new PiaTemplate($name); + $template = new ProcessingTemplate($name); $template->setData($jsonContent); $template->setImportedFileName($importedFileName); @@ -53,11 +53,11 @@ public function createTemplate(string $name, string $jsonContent, string $import * @param UploadedFile $file * @param string|null $description * - * @return PiaTemplate + * @return ProcessingTemplate */ - public function createTemplateWithFile(string $name, UploadedFile $file, ?string $description = null): PiaTemplate + public function createTemplateWithFile(string $name, UploadedFile $file, ?string $description = null): ProcessingTemplate { - $template = new PiaTemplate($name); + $template = new ProcessingTemplate($name); $template->addFile($file); if ($description !== null) { diff --git a/templates/pia/Layout/navbar.html.twig b/templates/pia/Layout/navbar.html.twig index 8098a4f..2a9704e 100644 --- a/templates/pia/Layout/navbar.html.twig +++ b/templates/pia/Layout/navbar.html.twig @@ -25,8 +25,8 @@ {{ 'pia.layout.navbar.structures'|trans }} {% endif %} - {% if is_granted('CAN_MANAGE_PIA_TEMPLATES') %} - + {% if is_granted('CAN_MANAGE_PROCESSING_TEMPLATES') %} + {{ 'pia.layout.navbar.templates'|trans }} {% endif %} diff --git a/templates/pia/PiaTemplate/managePiaTemplates.html.twig b/templates/pia/ProcessingTemplate/manageProcessingTemplates.html.twig similarity index 77% rename from templates/pia/PiaTemplate/managePiaTemplates.html.twig rename to templates/pia/ProcessingTemplate/manageProcessingTemplates.html.twig index e92283b..0ac66ee 100644 --- a/templates/pia/PiaTemplate/managePiaTemplates.html.twig +++ b/templates/pia/ProcessingTemplate/manageProcessingTemplates.html.twig @@ -46,43 +46,43 @@ - {% for piaTemplate in piaTemplates %} + {% for template in templates %} - {{ piaTemplate.id }} - {{ piaTemplate.name }} + {{ template.id }} + {{ template.name }} {% set hyphen = '' %} - {% if piaTemplate.description|length > 32 %} + {% if template.description|length > 32 %} {% set hyphen = ' [...]' %} {% endif %} - {{ (piaTemplate.description[:32] ~ hyphen)|raw }} + {{ (template.description[:32] ~ hyphen)|raw }} - {{ piaTemplate.isEnabled() ? (''~'pia.labels.yes'|trans~'')|raw : (''~'pia.labels.no'|trans~'')|raw }} - {{ macro.getOctets(piaTemplate.data) }} - {{ piaTemplate.importedFileName }} + {{ template.isEnabled() ? (''~'pia.labels.yes'|trans~'')|raw : (''~'pia.labels.no'|trans~'')|raw }} + {{ macro.getOctets(template.data) }} + {{ template.importedFileName }} - {{ piaTemplate.createdAt|date('d/m/Y H:i')}} + {{ template.createdAt|date('d/m/Y H:i')}} - {{ piaTemplate.updatedAt|date('d/m/Y H:i')}} + {{ template.updatedAt|date('d/m/Y H:i')}} -
- {{ piaTemplate.structures|length }} +
+ {{ template.structures|length }}
-
- {{ piaTemplate.structureTypes|length }} +
+ {{ template.structureTypes|length }}
@@ -93,7 +93,7 @@
- {{ pagerfanta(piaTemplates, 'semantic_ui') }} + {{ pagerfanta(templates, 'semantic_ui') }}
@@ -103,7 +103,7 @@

{{ 'pia.templates.add.title'|trans }}

- {{ render(controller('PiaApi\\Controller\\BackOffice\\PiaTemplateController:addPiaTemplateAction')) }} + {{ render(controller('PiaApi\\Controller\\BackOffice\\ProcessingTemplateController:addProcessingTemplateAction')) }} diff --git a/templates/pia/PiaTemplate/removePiaTemplate.html.twig b/templates/pia/ProcessingTemplate/removeProcessingTemplate.html.twig similarity index 82% rename from templates/pia/PiaTemplate/removePiaTemplate.html.twig rename to templates/pia/ProcessingTemplate/removeProcessingTemplate.html.twig index 652b42f..e1cd183 100644 --- a/templates/pia/PiaTemplate/removePiaTemplate.html.twig +++ b/templates/pia/ProcessingTemplate/removeProcessingTemplate.html.twig @@ -1,6 +1,6 @@ {% trans_default_domain 'Pia' %} -{% set piaTemplate = form.vars.value %} +{% set template = form.vars.value %}
@@ -25,14 +25,14 @@ {{ 'pia.templates.modals.remove.resume.name'|trans }} - {{ piaTemplate.name }} + {{ template.name }} - {{ 'pia.templates.modals.remove.resume.pias_number'|trans }} + {{ 'pia.templates.modals.remove.resume.processing_number'|trans }} - {{ piaTemplate.pias|length }} + {{ template.processings|length }} diff --git a/tests/_data/piaTemplate.json b/tests/_data/processingTemplate.json similarity index 100% rename from tests/_data/piaTemplate.json rename to tests/_data/processingTemplate.json diff --git a/tests/acceptance/PiaTemplatesCest.php b/tests/acceptance/PiaTemplatesCest.php deleted file mode 100644 index c67960a..0000000 --- a/tests/acceptance/PiaTemplatesCest.php +++ /dev/null @@ -1,76 +0,0 @@ -login(); - - $I->wantTo('Create new PIA template'); - $I->amOnPage('/managePiaTemplates'); - - $I->fillField('input[name="create_pia_template_form[name]"]', $this->piaTemplateName); - $I->fillField('textarea[name="create_pia_template_form[description]"]', 'A selenium template'); - - // Docker cannot access backend filesystem, so we need to find another way to upload a json example. - $I->fillField('input[name="create_pia_template_form[data]"]', $this->piaTemplateFilePath); - - $I->click('form[name="create_pia_template_form"] [type="submit"]'); - } - - public function edit_newly_created_pia_template_test(Webguy $I) - { - $I->login(); - - $I->wantTo('Edit newly created PIA template'); - $I->amOnPage('/managePiaTemplates'); - - $formName = 'form[name="edit_pia_template_form"]'; - - $I->click('//td[contains(text(), "' . $this->piaTemplateName . '")]/ancestor::tr/descendant::a[contains(@href,"/managePiaTemplates/editPiaTemplate/")]'); - $I->waitForElementVisible('input[name="edit_pia_template_form[name]"]'); - $I->fillField('edit_pia_template_form[name]', 'edited-' . $this->piaTemplateName); - $I->click($formName . ' [type="submit"]'); - - $I->canSeeNumberOfElements('//td[contains(text(), "edited-' . $this->piaTemplateName . '")]', 1); - - $I->click('//td[contains(text(), "edited-' . $this->piaTemplateName . '")]/ancestor::tr/descendant::a[contains(@href,"/managePiaTemplates/editPiaTemplate/")]'); - $I->waitForElementVisible('input[name="edit_pia_template_form[name]"]'); - $I->fillField('edit_pia_template_form[name]', $this->piaTemplateName); - $I->click($formName . ' [type="submit"]'); - - $I->canSeeNumberOfElements('//td[contains(text(), "' . $this->piaTemplateName . '")]', 1); - } - - public function remove_newly_created_pia_template_test(Webguy $I) - { - $I->login(); - - $I->wantTo('Remove newly created PIA template'); - $I->amOnPage('/managePiaTemplates'); - - $I->click('//td[contains(text(), "' . $this->piaTemplateName . '")]/ancestor::tr/descendant::a[contains(@href,"/managePiaTemplates/removePiaTemplate/")]'); - - $formName = 'form[name="remove_pia_template_form"]'; - - $I->waitForElementVisible($formName . ' input[type="submit"]'); - - $I->canSeeNumberOfElements('//table[@class="ui single line table"]/descendant-or-self::b[contains(text(), "Nom")]/ancestor::tr/descendant::td[contains(text(), "' . $this->piaTemplateName . '")]', 1); - - $I->click($formName . ' input[type="submit"]'); - } -} diff --git a/tests/acceptance/ProcessingTemplatesCest.php b/tests/acceptance/ProcessingTemplatesCest.php new file mode 100644 index 0000000..e5c21f7 --- /dev/null +++ b/tests/acceptance/ProcessingTemplatesCest.php @@ -0,0 +1,76 @@ +login(); + + $I->wantTo('Create new Processing template'); + $I->amOnPage('/manageProcessingTemplates'); + + $I->fillField('input[name="create_processing_template_form[name]"]', $this->processingTemplateName); + $I->fillField('textarea[name="create_processing_template_form[description]"]', 'A selenium template'); + + // Docker cannot access backend filesystem, so we need to find another way to upload a json example. + $I->fillField('input[name="create_processing_template_form[data]"]', $this->processingTemplateFilePath); + + $I->click('form[name="create_processing_template_form"] [type="submit"]'); + } + + public function edit_newly_created_processing_template_test(Webguy $I) + { + $I->login(); + + $I->wantTo('Edit newly created Processing template'); + $I->amOnPage('/manageProcessingTemplates'); + + $formName = 'form[name="edit_processing_template_form"]'; + + $I->click('//td[contains(text(), "' . $this->processingTemplateName . '")]/ancestor::tr/descendant::a[contains(@href,"/manageProcessingTemplates/editProcessingTemplate/")]'); + $I->waitForElementVisible('input[name="edit_processing_template_form[name]"]'); + $I->fillField('edit_processing_template_form[name]', 'edited-' . $this->processingTemplateName); + $I->click($formName . ' [type="submit"]'); + + $I->canSeeNumberOfElements('//td[contains(text(), "edited-' . $this->processingTemplateName . '")]', 1); + + $I->click('//td[contains(text(), "edited-' . $this->processingTemplateName . '")]/ancestor::tr/descendant::a[contains(@href,"/manageProcessingTemplates/editProcessingTemplate/")]'); + $I->waitForElementVisible('input[name="edit_processing_template_form[name]"]'); + $I->fillField('edit_processing_template_form[name]', $this->processingTemplateName); + $I->click($formName . ' [type="submit"]'); + + $I->canSeeNumberOfElements('//td[contains(text(), "' . $this->processingTemplateName . '")]', 1); + } + + public function remove_newly_created_processing_template_test(Webguy $I) + { + $I->login(); + + $I->wantTo('Remove newly created Processing template'); + $I->amOnPage('/manageProcessingTemplates'); + + $I->click('//td[contains(text(), "' . $this->processingTemplateName . '")]/ancestor::tr/descendant::a[contains(@href,"/manageProcessingTemplates/removeProcessingTemplate/")]'); + + $formName = 'form[name="remove_processing_template_form"]'; + + $I->waitForElementVisible($formName . ' input[type="submit"]'); + + $I->canSeeNumberOfElements('//table[@class="ui single line table"]/descendant-or-self::b[contains(text(), "Nom")]/ancestor::tr/descendant::td[contains(text(), "' . $this->processingTemplateName . '")]', 1); + + $I->click($formName . ' input[type="submit"]'); + } +} diff --git a/tests/functional/PiaTemplateBatchImportTest.php b/tests/functional/ProcessingTemplateBatchImportTest.php similarity index 80% rename from tests/functional/PiaTemplateBatchImportTest.php rename to tests/functional/ProcessingTemplateBatchImportTest.php index ee2bfdc..944c980 100644 --- a/tests/functional/PiaTemplateBatchImportTest.php +++ b/tests/functional/ProcessingTemplateBatchImportTest.php @@ -10,15 +10,15 @@ namespace PiaApi\Tests\functionnal; -use PiaApi\Command\PiaTemplatesBatchImportCommand; +use PiaApi\Command\ProcessingTemplatesBatchImportCommand; use Symfony\Bundle\FrameworkBundle\Console\Application; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Component\Console\Tester\CommandTester; use PiaApi\Kernel; use PiaApi\DataExchange\Transformer\JsonToEntityTransformer; -use PiaApi\Services\PiaTemplateService; +use PiaApi\Services\ProcessingTemplateService; -class PiaTemplateBatchImportTest extends WebTestCase +class ProcessingTemplateBatchImportTest extends WebTestCase { /** * @return string The Kernel class name @@ -40,14 +40,14 @@ public function testExecute() $application = new Application($kernel); $application->add( - new PiaTemplatesBatchImportCommand( + new ProcessingTemplatesBatchImportCommand( $di->get('doctrine')->getManager(), $di->get(JsonToEntityTransformer::class), - $di->get(PiaTemplateService::class) + $di->get(ProcessingTemplateService::class) ) ); - $command = $application->find(PiaTemplatesBatchImportCommand::NAME); + $command = $application->find(ProcessingTemplatesBatchImportCommand::NAME); $commandTester = new CommandTester($command); diff --git a/translations/Pia.fr.yml b/translations/Pia.fr.yml index 65dd032..8a07f25 100644 --- a/translations/Pia.fr.yml +++ b/translations/Pia.fr.yml @@ -118,7 +118,7 @@ pia: resume: template: Gabarit name: Nom - pias_number: PIA issues de ce gabarit + processing_number: Traitements issues de ce gabarit forms: create: