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 - Date d'entrée] Correction du type de champ pour la date d'entrée du logement dans le formulaire NDE #3507

Merged
merged 12 commits into from
Jan 10, 2025
6 changes: 2 additions & 4 deletions assets/scripts/vanilla/controllers/form_nde.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ const formBtn = document.querySelector('#signalement-edit-nde-form-submit')
formBtn?.addEventListener('click', evt => {
// Check fields
let postForm = true
if (!document.querySelector('#signalement-edit-nde-date-entree-before').checked &&
!document.querySelector('#signalement-edit-nde-date-entree-after').checked
) {
if (!document.querySelector('#signalement-edit-nde-date-entree')) {
document.querySelector('#signalement-edit-nde-date-entree-error').classList.remove('fr-hidden')
postForm = false
} else {
Expand Down Expand Up @@ -57,7 +55,7 @@ formBtn?.addEventListener('click', evt => {

const data = {
_token: document.getElementById('signalement-edit-nde-token').value,
dateEntree: document.querySelector('input[name=dateEntree]:checked')?.value,
dateEntree: document.querySelector('input[name=dateEntree]')?.value,
dpe: stringToBoolean(document.querySelector('input[name=dpe]:checked')?.value),
dateDernierBail: document.querySelector('input[name=dateDernierBail]:checked')?.value,
dateDernierDPE: document.querySelector('input[name=dateDernierDPE]:checked')?.value,
Expand Down
30 changes: 30 additions & 0 deletions migrations/Version20250102154204.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

declare(strict_types=1);

namespace DoctrineMigrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

final class Version20250102154204 extends AbstractMigration
{
public function getDescription(): string
{
return 'rollback fake signalement date_entree if another real date has been entered';
}

public function up(Schema $schema): void
{
$this->skipIf(
'prod' !== getenv('APP_ENV'),
'Cette migration ne s’exécute qu’en environnement de production.'
);
$this->addSql('UPDATE `signalement` SET `date_entree` = \'2012-03-06\' WHERE id = 49266');
$this->addSql('UPDATE `signalement` SET `date_entree` = \'2024-08-12\' WHERE id = 68601');
}

public function down(Schema $schema): void
{
}
}
66 changes: 53 additions & 13 deletions src/Manager/SignalementManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
use App\Entity\Enum\MotifCloture;
use App\Entity\Enum\ProfileDeclarant;
use App\Entity\Enum\ProprioType;
use App\Entity\Enum\Qualification;
use App\Entity\Model\InformationComplementaire;
use App\Entity\Model\InformationProcedure;
use App\Entity\Model\SituationFoyer;
Expand Down Expand Up @@ -276,17 +277,14 @@ public function updateFromSignalementQualification(
$signalement = $signalementQualification->getSignalement();
// mise à jour du signalement
if ($qualificationNDERequest->getDateEntree()) {
if (QualificationNDERequest::RADIO_VALUE_AFTER_2023 === $qualificationNDERequest->getDateEntree()
&& (null === $signalement->getDateEntree() || $signalement->getDateEntree()->format('Y') < '2023')
) {
$signalement->setDateEntree(new \DateTimeImmutable(QualificationNDERequest::RADIO_VALUE_AFTER_2023));
}

if (QualificationNDERequest::RADIO_VALUE_BEFORE_2023 === $qualificationNDERequest->getDateEntree()
&& (null === $signalement->getDateEntree() || $signalement->getDateEntree()->format('Y') >= '2023')
) {
$signalement->setDateEntree(new \DateTimeImmutable(QualificationNDERequest::RADIO_VALUE_BEFORE_2023));
$signalement->setDateEntree(new \DateTimeImmutable($qualificationNDERequest->getDateEntree()));
$typeCompositionLogement = new TypeCompositionLogement();
if (!empty($signalement->getTypeCompositionLogement())) {
$typeCompositionLogement = clone $signalement->getTypeCompositionLogement();
}
$typeCompositionLogement
->setBailDpeDateEmmenagement($qualificationNDERequest->getDateEntree());
$signalement->setTypeCompositionLogement($typeCompositionLogement);
}

if (null !== $qualificationNDERequest->getSuperficie()
Expand Down Expand Up @@ -321,14 +319,30 @@ public function updateFromSignalementQualification(
}

$signalementQualification->setDetails($qualificationNDERequest->getDetails());

$this->save($signalementQualification);

$signalementQualification->setStatus(
$this->qualificationStatusService->getNDEStatus($signalementQualification)
);

$this->save($signalementQualification);

$typeCompositionLogement = new TypeCompositionLogement();
if (!empty($signalement->getTypeCompositionLogement())) {
$typeCompositionLogement = clone $signalement->getTypeCompositionLogement();
}
switch ($qualificationNDERequest->getDetails()['DPE']) {
case true:
$typeCompositionLogement->setBailDpeDpe('oui');
break;
case false:
$typeCompositionLogement->setBailDpeDpe('non');
break;
default:
$typeCompositionLogement->setBailDpeDpe('nsp');
break;
}
$signalement->setTypeCompositionLogement($typeCompositionLogement);
$this->save($signalement);
}

public function updateFromAdresseOccupantRequest(
Expand Down Expand Up @@ -488,9 +502,35 @@ public function updateFromInformationsLogementRequest(
->setBailDpeInvariant($informationsLogementRequest->getBailDpeInvariant())
->setBailDpeEtatDesLieux($informationsLogementRequest->getBailDpeEtatDesLieux())
->setBailDpeDpe($informationsLogementRequest->getBailDpeDpe())
->setBailDpeClasseEnergetique($informationsLogementRequest->getBailDpeClasseEnergetique());
->setBailDpeClasseEnergetique($informationsLogementRequest->getBailDpeClasseEnergetique())
->setBailDpeDateEmmenagement($signalement->getDateEntree()?->format('Y-m-d'));
$signalement->setTypeCompositionLogement($typeCompositionLogement);

$signalementQualificationNDE = $signalement->getSignalementQualifications()->filter(function ($qualification) {
return Qualification::NON_DECENCE_ENERGETIQUE === $qualification->getQualification();
})->first();
if ($signalementQualificationNDE) {
$qualificationDetails = $signalementQualificationNDE->getDetails();
switch ($informationsLogementRequest->getBailDpeDpe()) {
case 'oui':
$qualificationDetails['DPE'] = true;
break;
case 'non':
$qualificationDetails['DPE'] = false;
break;
default:
$qualificationDetails['DPE'] = null;
break;
}
$signalementQualificationNDE->setDetails($qualificationDetails);
$this->save($signalementQualificationNDE);

$signalementQualificationNDE->setStatus(
$this->qualificationStatusService->getNDEStatus($signalementQualificationNDE)
);
$this->save($signalementQualificationNDE);
}

$informationComplementaire = new InformationComplementaire();
if (!empty($signalement->getInformationComplementaire())) {
$informationComplementaire = clone $signalement->getInformationComplementaire();
Expand Down
19 changes: 7 additions & 12 deletions templates/_partials/_modal_edit_nde.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
</div>
<form method="POST" name="signalement-edit-nde" id="signalement-edit-nde-form" enctype="application/json"
action="{{ path('back_signalement_qualification_editer',{uuid:signalement.uuid, signalementQualification:signalementQualificationNDE.id}) }}">
<div class="fr-grid-row fr-grid-row--gutters fr-grid-row--middle fr-my-3w"
<div class="fr-grid-row fr-grid-row--gutters fr-my-3w"
id="signalement-edit-nde-form-row">
<div class="fr-col-6">
<fieldset class="fr-fieldset fr-fieldset--inline">
Expand All @@ -42,17 +42,12 @@
<p id="signalement-edit-nde-date-entree-error" class="fr-error-text fr-hidden fr-my-3v">
Veuillez préciser la date d'entrée dans le logement.
</p>
<div class="fr-fieldset__content">
<div class="fr-radio-group">
<input type="radio" id="signalement-edit-nde-date-entree-before" name="dateEntree" value="1970-01-01" {% if signalement.dateEntree and signalement.dateEntree|date('Y')<2023 %}checked{% endif %}>
<label class="fr-label" for="signalement-edit-nde-date-entree-before">Avant 2023
</label>
</div>
<div class="fr-radio-group">
<input type="radio" id="signalement-edit-nde-date-entree-after" name="dateEntree" value="2023-01-02" {% if signalement.dateEntree and signalement.dateEntree|date('Y')>=2023 %}checked{% endif %}>
<label class="fr-label" for="signalement-edit-nde-date-entree-after">A partir de 2023
</label>
</div>
<div class="fr-input-group">
{% set dateEntree = '' %}
{% if signalement.dateEntree %}
{% set dateEntree = signalement.dateEntree.format('Y-m-d') %}
{% endif %}
<input class="fr-input" type="date" id="signalement-edit-nde-date-entree" name="dateEntree" value="{{ dateEntree }}">
</div>
</fieldset>
</div>
Expand Down
Loading