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 - Signalement] Renvoyer lien de suivi / SA #2516

Merged
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
2 changes: 1 addition & 1 deletion assets/styles/histologe.scss
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ html, body {
.signalement-invalid {
position: relative;

#signalement-toggle-situations, .reopen, .reaffect, .fr-fi-file-pdf-fill, .admin-territory-validation, .signalement-file-item a {
#signalement-toggle-situations, .reopen, .reaffect, .fr-fi-file-pdf-fill, .fr-icon-send-plane-fill, .admin-territory-validation, .signalement-file-item a {
position: relative;
z-index: 1002;
}
Expand Down
27 changes: 19 additions & 8 deletions src/Controller/SignalementController.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
use Doctrine\ORM\EntityManagerInterface;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
Expand Down Expand Up @@ -61,7 +62,7 @@ public function sendSignalementDraft(
SignalementDraftRequestSerializer $serializer,
SignalementDraftManager $signalementDraftManager,
ValidatorInterface $validator,
): Response {
): JsonResponse {
/** @var SignalementDraftRequest $signalementDraftRequest */
$signalementDraftRequest = $serializer->deserialize(
$payload = $request->getContent(),
Expand Down Expand Up @@ -93,7 +94,7 @@ public function checkSignalementOrDraftAlreadyExists(
ValidatorInterface $validator,
SignalementDraftRepository $signalementDraftRepository,
SignalementRepository $signalementRepository,
): Response {
): JsonResponse {
/** @var SignalementDraftRequest $signalementDraftRequest */
$signalementDraftRequest = $serializer->deserialize(
$payload = $request->getContent(),
Expand Down Expand Up @@ -177,7 +178,7 @@ public function updateSignalementDraft(
SignalementDraftManager $signalementDraftManager,
ValidatorInterface $validator,
SignalementDraft $signalementDraft,
): Response {
): JsonResponse {
/** @var SignalementDraftRequest $signalementDraftRequest */
$signalementDraftRequest = $serializer->deserialize(
$payload = $request->getContent(),
Expand Down Expand Up @@ -205,7 +206,7 @@ public function updateSignalementDraft(
#[Route('/signalement-draft/{uuid}/informations', name: 'informations_signalement_draft', methods: 'GET')]
public function getSignalementDraft(
SignalementDraft $signalementDraft,
): Response {
): JsonResponse {
return $this->json([
'signalement' => SignalementDraftStatus::EN_COURS === $signalementDraft->getStatus()
? $signalementDraft :
Expand All @@ -218,7 +219,7 @@ public function sendMailContinueFromDraft(
NotificationMailerRegistry $notificationMailerRegistry,
SignalementDraft $signalementDraft,
Request $request
): Response {
): JsonResponse {
if (
$request->isMethod('POST')
&& $signalementDraft
Expand Down Expand Up @@ -250,7 +251,7 @@ public function sendMailGetLienSuivi(
NotificationMailerRegistry $notificationMailerRegistry,
Signalement $signalement,
Request $request
): Response {
): JsonResponse|RedirectResponse {
if ($request->isMethod('POST')) {
$profil = $request->get('profil');
$success = $notificationMailerRegistry->send(
Expand All @@ -263,6 +264,16 @@ public function sendMailGetLienSuivi(
)
);

if ($request->get('preferedResponse') && 'redirection' === $request->get('preferedResponse')) {
if ($success) {
$this->addFlash('success', 'Le lien de suivi a été envoyé par e-mail.');
} else {
$this->addFlash('error', 'Le lien de suivi n\'a pas pu être envoyé par e-mail.');
}

return $this->redirect($this->generateUrl('back_signalement_view', ['uuid' => $signalement->getUuid()]));
}

if ($success) {
return $this->json(['success' => true]);
}
Expand All @@ -282,7 +293,7 @@ public function archiveDraft(
SignalementDraft $signalementDraft,
Request $request,
SignalementDraftManager $signalementDraftManager
): Response {
): JsonResponse {
if (
$request->isMethod('POST')
&& $signalementDraft
Expand All @@ -302,7 +313,7 @@ public function checkTerritory(
Request $request,
PostalCodeHomeChecker $postalCodeHomeChecker,
CommuneRepository $communeRepository
): Response {
): JsonResponse {
$postalCode = $request->get('cp');
if (empty($postalCode)) {
return $this->json([
Expand Down
86 changes: 86 additions & 0 deletions templates/_partials/_modal_send_lien_suivi.html.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
<dialog aria-labelledby="send-lien-suivi-modal-title" id="send-lien-suivi-modal" class="fr-modal" role="dialog">
<div class="fr-container fr-container--fluid fr-container-md">
<div class="fr-grid-row fr-grid-row--center">
<div class="fr-col-12 fr-col-md-8 fr-col-lg-6">
<div class="fr-modal__body">
<div class="fr-modal__header">
<h1 id="send-lien-suivi-modal-title" class="fr-modal__title">
<span class="fr-fi-arrow-right-line fr-fi--sm"></span>
Envoyer le lien de suivi pour le signalement #{{ signalement.reference }}
</h1>
<a href="#" class="fr-link--close fr-link" aria-controls="send-lien-suivi-modal">Fermer</a>
</div>
{% set lienSuivi = platform.url ~ path('front_suivi_signalement',{code:signalement.codeSuivi}) %}
{% set hasMail = '' %}
{% if signalement.isNotOccupant %}
{% set hasMail = 'declarant' %}
{% if signalement.mailOccupant is defined and signalement.mailOccupant is not empty and signalement.mailDeclarant is not same as signalement.mailOccupant %}
{% set hasMail = 'both' %}
{% endif %}
{% else %}
{% set hasMail = 'occupant' %}
{% endif %}
<form action="{{ path('send_mail_get_lien_suivi',{uuid:signalement.uuid}) }}" name="send_lien_suivi"
id="send_lien_suivi" method="POST" class='needs-validation' novalidate="novalidate">
<div class="fr-modal__content">
Vous êtes sur le point d'envoyer le lien de la page de suivi du signalement <strong>#{{ signalement.reference }}</strong>
{% if hasMail is same as 'declarant' %}
au tiers déclarant <strong>{{signalement.nomDeclarant}} {{signalement.prenomDeclarant}} ({{signalement.mailDeclarant}})</strong>.<br>
<input type="hidden" name="profil" value="tiers">
{% elseif hasMail is same as 'occupant' %}
à l'occupant du logement <strong>{{signalement.nomOccupant}} {{signalement.prenomOccupant}} ({{signalement.mailOccupant}})</strong>.<br>
<input type="hidden" name="profil" value="locataire">
{% elseif hasMail is same as 'both' %}
. Ce signalement a un occupant <strong>({{signalement.nomOccupant}} {{signalement.prenomOccupant}} - {{signalement.mailOccupant}})</strong> et un tiers déclarant <strong>({{signalement.nomDeclarant}} {{signalement.prenomDeclarant}} - {{signalement.mailDeclarant}})</strong>.<br><br>
Sélectionnez la personne à qui envoyer le lien de suivi puis cliquez sur le bouton envoyer. <br>
Pour envoyer le lien aux deux personnes, la procédure doit être faite deux fois. <br><br>
<fieldset class="fr-fieldset" id="radio-hint" aria-labelledby="radio-hint-legend radio-hint-messages">
<div class="fr-fieldset__element">
<div class="fr-radio-group">
<input type="radio" id="profil-occupant" name="profil" value="locataire" checked>
<label class="fr-label" for="profil-occupant">
L'occupant du logement {{signalement.nomOccupant}} {{signalement.prenomOccupant}} - {{signalement.mailOccupant}}.
</label>
</div>
</div>
<div class="fr-fieldset__element">
<div class="fr-radio-group">
<input type="radio" id="profil-declarant" name="profil" value="tiers">
<label class="fr-label" for="profil-declarant">
Le tiers déclarant {{signalement.nomDeclarant}} {{signalement.prenomDeclarant}} - {{signalement.mailDeclarant}}.
</label>
</div>
</div>
</fieldset>
{% endif %}
Voici le lien vers la page de suivi : {{ lienSuivi }}.<br>
Pour envoyer le lien par mail, cliquez sur le bouton ci-dessous.
<input type="hidden" name="preferedResponse" value="redirection">
</div>
<div class="fr-modal__footer">
<ul class="fr-btns-group fr-btns-group--right fr-btns-group--icon-left">
<li>
<button class="fr-btn fr-btn--secondary"
aria-controls="send-lien-suivi-modal">
Annuler
</button>
</li>
<li>
<button class="fr-btn fr-w-100" form="send_lien_suivi" type="submit">
{% if hasMail is same as 'declarant' %}
Envoyer le lien au tiers déclarant
{% elseif hasMail is same as 'occupant' %}
Envoyer le lien à l'occupant
{% elseif hasMail is same as 'both' %}
Envoyer le lien de suivi
{% endif %}
</button>
</li>
</ul>
</div>
</form>
</div>
</div>
</div>
</div>
</dialog>
3 changes: 3 additions & 0 deletions templates/back/signalement/view.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
{% if (is_granted('FILE_CREATE', signalement) and isDocumentsEnabled) %}
{% include '_partials/_modal_upload_files.html.twig' %}
{% endif %}
{% if is_granted('ROLE_ADMIN') %}
{% include '_partials/_modal_send_lien_suivi.html.twig' %}
{% endif %}
<section id="signalement-{{ signalement.id }}-content"
class="fr-p-5v fr-background--white
{{ (isClosedForMe and not is_granted('ROLE_ADMIN_TERRITORY'))
Expand Down
7 changes: 7 additions & 0 deletions templates/back/signalement/view/header.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,13 @@
title="Exporter le PDF">Exporter le PDF
</a>
{% endif %}

{% if is_granted('ROLE_ADMIN') %}
<a href="#" aria-controls="send-lien-suivi-modal" data-fr-opened="false"
class="fr-btn fr-btn--sm fr-btn--secondary fr-btn--icon-left fr-icon-send-plane-fill"
title="Envoyer le lien de suivi">Envoyer le lien de suivi
</a>
{% endif %}
</div>
</div>

Expand Down
Loading