diff --git a/assets/vue/components/signalement-form/components/SignalementFormModalAlreadyExists.vue b/assets/vue/components/signalement-form/components/SignalementFormModalAlreadyExists.vue index 4f0ac0b6b..084ec69f8 100644 --- a/assets/vue/components/signalement-form/components/SignalementFormModalAlreadyExists.vue +++ b/assets/vue/components/signalement-form/components/SignalementFormModalAlreadyExists.vue @@ -10,10 +10,8 @@

Ce signalement existe déjàCes signalements existent déjà

- 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 @@