Skip to content

Commit

Permalink
lilst signalements #2327
Browse files Browse the repository at this point in the history
  • Loading branch information
hmeneuvrier committed Apr 10, 2024
1 parent 8c7c987 commit 7da77fa
Show file tree
Hide file tree
Showing 6 changed files with 99 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ export default defineComponent({
if (requestResponse.already_exists === true) {
const link = document.getElementById('fr-modal-already-exists-button')
formStore.alreadyExists.type = requestResponse.type
formStore.alreadyExists.uuid = requestResponse.uuid
formStore.alreadyExists.signalements = requestResponse.signalements
formStore.alreadyExists.createdAt = requestResponse.created_at
formStore.alreadyExists.updatedAt = requestResponse.updated_at
formStore.alreadyExists.uuidDraft = requestResponse.uuid_draft
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,34 @@
<button class="fr-btn--close fr-btn" title="Fermer la fenêtre modale" aria-controls="fr-modal-already-exists">Fermer</button>
</div>
<div class="fr-modal__content" v-if="formStore.alreadyExists.type==='signalement'">
<h1 id="fr-modal-title-modal-already-exists" class="fr-modal__title">Ce signalement existe déjà</h1>
<p>
<h1 id="fr-modal-title-modal-already-exists" class="fr-modal__title"><span v-if="formStore.alreadyExists.signalements?.length === 1">Ce signalement existe déjà</span><span v-else>Ces signalements existent déjà</span></h1>
<div v-if="formStore.data.profil === 'bailleur_occupant' || formStore.data.profil === 'locataire' || formStore.alreadyExists.signalements?.length === 1">
Il semblerait que vous ayez déjà déposé un signalement pour le logement situé <strong>{{ formStore.data.adresse_logement_adresse }}</strong>
<span v-if="formStore.data.coordonnees_occupant_nom || formStore.data.coordonnees_occupant_prenom"> pour le compte de {{ formStore.data.coordonnees_occupant_nom }} {{ formStore.data.coordonnees_occupant_prenom }}</span>.
pour le compte de
<span v-if="formStore.alreadyExists.signalements && formStore.alreadyExists.signalements[0]?.prenom_occupant !== null">{{ formStore.alreadyExists.signalements[0]?.prenom_occupant }}</span>
<span v-if="formStore.alreadyExists.signalements && formStore.alreadyExists.signalements[0]?.nom_occupant !== null">{{ formStore.alreadyExists.signalements[0]?.nom_occupant }}</span>.
Ce signalement est en cours de traitement.<br>
Vous pouvez le compléter depuis votre page de suivi ou créer un nouveau signalement.
<br>
<br>
Souhaitez-vous compléter le signalement existant ou en créer un nouveau ?
</p>
</div>
<div v-else>
Il semblerait que vous ayez déjà déposé plusieurs signalements pour le logement situé <strong>{{ formStore.data.adresse_logement_adresse }}</strong>.<br><br>
<div v-for="signalement in formStore.alreadyExists.signalements" v-bind:key="signalement.uuid">
Déposé le {{ formatDate(signalement.created_at) }} pour le compte de <span v-if="signalement.prenom_occupant !== null">{{ signalement.prenom_occupant }}</span> <span v-if="signalement.nom_occupant !== null">{{ signalement.nom_occupant }}</span>
(<span v-if="signalement.num_appart_occupant !== null">Numéro d'appartement : {{ signalement.num_appart_occupant }}</span><span v-if="signalement.escalier_occupant !== null">Escalier : {{ signalement.escalier_occupant }}</span>
<span v-if="signalement.etage_occupant !== null">Etage : {{ signalement.etage_occupant }}</span><span v-if="signalement.adresse_autre_occupant !== null">Autre : {{ signalement.adresse_autre_occupant }}</span>)<br><br>
<button class="fr-btn" @click="selectedSignalementUuid = signalement.uuid">
Ah, c'est ce signalement !
</button>
</div>
Ces signalements sont en cours de traitement.<br>
Vous pouvez les compléter depuis votre page de suivi ou créer un nouveau signalement.
<br>
<br>
Souhaitez-vous compléter un des signalements existants ou en créer un nouveau ?
</div>
<SignalementFormWarning
id="fr-modal-already-exists-warning"
label="Créer un nouveau signalement pour le même logement risque de ralentir la procédure."
Expand Down Expand Up @@ -96,15 +114,22 @@ export default defineComponent({
data () {
return {
formStore,
errorMessage: ''
errorMessage: '',
selectedSignalementUuid: null as string | null
}
},
methods: {
continueFromDraft () {
requests.sendMailContinueFromDraft(this.gotoValidationScreen)
},
getLienSuivi () {
requests.sendMailGetLienSuivi(this.gotoValidationScreen)
if (this.selectedSignalementUuid === null) {
if (this.formStore.alreadyExists.signalements) {
this.selectedSignalementUuid = this.formStore.alreadyExists.signalements[0]?.uuid
}
}
console.log('Lien de suivi pour le signalement avec UUID :', this.selectedSignalementUuid)
requests.sendMailGetLienSuivi(this.selectedSignalementUuid, this.gotoValidationScreen)
},
gotoValidationScreen (requestResponse: any) {
if (requestResponse && requestResponse.success === true) {
Expand Down
4 changes: 2 additions & 2 deletions assets/vue/components/signalement-form/requests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,8 @@ export const requests = {
requests.doRequestPost(url, '', functionReturn, undefined)
},

sendMailGetLienSuivi (functionReturn: Function) {
const url = formStore.props.ajaxurlSendMailGetLienSuivi.replace('uuid', formStore.alreadyExists.uuid)
sendMailGetLienSuivi (uuid: any, functionReturn: Function) {
const url = formStore.props.ajaxurlSendMailGetLienSuivi.replace('uuid', uuid)
requests.doRequestPost(url, '', functionReturn, undefined)
},

Expand Down
2 changes: 2 additions & 0 deletions assets/vue/components/signalement-form/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ interface FormStore {
alreadyExists: {
type: string | null
uuid: string | null
signalements: any[] | null
uuidDraft: string | null
createdAt: string | null
updatedAt: string | null
Expand Down Expand Up @@ -90,6 +91,7 @@ const formStore: FormStore = reactive({
alreadyExists: {
uuid: null,
type: null,
signalements: null,
uuidDraft: null,
createdAt: null,
updatedAt: null
Expand Down
55 changes: 39 additions & 16 deletions src/Controller/FrontSignalementController.php
Original file line number Diff line number Diff line change
Expand Up @@ -106,15 +106,30 @@ public function checkSignalementOrDraftAlreadyExists(
['Default', 'POST_'.strtoupper($signalementDraftRequest->getProfil())]
);
if (0 === $errors->count()) {
// $isTiersDeclarant = $signalementDraftFactory->isTiersDeclarant($signalementDraftRequest);
$existingSignalement = $signalementRepository->findOneForEmailAndAddress(
$signalementDraftFactory->getEmailDeclarant($signalementDraftRequest),
$signalementDraftRequest->getAdresseLogementAdresseDetailNumero(),
$signalementDraftRequest->getAdresseLogementAdresseDetailCodePostal(),
$signalementDraftRequest->getAdresseLogementAdresseDetailCommune(),
// $isTiersDeclarant ? $signalementDraftRequest->getCoordonneesOccupantNom() : null,
// $isTiersDeclarant ? $signalementDraftRequest->getCoordonneesOccupantPrenom() : null,
);
$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;
}
}

$dataToHash = $signalementDraftFactory->getEmailDeclarant($signalementDraftRequest);
$dataToHash .= $signalementDraftRequest->getAdresseLogementAdresse();
Expand All @@ -130,16 +145,24 @@ public function checkSignalementOrDraftAlreadyExists(
]
);

if (
null !== $existingSignalement
&& Signalement::STATUS_CLOSED !== $existingSignalement->getStatut()
&& Signalement::STATUS_REFUSED !== $existingSignalement->getStatut()
) {
if (!empty($existingSignalements)) {
$signalements = array_map(function (Signalement $existingSignalement) {
return [
'uuid' => $existingSignalement->getUuid(),
'created_at' => $existingSignalement->getCreatedAt(),
'prenom_occupant' => $existingSignalement->getPrenomOccupant(),
'nom_occupant' => $existingSignalement->getNomOccupant(),
'adresse_autre_occupant' => $existingSignalement->getAdresseAutreOccupant(),
'num_appart_occupant' => $existingSignalement->getNumAppartOccupant(),
'escalier_occupant' => $existingSignalement->getEscalierOccupant(),
'etage_occupant' => $existingSignalement->getEtageOccupant(),
];
}, $existingSignalements);

return $this->json([
'already_exists' => true,
'type' => 'signalement',
'uuid' => $existingSignalement->getUuid(),
'created_at' => $existingSignalement->getCreatedAt(),
'signalements' => $signalements,
'uuid_draft' => $existingSignalementDraft?->getUuid() ?? null,
]);
}
Expand Down
34 changes: 24 additions & 10 deletions src/Repository/SignalementRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -1074,8 +1074,6 @@ public function findOneForEmailAndAddress(
string $address,
string $zipcode,
string $city,
// ?string $nomOccupant = null,
// ?string $prenomOccupant = null
): ?Signalement {
$qb = $this->createQueryBuilder('s')
->andWhere('s.mailDeclarant = :email OR s.mailOccupant = :email')->setParameter('email', $email)
Expand All @@ -1084,14 +1082,6 @@ public function findOneForEmailAndAddress(
->andWhere('s.villeOccupant = :city')->setParameter('city', $city)
->andWhere('s.statut != :statutArchived')->setParameter('statutArchived', Signalement::STATUS_ARCHIVED);

// if (null !== $nomOccupant) {
// $qb = $qb->andWhere('s.nomOccupant LIKE :nomOccupant')->setParameter('nomOccupant', '%'.$nomOccupant.'%');
// }
// if (null !== $prenomOccupant) {
// $qb = $qb->andWhere('s.prenomOccupant LIKE :prenomOccupant')
// ->setParameter('prenomOccupant', '%'.$prenomOccupant.'%');
// }

$list = $qb->addOrderBy('s.createdAt', 'DESC')
->getQuery()->getResult();
$statutsList = [
Expand All @@ -1111,4 +1101,28 @@ public function findOneForEmailAndAddress(

return null;
}

public function findAllForEmailAndAddress(
string $email,
string $address,
string $zipcode,
string $city,
): array {
$qb = $this->createQueryBuilder('s')
->andWhere('s.mailDeclarant = :email OR s.mailOccupant = :email')->setParameter('email', $email)
->andWhere('s.adresseOccupant = :address')->setParameter('address', $address)
->andWhere('s.cpOccupant = :zipcode')->setParameter('zipcode', $zipcode)
->andWhere('s.villeOccupant = :city')->setParameter('city', $city)
->andWhere('s.statut IN (:statusSignalement)')
->setParameter(
'statusSignalement',
[
Signalement::STATUS_ACTIVE,
Signalement::STATUS_NEED_PARTNER_RESPONSE,
Signalement::STATUS_NEED_VALIDATION,
]
);

return $qb->addOrderBy('s.createdAt', 'DESC')->getQuery()->getResult();
}
}

0 comments on commit 7da77fa

Please sign in to comment.