- Il semblerait que vous ayez déjà déposé un signalement pour le logement situé
{{ formStore.data.adresse_logement_adresse }}
- pour le compte de
-
{{ formStore.alreadyExists.signalements[0]?.prenom_occupant }}
-
{{ formStore.alreadyExists.signalements[0]?.nom_occupant }}.
+ Il semblerait que vous ayez déjà déposé un signalement pour le logement situé
{{ formStore.data.adresse_logement_adresse }}
+
{{ signalementLabel(formStore.alreadyExists.signalements[0]) }}
Ce signalement est en cours de traitement.
Vous pouvez le compléter depuis votre page de suivi ou créer un nouveau signalement.
diff --git a/assets/vue/components/signalement-form/requests.ts b/assets/vue/components/signalement-form/requests.ts
index 9d3c2e8cf..f1a46c44f 100644
--- a/assets/vue/components/signalement-form/requests.ts
+++ b/assets/vue/components/signalement-form/requests.ts
@@ -120,7 +120,7 @@ export const requests = {
},
sendMailContinueFromDraft (functionReturn: Function) {
- const url = formStore.props.ajaxurlSendMailContinueFromDraft.replace('uuid', formStore.alreadyExists.uuid)
+ const url = formStore.props.ajaxurlSendMailContinueFromDraft.replace('uuid', formStore.alreadyExists.uuidDraft)
requests.doRequestPost(url, '', functionReturn, undefined)
},
diff --git a/src/Controller/FrontSignalementController.php b/src/Controller/FrontSignalementController.php
index 151ce9bdc..354bc9375 100755
--- a/src/Controller/FrontSignalementController.php
+++ b/src/Controller/FrontSignalementController.php
@@ -107,29 +107,13 @@ public function checkSignalementOrDraftAlreadyExists(
);
if (0 === $errors->count()) {
$isTiersDeclarant = $signalementDraftFactory->isTiersDeclarant($signalementDraftRequest);
- if ($isTiersDeclarant) {
- $existingSignalements = $signalementRepository->findAllForEmailAndAddress(
- $signalementDraftFactory->getEmailDeclarant($signalementDraftRequest),
- $signalementDraftRequest->getAdresseLogementAdresseDetailNumero(),
- $signalementDraftRequest->getAdresseLogementAdresseDetailCodePostal(),
- $signalementDraftRequest->getAdresseLogementAdresseDetailCommune(),
- );
- } else {
- $existingSignalement = $signalementRepository->findOneForEmailAndAddress(
- $signalementDraftFactory->getEmailDeclarant($signalementDraftRequest),
- $signalementDraftRequest->getAdresseLogementAdresseDetailNumero(),
- $signalementDraftRequest->getAdresseLogementAdresseDetailCodePostal(),
- $signalementDraftRequest->getAdresseLogementAdresseDetailCommune(),
- );
- if (
- null !== $existingSignalement
- && Signalement::STATUS_CLOSED !== $existingSignalement->getStatut()
- && Signalement::STATUS_REFUSED !== $existingSignalement->getStatut()
- ) {
- $existingSignalements = [];
- $existingSignalements[] = $existingSignalement;
- }
- }
+ $existingSignalements = $signalementRepository->findAllForEmailAndAddress(
+ $signalementDraftFactory->getEmailDeclarant($signalementDraftRequest),
+ $signalementDraftRequest->getAdresseLogementAdresseDetailNumero(),
+ $signalementDraftRequest->getAdresseLogementAdresseDetailCodePostal(),
+ $signalementDraftRequest->getAdresseLogementAdresseDetailCommune(),
+ $isTiersDeclarant
+ );
$dataToHash = $signalementDraftFactory->getEmailDeclarant($signalementDraftRequest);
$dataToHash .= $signalementDraftRequest->getAdresseLogementAdresse();
@@ -171,7 +155,7 @@ public function checkSignalementOrDraftAlreadyExists(
return $this->json([
'already_exists' => true,
'type' => 'draft',
- 'uuid' => $existingSignalementDraft->getUuid(),
+ 'uuid_draft' => $existingSignalementDraft->getUuid(),
'created_at' => $existingSignalementDraft->getCreatedAt(),
'updated_at' => $existingSignalementDraft->getUpdatedAt(),
]);
@@ -270,14 +254,11 @@ public function sendMailGetLienSuivi(
Signalement $signalement,
Request $request
): Response {
- if (
- $request->isMethod('POST')
- && $signalement // TODO : vérifier qu'on reçoit bien le bon signalement
- ) {
+ if ($request->isMethod('POST')) {
$success = $notificationMailerRegistry->send(
new NotificationMail(
type: NotificationMailerType::TYPE_SIGNALEMENT_LIEN_SUIVI,
- to: $signalement->getMailUsagers(), // TODO : choisir le bon mail ?
+ to: $signalement->isTiersDeclarant() ? $signalement->getMailDeclarant() : $signalement->getMailOccupant(),
signalement: $signalement,
)
);
diff --git a/src/Entity/Signalement.php b/src/Entity/Signalement.php
index 529274e4f..c2160d897 100755
--- a/src/Entity/Signalement.php
+++ b/src/Entity/Signalement.php
@@ -2007,6 +2007,21 @@ public function setProfileDeclarant(?ProfileDeclarant $profileDeclarant): self
return $this;
}
+ public function isTiersDeclarant(): bool
+ {
+ switch ($this->getProfileDeclarant()) {
+ case ProfileDeclarant::SERVICE_SECOURS:
+ case ProfileDeclarant::BAILLEUR:
+ case ProfileDeclarant::TIERS_PRO:
+ case ProfileDeclarant::TIERS_PARTICULIER:
+ return true;
+ case ProfileDeclarant::LOCATAIRE:
+ case ProfileDeclarant::BAILLEUR_OCCUPANT:
+ default:
+ return false;
+ }
+ }
+
public function getPrenomProprio(): ?string
{
return $this->prenomProprio;
diff --git a/src/Factory/SignalementDraftFactory.php b/src/Factory/SignalementDraftFactory.php
index 56c8a7f00..092e596ae 100644
--- a/src/Factory/SignalementDraftFactory.php
+++ b/src/Factory/SignalementDraftFactory.php
@@ -36,7 +36,7 @@ public function getEmailDeclarant(SignalementDraftRequest $signalementDraftReque
}
}
- public function isTiersDeclarant(SignalementDraftRequest $signalementDraftRequest): ?bool
+ public function isTiersDeclarant(SignalementDraftRequest $signalementDraftRequest): bool
{
switch (strtoupper($signalementDraftRequest->getProfil())) {
case ProfileDeclarant::SERVICE_SECOURS->name:
@@ -46,9 +46,8 @@ public function isTiersDeclarant(SignalementDraftRequest $signalementDraftReques
return true;
case ProfileDeclarant::LOCATAIRE->name:
case ProfileDeclarant::BAILLEUR_OCCUPANT->name:
- return false;
default:
- return null;
+ return false;
}
}
}
diff --git a/src/Repository/SignalementRepository.php b/src/Repository/SignalementRepository.php
index ca403b38f..3eab6a0bf 100755
--- a/src/Repository/SignalementRepository.php
+++ b/src/Repository/SignalementRepository.php
@@ -1107,12 +1107,17 @@ public function findAllForEmailAndAddress(
string $address,
string $zipcode,
string $city,
+ bool $isTiersDeclarant = true
): array {
- $qb = $this->createQueryBuilder('s')
- ->andWhere('s.mailDeclarant = :email OR s.mailOccupant = :email')->setParameter('email', $email)
- ->andWhere('s.adresseOccupant = :address')->setParameter('address', $address)
+ $qb = $this->createQueryBuilder('s');
+ if ($isTiersDeclarant) {
+ $qb->andWhere('s.mailDeclarant = :email')->setParameter('email', $email);
+ } else {
+ $qb->andWhere('s.mailOccupant = :email')->setParameter('email', $email);
+ }
+ $qb->andWhere('LOWER(s.adresseOccupant) = :address')->setParameter('address', strtolower($address))
->andWhere('s.cpOccupant = :zipcode')->setParameter('zipcode', $zipcode)
- ->andWhere('s.villeOccupant = :city')->setParameter('city', $city)
+ ->andWhere('LOWER(s.villeOccupant) = :city')->setParameter('city', strtolower($city))
->andWhere('s.statut IN (:statusSignalement)')
->setParameter(
'statusSignalement',
@@ -1123,6 +1128,12 @@ public function findAllForEmailAndAddress(
]
);
- return $qb->addOrderBy('s.createdAt', 'DESC')->getQuery()->getResult();
+ if ($isTiersDeclarant) {
+ $qb->addOrderBy('s.createdAt', 'DESC');
+ } else {
+ $qb->addOrderBy('s.lastSuiviAt', 'DESC');
+ }
+
+ return $qb->getQuery()->getResult();
}
}
diff --git a/templates/base.html.twig b/templates/base.html.twig
index df5e6f2df..b29aed55e 100755
--- a/templates/base.html.twig
+++ b/templates/base.html.twig
@@ -143,6 +143,7 @@