From 99c2d6627c595d8713c1a19dbc44beccc64762e2 Mon Sep 17 00:00:00 2001 From: emilschn Date: Mon, 2 Oct 2023 18:03:39 +0200 Subject: [PATCH 1/7] entity and import for entreprises publiques --- migrations/Version20231002145606.php | 26 +++++ scripts/upload-s3.sh | 5 + .../ImportEntreprisePubliqueCommand.php | 66 +++++++++++++ src/Entity/EntreprisePublique.php | 95 +++++++++++++++++++ src/Factory/EntreprisePubliqueFactory.php | 18 ++++ src/Manager/EntreprisePubliqueManager.php | 47 +++++++++ .../EntreprisePubliqueRepository.php | 41 ++++++++ .../EntreprisePubliqueImportLoader.php | 67 +++++++++++++ .../EntreprisePubliqueImportMapper.php | 40 ++++++++ 9 files changed, 405 insertions(+) create mode 100644 migrations/Version20231002145606.php create mode 100644 src/Command/ImportEntreprisePubliqueCommand.php create mode 100644 src/Entity/EntreprisePublique.php create mode 100644 src/Factory/EntreprisePubliqueFactory.php create mode 100644 src/Manager/EntreprisePubliqueManager.php create mode 100644 src/Repository/EntreprisePubliqueRepository.php create mode 100644 src/Service/Import/EntreprisePublique/EntreprisePubliqueImportLoader.php create mode 100644 src/Service/Import/EntreprisePublique/EntreprisePubliqueImportMapper.php diff --git a/migrations/Version20231002145606.php b/migrations/Version20231002145606.php new file mode 100644 index 00000000..6debe00a --- /dev/null +++ b/migrations/Version20231002145606.php @@ -0,0 +1,26 @@ +addSql('CREATE TABLE entreprise_publique (id INT AUTO_INCREMENT NOT NULL, nom VARCHAR(255) NOT NULL, adresse VARCHAR(255) NOT NULL, url VARCHAR(255) DEFAULT NULL, telephone VARCHAR(255) DEFAULT NULL, code_postal VARCHAR(5) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB'); + } + + public function down(Schema $schema): void + { + $this->addSql('DROP TABLE entreprise_publique'); + } +} diff --git a/scripts/upload-s3.sh b/scripts/upload-s3.sh index f8a824ad..91cb0e26 100755 --- a/scripts/upload-s3.sh +++ b/scripts/upload-s3.sh @@ -39,6 +39,11 @@ else aws s3 cp data/signalement/signalements_${uuid}.csv s3://${BUCKET_URL}/csv/ ${debug} aws s3 ls s3://${BUCKET_URL}/csv/signalements_${uuid}.csv ;; + "entreprisespubliques") + echo "Upload entreprises.csv to cloud..." + aws s3 cp data/entreprises.csv s3://${BUCKET_URL}/csv/ ${debug} + aws s3 ls s3://${BUCKET_URL}/csv/entreprises.csv + ;; *) echo "Invalid argument. Please use 'grid' or 'signalement' or 'image' or 'mapping-doc' or 'process-all'" ;; diff --git a/src/Command/ImportEntreprisePubliqueCommand.php b/src/Command/ImportEntreprisePubliqueCommand.php new file mode 100644 index 00000000..bb01041c --- /dev/null +++ b/src/Command/ImportEntreprisePubliqueCommand.php @@ -0,0 +1,66 @@ +parameterBag->get('uploads_tmp_dir').'entreprises.csv'; + if (!$this->fileStorage->fileExists($fromFile)) { + $io->error('CSV File does not exist'); + + return Command::FAILURE; + } + + $this->uploadHandlerService->createTmpFileFromBucket($fromFile, $toFile); + + $this->entreprisePubliqueImportLoader->load( + $this->csvParser->parseAsDict($toFile), + $this->csvParser->getHeaders($toFile), + $output + ); + + $countEntreprises = $this->entreprisePubliqueImportLoader->countEntreprises(); + + $io->success(sprintf('%s entreprises publiques importées', $countEntreprises)); + + return Command::SUCCESS; + } +} diff --git a/src/Entity/EntreprisePublique.php b/src/Entity/EntreprisePublique.php new file mode 100644 index 00000000..2389f167 --- /dev/null +++ b/src/Entity/EntreprisePublique.php @@ -0,0 +1,95 @@ +id; + } + + public function getNom(): ?string + { + return $this->nom; + } + + public function setNom(string $nom): self + { + $this->nom = $nom; + + return $this; + } + + public function getAdresse(): ?string + { + return $this->adresse; + } + + public function setAdresse(string $adresse): self + { + $this->adresse = $adresse; + + return $this; + } + + public function getUrl(): ?string + { + return $this->url; + } + + public function setUrl(?string $url): self + { + $this->url = $url; + + return $this; + } + + public function getTelephone(): ?string + { + return $this->telephone; + } + + public function setTelephone(?string $telephone): self + { + $this->telephone = $telephone; + + return $this; + } + + public function getCodePostal(): ?string + { + return $this->codePostal; + } + + public function setCodePostal(string $codePostal): self + { + $this->codePostal = $codePostal; + + return $this; + } +} diff --git a/src/Factory/EntreprisePubliqueFactory.php b/src/Factory/EntreprisePubliqueFactory.php new file mode 100644 index 00000000..3f915601 --- /dev/null +++ b/src/Factory/EntreprisePubliqueFactory.php @@ -0,0 +1,18 @@ +setNom($data['nom']) + ->setAdresse($data['adresse']) + ->setUrl($data['url']) + ->setTelephone($data['telephone']) + ->setCodePostal($data['codePostal']); + } +} diff --git a/src/Manager/EntreprisePubliqueManager.php b/src/Manager/EntreprisePubliqueManager.php new file mode 100644 index 00000000..dbb44aae --- /dev/null +++ b/src/Manager/EntreprisePubliqueManager.php @@ -0,0 +1,47 @@ +getRepository()->findOneBy([ + 'nom' => $data['nom'], + 'codePostal' => $data['codePostal'], + ]); + + if ($entreprisePublique instanceof EntreprisePublique) { + return $this->update($entreprisePublique, $data); + } + + $entreprisePublique = $this->entreprisePubliqueFactory->createInstanceFrom($data); + + return $entreprisePublique; + } + + public function update(EntreprisePublique $entreprisePublique, array $data): EntreprisePublique + { + return $entreprisePublique + ->setNom($data['nom']) + ->setAdresse($data['adresse']) + ->setUrl($data['url']) + ->setTelephone($data['telephone']) + ->setCodePostal($data['codePostal']); + } +} diff --git a/src/Repository/EntreprisePubliqueRepository.php b/src/Repository/EntreprisePubliqueRepository.php new file mode 100644 index 00000000..ab25d71f --- /dev/null +++ b/src/Repository/EntreprisePubliqueRepository.php @@ -0,0 +1,41 @@ + + * + * @method EntreprisePublique|null find($id, $lockMode = null, $lockVersion = null) + * @method EntreprisePublique|null findOneBy(array $criteria, array $orderBy = null) + * @method EntreprisePublique[] findAll() + * @method EntreprisePublique[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class EntreprisePubliqueRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, EntreprisePublique::class); + } + + public function save(EntreprisePublique $entity, bool $flush = false): void + { + $this->getEntityManager()->persist($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } + + public function remove(EntreprisePublique $entity, bool $flush = false): void + { + $this->getEntityManager()->remove($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } +} diff --git a/src/Service/Import/EntreprisePublique/EntreprisePubliqueImportLoader.php b/src/Service/Import/EntreprisePublique/EntreprisePubliqueImportLoader.php new file mode 100644 index 00000000..1672b9d1 --- /dev/null +++ b/src/Service/Import/EntreprisePublique/EntreprisePubliqueImportLoader.php @@ -0,0 +1,67 @@ +count = 0; + if ($output) { + $progressBar = new ProgressBar($output); + $progressBar->start(\count($data)); + } + + foreach ($data as $item) { + $dataMapped = $this->entreprisePubliqueImportMapper->map($headers, $item); + if (!empty($dataMapped)) { + ++$this->count; + if ($output) { + $progressBar->advance(); + } + + if ('France' !== $dataMapped['pays']) { + continue; + } + + $entreprisePublique = $this->entreprisePubliqueManager->createOrUpdate($dataMapped, true); + $this->entreprisePubliqueManager->save($entreprisePublique); + } + } + + $this->entreprisePubliqueManager->flush(); + if ($output) { + $progressBar->finish(); + } + } + + public function countEntreprises(): int + { + return $this->count; + } +} diff --git a/src/Service/Import/EntreprisePublique/EntreprisePubliqueImportMapper.php b/src/Service/Import/EntreprisePublique/EntreprisePubliqueImportMapper.php new file mode 100644 index 00000000..0a3efb5c --- /dev/null +++ b/src/Service/Import/EntreprisePublique/EntreprisePubliqueImportMapper.php @@ -0,0 +1,40 @@ + 'nom', + 'Adresse' => 'adresse', + 'URL' => 'url', + 'Telephone' => 'telephone', + 'Code postal' => 'codePostal', + 'Pays' => 'pays', + ]; + } + + public function map(array $columns, array $data): array + { + $dataMapped = []; + if (1 === \count($data)) { + return $dataMapped; + } + foreach ($this->getMapping() as $fileColumn => $fieldColumn) { + if (\in_array($fileColumn, $columns)) { + $fieldValue = 'NSP' !== $data[$fileColumn] ? $data[$fileColumn] : ''; + $fieldValue = trim($fieldValue, '"'); + if ('codePostal' === $fieldColumn) { + $fieldValue = str_pad($fieldValue, 5, '0', \STR_PAD_LEFT); + } + $dataMapped[$fieldColumn] = $fieldValue; + } else { + $dataMapped[$fieldColumn] = null; + } + } + + return $dataMapped; + } +} From 391b10ade5c486e80d9d79ec7502dfc0ab7af15f Mon Sep 17 00:00:00 2001 From: emilschn Date: Tue, 3 Oct 2023 17:29:20 +0200 Subject: [PATCH 2/7] form and mail for signalement of territoire inactifs (list of entreprises publiques) --- assets/controllers/form_signalement_front.js | 16 ++++-- .../Front/EntreprisesPubliquesController.php | 33 ++++++++++++ .../Front/SignalementController.php | 7 ++- .../Front/SuiviUsagerViewController.php | 3 +- .../EntreprisePubliqueRepository.php | 10 ++++ src/Service/Mailer/MailerProvider.php | 19 +++++++ src/Service/Mailer/Template.php | 1 + .../front/entreprises-labelisees.html.twig | 53 +++++++++++++++++++ .../_partial_step_info_usager.html.twig | 17 +++--- 9 files changed, 143 insertions(+), 16 deletions(-) create mode 100644 src/Controller/Front/EntreprisesPubliquesController.php create mode 100644 templates/front/entreprises-labelisees.html.twig diff --git a/assets/controllers/form_signalement_front.js b/assets/controllers/form_signalement_front.js index a96aafbc..97d1fa7f 100644 --- a/assets/controllers/form_signalement_front.js +++ b/assets/controllers/form_signalement_front.js @@ -34,8 +34,6 @@ class PunaisesFrontSignalementController { CLOSED_STEP_LIST = [ 'home', 'info_usager', - 'autotraitement_info', - 'autotraitement_sent', ]; SOCIAL_STEP_LIST = [ 'home', @@ -59,6 +57,11 @@ class PunaisesFrontSignalementController { init() { self = this; $('.btn-next').on('click', function(){ + if (!self.isTerritoryOpen && self.stepStr === 'info_usager') { + self.submitAdd(); + return; + } + self.refreshStep(1); }); $('.btn-next-next').on('click', function(){ @@ -588,6 +591,7 @@ class PunaisesFrontSignalementController { } submitAdd() { + $('.front-signalement #step-info_usager .btn-next').attr('disabled', 'disabled'); $('.front-signalement #step-professionnel_info .btn-next-next').attr('disabled', 'disabled'); $('.front-signalement #step-autotraitement_info .btn-next-next').attr('disabled', 'disabled'); if (self.isLogementSocial) { @@ -603,8 +607,14 @@ class PunaisesFrontSignalementController { processData:false, success: function() { + if (!self.isTerritoryOpen) { + let codePostal = $('input#code-postal').val(); + window.location.href = $('input#url-entreprises-publiques').val() + codePostal; + return; + } + let nbStep = 2; - if (!self.isTerritoryOpen || self.isLogementSocial) { + if (self.isLogementSocial) { nbStep = 1; } self.refreshStep(nbStep); diff --git a/src/Controller/Front/EntreprisesPubliquesController.php b/src/Controller/Front/EntreprisesPubliquesController.php new file mode 100644 index 00000000..7fa5cecc --- /dev/null +++ b/src/Controller/Front/EntreprisesPubliquesController.php @@ -0,0 +1,33 @@ +get('code-postal'); + if (empty($codePostal)) { + return $this->redirectToRoute('home'); + } + + $codePostal = str_pad($codePostal, 5, '0', \STR_PAD_LEFT); + $zipCode = substr($codePostal, 0, 2); + + $listEntreprisesPubliquesByZipCode = $entreprisePubliqueRepository->findByZipCode($zipCode); + + return $this->render('front/entreprises-labelisees.html.twig', [ + 'code_departement' => $zipCode, + 'entreprises_publiques' => $listEntreprisesPubliquesByZipCode, + ]); + } +} diff --git a/src/Controller/Front/SignalementController.php b/src/Controller/Front/SignalementController.php index b0c05d34..17e7362e 100644 --- a/src/Controller/Front/SignalementController.php +++ b/src/Controller/Front/SignalementController.php @@ -67,8 +67,11 @@ public function save( $signalementManager->save($signalement); if ($signalement->isAutotraitement()) { - $linkToPdf = $this->getParameter('base_url').'/build/'.$this->getParameter('doc_autotraitement'); - $mailerProvider->sendSignalementValidationWithAutotraitement($signalement, $linkToPdf); + if ($signalement->getTerritoire()->isActive()) { + $mailerProvider->sendSignalementValidationWithAutotraitement($signalement); + } else { + $mailerProvider->sendSignalementValidationWithEntreprisesPubliques($signalement); + } } else { $mailerProvider->sendSignalementValidationWithPro($signalement); diff --git a/src/Controller/Front/SuiviUsagerViewController.php b/src/Controller/Front/SuiviUsagerViewController.php index a90dc428..87490373 100644 --- a/src/Controller/Front/SuiviUsagerViewController.php +++ b/src/Controller/Front/SuiviUsagerViewController.php @@ -111,8 +111,7 @@ public function signalement_bascule_autotraitement( $signalement->setSwitchedTraitementAt(new \DateTimeImmutable()); $signalementManager->save($signalement); - $linkToPdf = $this->getParameter('base_url').'/build/'.$this->getParameter('doc_autotraitement'); - $mailerProvider->sendSignalementValidationWithAutotraitement($signalement, $linkToPdf); + $mailerProvider->sendSignalementValidationWithAutotraitement($signalement); $eventDispatcher->dispatch( new SignalementSwitchedEvent( diff --git a/src/Repository/EntreprisePubliqueRepository.php b/src/Repository/EntreprisePubliqueRepository.php index ab25d71f..eaf8b357 100644 --- a/src/Repository/EntreprisePubliqueRepository.php +++ b/src/Repository/EntreprisePubliqueRepository.php @@ -38,4 +38,14 @@ public function remove(EntreprisePublique $entity, bool $flush = false): void $this->getEntityManager()->flush(); } } + + public function findByZipCode(string $zipCode): array + { + $qb = $this->createQueryBuilder('ep'); + $qb->where('ep.codePostal LIKE :zipCode') + ->setParameter('zipCode', $zipCode.'%'); + $qb->orderBy('ep.nom', 'ASC'); + + return $qb->getQuery()->getResult(); + } } diff --git a/src/Service/Mailer/MailerProvider.php b/src/Service/Mailer/MailerProvider.php index 0c0cb88a..d03c61ef 100644 --- a/src/Service/Mailer/MailerProvider.php +++ b/src/Service/Mailer/MailerProvider.php @@ -111,6 +111,25 @@ public function sendSignalementValidationWithAutotraitement(Signalement $signale $this->send($message); } + public function sendSignalementValidationWithEntreprisesPubliques(Signalement $signalement): void + { + $emailOccupant = $signalement->getEmailOccupant(); + $link = $this->urlGenerator->generate('app_suivi_usager_view', ['uuidPublic' => $signalement->getUuidPublic()]); + $linkEntreprisesPubliques = $this->parameterBag->get('base_url'); + $linkEntreprisesPubliques .= $this->urlGenerator->generate('app_front_entreprises_labellisees'); + $linkEntreprisesPubliques .= '?code-postal='.$signalement->getCodePostal(); + $message = $this + ->messageFactory + ->createInstanceFrom(Template::SIGNALEMENT_ENTREPRISES_LABELLISEES, [ + 'nom_usager' => $signalement->getNomCompletOccupant(), + 'lien_entreprises_publiques' => $linkEntreprisesPubliques, + 'link' => $link, + ]) + ->setTo([$emailOccupant]); + + $this->send($message); + } + public function sendSignalementNewForPro(string $emailEntreprise, Signalement $signalement): void { $link = $this->urlGenerator->generate('app_signalement_view', ['uuid' => $signalement->getUuid()]); diff --git a/src/Service/Mailer/Template.php b/src/Service/Mailer/Template.php index 734a600c..1c6f2ccf 100644 --- a/src/Service/Mailer/Template.php +++ b/src/Service/Mailer/Template.php @@ -12,6 +12,7 @@ enum Template: int case RESET_PASSWORD = 2; case SIGNALEMENT_PROFESSIONAL = 17; case SIGNALEMENT_AUTO = 16; + case SIGNALEMENT_ENTREPRISES_LABELLISEES = 23; case SIGNALEMENT_NEW_FOR_PRO = 7; case SIGNALEMENT_NEW_ESTIMATION = 12; case SIGNALEMENT_NEW_MESSAGE = 6; diff --git a/templates/front/entreprises-labelisees.html.twig b/templates/front/entreprises-labelisees.html.twig new file mode 100644 index 00000000..5b61499c --- /dev/null +++ b/templates/front/entreprises-labelisees.html.twig @@ -0,0 +1,53 @@ +{% extends 'base.html.twig' %} + +{% block title %}Stop punaises - Les entreprises labellisées{% endblock %} + +{% block body %} + +
+

