Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BO - Export PDF] Prise en compte des nouveaux désordres #2265

Merged
merged 2 commits into from
Feb 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 4 additions & 8 deletions src/Messenger/MessageHandler/PdfExportMessageHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use App\Service\Mailer\NotificationMailerRegistry;
use App\Service\Mailer\NotificationMailerType;
use App\Service\Signalement\Export\SignalementExportPdfGenerator;
use App\Service\Signalement\SignalementDesordresProcessor;
use App\Service\UploadHandlerService;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
Expand All @@ -23,23 +24,18 @@ public function __construct(
private readonly SignalementRepository $signalementRepository,
private readonly ParameterBagInterface $parameterBag,
private readonly UploadHandlerService $uploadHandlerService,
private readonly SignalementDesordresProcessor $signalementDesordresProcessor,
) {
}

public function __invoke(PdfExportMessage $pdfExportMessage): void
{
$criticitesFormatted = [];
$signalement = $this->signalementRepository->find($pdfExportMessage->getSignalementId());

foreach ($signalement->getCriticites() as $criticite) {
$situationLabel = $criticite->getCritere()->getSituation()->getLabel();
$critereLabel = $criticite->getCritere()->getLabel();
$criticitesFormatted[$situationLabel][$critereLabel] = $criticite;
}
$infoDesordres = $this->signalementDesordresProcessor->process($signalement);

$htmlContent = $this->twig->render('pdf/signalement.html.twig', [
'signalement' => $signalement,
'situations' => $criticitesFormatted,
'situations' => $infoDesordres['criticitesArranged'],
]);

$tmpFilename = $this->signalementExportPdfGenerator->generateToTempFolder(
Expand Down
31 changes: 31 additions & 0 deletions templates/pdf/partial_desordre.html.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{% if criteres %}
{% set firstCritere = criteres|first %}
{% if firstCritere is defined %}
{% set firstPrecision = firstCritere|first %}
{% if firstPrecision is defined %}
{% if signalement.jsonContent[firstPrecision.desordreCritere.slugCategorie] is defined %}
<h5>{{ signalement.jsonContent[firstPrecision.desordreCritere.slugCategorie] }}</h5>
{% endif %}
{% endif %}
{% endif %}

<ul>
{% for critere,precisions in criteres %}
<li>
{{ critere }}
{% for precision in precisions %}
{% if precision.label is not same as '' %}
<ul class="fr-list fr-list--none">
<li>
{{ precision.label|raw }}
{% if signalement.jsonContent[precision.desordreCritere.slugCritere] is defined %}
<br>Commentaire usager : <i>{{ signalement.jsonContent[precision.desordreCritere.slugCritere] }}</i>
{% endif %}
</li>
</ul>
{% endif %}
{% endfor %}
</li>
{% endfor %}
</ul>
{% endif %}
146 changes: 85 additions & 61 deletions templates/pdf/signalement.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<div class="page">
<section>
<h1 style="text-align: right">Signalement #{{ signalement.reference }}</h1>
<h3 style="text-align: right">Déposé le {{ signalement.createdAt|format_datetime(locale='fr') }}</h3>
{% if signalement.isNotOccupant %}
<h3 style="text-align: right">Signalement par un tiers</h3>

Expand All @@ -17,33 +18,37 @@
<table style="width: 100%">
<tr>
<td style="width: 50%">
<h3 style="margin-bottom: 0"> Informations de
l'occupant</h3>
<h3 style="margin-bottom: 0">Informations de l'occupant</h3>
<ul style="list-style:none; margin-left:0px;padding-left:0px;">
<li><b>Nom: </b> {{ signalement.nomOccupant }} -
<b>Prénom: </b> {{ signalement.prenomOccupant }}</li>
<li><b>Courriel: </b><a
<li><b>Nom :</b> {{ signalement.nomOccupant }} -
<b>Prénom :</b> {{ signalement.prenomOccupant }}</li>
<li><b>Courriel :</b> <a
href="mailto:{{ signalement.mailOccupant }}">{{ signalement.mailOccupant }}</a>
</li>
<li><b>Téléphone: </b><a
<li><b>Téléphone :</b> <a
href="tel:{{ signalement.telOccupant }}">{{ signalement.telOccupant }}</a></li>
<li>
<b>Adresse: </b> {{ signalement.adresseOccupant ~', '~signalement.cpOccupant ~' '~ signalement.villeOccupant|upper }}
<b>Adresse :</b> {{ signalement.adresseOccupant ~', '~signalement.cpOccupant ~' '~ signalement.villeOccupant|upper }}
<br>
{{ signalement.etageOccupant ? 'étage ' ~ signalement.etageOccupant ~ ',' : '' }}
{{ signalement.escalierOccupant ? 'escalier ' ~ signalement.escalierOccupant ~ ',' : '' }}
{{ signalement.numAppartOccupant ? 'appartement ' ~ signalement.numAppartOccupant ~ ',' : '' }}
{{ signalement.adresseAutreOccupant ? signalement.adresseAutreOccupant ~ ',' : '' }}
</li>
<li><b>Occupant(s): </b> {{ signalement.nbAdultes }}
<li><b>Occupant(s) :</b> {{ signalement.nbAdultes }}
<b>Adulte(s)</b>{% if signalement.nbEnfantsM6 %} - {{ signalement.nbEnfantsM6 }} Enfant(s)
<u><b>moins</b></u> 6 ans{% endif %}{% if signalement.nbEnfantsP6 %} - {{ signalement.nbEnfantsP6 }} Enfant(s)
<u><b>plus</b></u> 6 ans{% endif %}</li>
<li><b>Date
d'entrée: </b> {{ signalement.dateEntree ? signalement.dateEntree|date('d/m/Y') : 'N/R' }}
d'entrée :</b> {{ signalement.dateEntree ? signalement.dateEntree|date('d/m/Y') : 'N/R' }}
</li>
<li>
<b>Logement: </b> {{ signalement.natureLogement }}
<b>Logement :</b> {{ signalement.natureLogement }}
de {{ signalement.superficie }}m² -
<b>Loyer: </b> {{ signalement.loyer }} €/mois
<b>Loyer :</b> {{ signalement.loyer }} €/mois
</li>
<li>
<b>Allocataire: </b>
<b>Allocataire :</b>
{% if signalement.isAllocataire %}
<small class="fr-background-alt--green-emeraude fr-rounded fr-p-1v fr-text--bold fr-valid-text fr-display-inline-flex fr-mt-0 fr-px-3v">{{ signalement.isAllocataire }}</small>
{% else %}
Expand All @@ -52,10 +57,10 @@
</li>
{% if signalement.isAllocataire %}
<li>
<b>N° allocataire: </b> {{ signalement.numAllocataire }}
<b>N° allocataire :</b> {{ signalement.numAllocataire }}
</li>
<li>
<b>Montant allocation: </b> {{ signalement.montantAllocation ?? 'N/R' }}
<b>Montant allocation :</b> {{ signalement.montantAllocation ?? 'N/R' }}
€/mois
</li>
{% endif %}
Expand All @@ -65,13 +70,13 @@
<td>
<h3 style="margin-bottom: 0"> Informations du déclarant</h3>
<ul style="list-style:none; margin-left:0px;padding-left:0px;">
<li><b>Nom: </b> {{ signalement.nomDeclarant }} -
<b>Prénom: </b> {{ signalement.prenomDeclarant }}</li>
<li><b>Courriel: </b><a
<li><b>Nom :</b> {{ signalement.nomDeclarant }} -
<b>Prénom :</b> {{ signalement.prenomDeclarant }}</li>
<li><b>Courriel :</b><a
href="mailto:{{ signalement.mailDeclarant }}">{{ signalement.mailDeclarant }}</a>
</li>
<li><b>Téléphone: </b>{{ signalement.telDeclarant }}</li>
<li><b>Structure: </b> {{ signalement.structureDeclarant }}</li>
<li><b>Téléphone :</b>{{ signalement.telDeclarant }}</li>
<li><b>Structure :</b> {{ signalement.structureDeclarant }}</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
Expand All @@ -94,52 +99,52 @@
<h3>Informations propriétaire</h3>
<ul style="list-style:none; margin-left:0px;padding-left:0px;">
<li>
<b>Propriétaire averti: </b>
<b>Propriétaire averti :</b>
{% if signalement.isProprioAverti %}
{{ picto_yes|raw }}
{% else %}
{{ picto_no|raw }}
{% endif %}
</li>
<li><b>Nom: </b> {{ signalement.nomProprio ?? 'N/R' }}
<li><b>Courriel: </b><a
<li><b>Nom :</b> {{ signalement.nomProprio ?? 'N/R' }}
<li><b>Courriel :</b><a
href="mailto:{{ signalement.mailProprio }}">{{ signalement.mailProprio ?? 'N/R' }}</a>
</li>
<li><b>Téléphone: </b><a
<li><b>Téléphone :</b><a
href="tel:{{ signalement.telProprio }}">{{ signalement.telProprio ?? 'N/R' }}</a>
</li>
<li><b>Adresse: </b> {{ signalement.adresseProprio ?? 'N/R' }}</li>
<li><b>Adresse :</b> {{ signalement.adresseProprio ?? 'N/R' }}</li>
</ul>
</td>
<td>
<h3>Informations logement</h3>
<ul style="list-style:none; margin-left:0px;padding-left:0px;">
<li>
<b>Bail en cours: </b>
<b>Bail en cours :</b>
{% if signalement.isBailEnCours %}
{{ picto_yes|raw }}
{% else %}
{{ picto_no|raw }}
{% endif %}
</li>
<li>
<b>Logement social: </b>
<b>Logement social :</b>
{% if signalement.isLogementSocial %}
{{ picto_yes|raw }}
{% else %}
{{ picto_no|raw }}
{% endif %}
</li>
<li>
<b>Demande de relogement: </b>
<b>Demande de relogement :</b>
{% if signalement.isRelogement %}
{{ picto_yes|raw }}
{% else %}
{{ picto_no|raw }}
{% endif %}
</li>
<li>
<b>Preavis de départ: </b>
<b>Preavis de départ :</b>
{% if signalement.isPreavisDepart %}
{{ picto_yes|raw }}
{% else %}
Expand Down Expand Up @@ -192,39 +197,58 @@
<div class="page" style="padding-top: 25px!important;">
<section>
<h2>Problème(s) signalé(s)</h2>
<ul style="list-style:none; margin-left:0px;padding-left:0px;">
{% for situation,criteres in situations %}
<li>
<h3><b>{{ situation|capitalize }}</b></h3>
<ul style="list-style:none;">
{% for critere,criticite in criteres %}
{% if criticite.score is same as(1) %}
{% set icon = 'moyen' %}
{% elseif criticite.score is same as(2) %}
{% set icon = 'grave' %}
{% else %}
{% set icon = 'tres-grave' %}
{% endif %}
<li>{% if criticite.critere.isDanger %}<p class="fr-badge fr-badge--warning">
danger</p>&nbsp;&nbsp;{% endif %}<b>{{ critere }}</b>
<ul style="list-style:none;">
<li class="fr-grid-row fr-grid-row--middle fr-w-100">
<div class="fr-col-md-2 fr-col-lg-1 fr-col--middle">
{# <img src={{asset('img/{{ icon }}-actif.svg') }} alt=""
width="50"
class=" fr-text--center"> #}
</div>
<div class="fr-col-md-10 fr-col-lg-11 fr-pl-5v fr-rounded">
{{ criticite.label|capitalize }}
</div>
</li>
</ul>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
{% if signalement.createdFrom %}
<h4>Désordres logement</h4>
{% if situations[enum('App\\Entity\\Enum\\DesordreCritereZone').LOGEMENT.name] is defined %}
{% for situation,criteres in situations[enum('App\\Entity\\Enum\\DesordreCritereZone').LOGEMENT.name] %}
{% include 'pdf/partial_desordre.html.twig' %}
{% endfor %}
{% else %}
<i>Aucun désordre signalé dans le logement</i>
{% endif %}


<h4>Désordres bâtiment</h4>
{% if situations[enum('App\\Entity\\Enum\\DesordreCritereZone').BATIMENT.name] is defined %}
{% for situation,criteres in situations[enum('App\\Entity\\Enum\\DesordreCritereZone').BATIMENT.name] %}
{% include 'pdf/partial_desordre.html.twig' %}
{% endfor %}
{% else %}
<i>Aucun désordre signalé dans le bâtiment</i>
{% endif %}

{% else %}
<ul style="list-style:none; margin-left:0px;padding-left:0px;">
{% for situation,criteres in situations %}
<li>
<h3><b>{{ situation|capitalize }}</b></h3>
<ul style="list-style:none;">
{% for critere,criticite in criteres %}
{% if criticite.score is same as(1) %}
{% set icon = 'moyen' %}
{% elseif criticite.score is same as(2) %}
{% set icon = 'grave' %}
{% else %}
{% set icon = 'tres-grave' %}
{% endif %}
<li>{% if criticite.critere.isDanger %}<p class="fr-badge fr-badge--warning">
danger</p>&nbsp;&nbsp;{% endif %}<b>{{ critere }}</b>
<ul style="list-style:none;">
<li class="fr-grid-row fr-grid-row--middle fr-w-100">
<div class="fr-col-md-2 fr-col-lg-1 fr-col--middle">
</div>
<div class="fr-col-md-10 fr-col-lg-11 fr-pl-5v fr-rounded">
{{ criticite.label|capitalize }}
</div>
</li>
</ul>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
{% endif %}
</section>
</div>

Expand Down
Loading