Entreprises labellisées - Département {{ code_departement }}

+
+ +
+ {% if entreprises_publiques %} +
+ {% for entreprise_publique in entreprises_publiques %} +
+
+
+
+

+ {{ entreprise_publique.nom }} +

+

{{ entreprise_publique.adresse }}

+
+ +
+
+
+ {% endfor %} +
+ + {% else %} + Aucune entreprise n'est disponible dans votre département. + {% endif %} +
+ +{% endblock %} diff --git a/templates/front_signalement/_partial_step_info_usager.html.twig b/templates/front_signalement/_partial_step_info_usager.html.twig index 43fe5513..952c8e76 100644 --- a/templates/front_signalement/_partial_step_info_usager.html.twig +++ b/templates/front_signalement/_partial_step_info_usager.html.twig @@ -21,20 +21,16 @@

Stop punaises

- Le service Stop Punaises n'est pas encore ouvert dans votre département. - Nous ne pouvons pas vous mettre en relation avec des entreprises locales. + Renseignez vos coordonnées pour accéder à la liste des entreprises labellisées de votre département + et recevoir le protocole de préparation d'auto-traitement par e-mail. +

- Vous pouvez cependant contacter le service "Info logement indigne" au + Vous pouvez également contacter le service "Info logement indigne" au 0806 706 806 (prix d'un appel local).

- -

- Vous pouvez également renseigner vos coordonnées pour - recevoir le protocole d'auto-traitement par mail. -

@@ -102,9 +98,12 @@ -
+
{% include 'front_signalement/_partial_signalement_navigation_container.html.twig' with {'next': 'Recevoir le protocole', 'previous': 'Retour' } %}
+
+ {% include 'front_signalement/_partial_signalement_navigation_container.html.twig' with {'next': 'Afficher la liste des entreprises', 'previous': 'Retour' } %} +
{% include 'front_signalement/_partial_signalement_navigation_container.html.twig' with {'next': 'Voir ma recommandation', 'previous': 'Retour' } %}
From d6da0504641828aebb93dc0dee8e6307b1e41c7d Mon Sep 17 00:00:00 2001 From: emilschn Date: Thu, 5 Oct 2023 10:11:28 +0200 Subject: [PATCH 3/7] fix from comments --- assets/styles/app.scss | 4 ++++ src/Manager/EntreprisePubliqueManager.php | 4 +--- src/Repository/EntreprisePubliqueRepository.php | 4 ++-- src/Service/Mailer/MailerProvider.php | 3 +-- src/Service/Mailer/MessageFactory.php | 3 +++ templates/front/entreprises-labelisees.html.twig | 4 ++-- 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/assets/styles/app.scss b/assets/styles/app.scss index 286119bb..ed28d308 100644 --- a/assets/styles/app.scss +++ b/assets/styles/app.scss @@ -929,4 +929,8 @@ span.image-caption { .leaflet-control-zoom a { background-image: none !important; +} + +.fr-links-group.display-list-block > li { + display: block; } \ No newline at end of file diff --git a/src/Manager/EntreprisePubliqueManager.php b/src/Manager/EntreprisePubliqueManager.php index dbb44aae..d9eac7f4 100644 --- a/src/Manager/EntreprisePubliqueManager.php +++ b/src/Manager/EntreprisePubliqueManager.php @@ -30,9 +30,7 @@ public function createOrUpdate(array $data): ?EntreprisePublique return $this->update($entreprisePublique, $data); } - $entreprisePublique = $this->entreprisePubliqueFactory->createInstanceFrom($data); - - return $entreprisePublique; + return $this->entreprisePubliqueFactory->createInstanceFrom($data); } public function update(EntreprisePublique $entreprisePublique, array $data): EntreprisePublique diff --git a/src/Repository/EntreprisePubliqueRepository.php b/src/Repository/EntreprisePubliqueRepository.php index eaf8b357..f8befff3 100644 --- a/src/Repository/EntreprisePubliqueRepository.php +++ b/src/Repository/EntreprisePubliqueRepository.php @@ -43,8 +43,8 @@ public function findByZipCode(string $zipCode): array { $qb = $this->createQueryBuilder('ep'); $qb->where('ep.codePostal LIKE :zipCode') - ->setParameter('zipCode', $zipCode.'%'); - $qb->orderBy('ep.nom', 'ASC'); + ->setParameter('zipCode', $zipCode.'%') + ->orderBy('ep.nom', 'ASC'); return $qb->getQuery()->getResult(); } diff --git a/src/Service/Mailer/MailerProvider.php b/src/Service/Mailer/MailerProvider.php index d03c61ef..ce7d4f91 100644 --- a/src/Service/Mailer/MailerProvider.php +++ b/src/Service/Mailer/MailerProvider.php @@ -115,8 +115,7 @@ public function sendSignalementValidationWithEntreprisesPubliques(Signalement $s { $emailOccupant = $signalement->getEmailOccupant(); $link = $this->urlGenerator->generate('app_suivi_usager_view', ['uuidPublic' => $signalement->getUuidPublic()]); - $linkEntreprisesPubliques = $this->parameterBag->get('base_url'); - $linkEntreprisesPubliques .= $this->urlGenerator->generate('app_front_entreprises_labellisees'); + $linkEntreprisesPubliques = $this->urlGenerator->generate('app_front_entreprises_labellisees'); $linkEntreprisesPubliques .= '?code-postal='.$signalement->getCodePostal(); $message = $this ->messageFactory diff --git a/src/Service/Mailer/MessageFactory.php b/src/Service/Mailer/MessageFactory.php index 847941ca..166d18ed 100644 --- a/src/Service/Mailer/MessageFactory.php +++ b/src/Service/Mailer/MessageFactory.php @@ -13,6 +13,9 @@ public function createInstanceFrom(Template $template, array $parameters = []) if (isset($parameters['link'])) { $parameters['link'] = $this->baseUrl.$parameters['link']; } + if (isset($parameters['lien_entreprises_publiques'])) { + $parameters['lien_entreprises_publiques'] = $this->baseUrl.$parameters['lien_entreprises_publiques']; + } return (new Message()) ->setFrom($this->from) diff --git a/templates/front/entreprises-labelisees.html.twig b/templates/front/entreprises-labelisees.html.twig index 5b61499c..2bc118ec 100644 --- a/templates/front/entreprises-labelisees.html.twig +++ b/templates/front/entreprises-labelisees.html.twig @@ -22,7 +22,7 @@

{{ entreprise_publique.adresse }}