Skip to content

Commit

Permalink
Merge pull request #3634 from MTES-MCT/feature/3426-update-missing-fi…
Browse files Browse the repository at this point in the history
…eld-json

[BO] Données de type doctrine ne se mettrait pas à jour
  • Loading branch information
emilschn authored Jan 30, 2025
2 parents 5681b1a + 1950d26 commit d287006
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 34 deletions.
44 changes: 44 additions & 0 deletions migrations/Version20250127183041.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

declare(strict_types=1);

namespace DoctrineMigrations;

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

final class Version20250127183041 extends AbstractMigration
{
public function getDescription(): string
{
return 'Update JSON fields with signalement column value.';
}

public function up(Schema $schema): void
{
$this->addSql("
UPDATE `signalement`
SET type_composition_logement = JSON_SET(type_composition_logement, '$.type_logement_nature', nature_logement)
WHERE JSON_VALID(type_composition_logement) AND nature_logement IS NOT NULL;
");

$this->addSql("
UPDATE `signalement`
SET situation_foyer = JSON_SET(situation_foyer, '$.logement_social_date_naissance', DATE(date_naissance_occupant))
WHERE JSON_VALID(situation_foyer) AND date_naissance_occupant IS NOT NULL;");

$this->addSql("
UPDATE `signalement`
SET situation_foyer = JSON_SET(situation_foyer, '$.logement_social_numero_allocataire', num_allocataire)
WHERE JSON_VALID(situation_foyer) AND num_allocataire IS NOT NULL;");

$this->addSql("
UPDATE `signalement`
SET information_complementaire = JSON_SET(information_complementaire, '$.informations_complementaires_logement_montant_loyer', loyer)
WHERE JSON_VALID(information_complementaire) AND loyer IS NOT NULL;");
}

public function down(Schema $schema): void
{
}
}
3 changes: 3 additions & 0 deletions src/Controller/Back/SignalementEditController.php
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,9 @@ public function editCompositionLogement(
return $this->json($response, $response['code']);
}

/**
* @throws \DateMalformedStringException
*/
#[Route('/{uuid:signalement}/edit-situation-foyer', name: 'back_signalement_edit_situation_foyer', methods: 'POST')]
public function editSituationFoyer(
Signalement $signalement,
Expand Down
4 changes: 2 additions & 2 deletions src/Factory/Signalement/TypeCompositionLogementFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use App\Serializer\SignalementDraftRequestSerializer;
use App\Utils\DataPropertyArrayFilter;

class TypeCompositionLogementFactory
readonly class TypeCompositionLogementFactory
{
public function __construct(private SignalementDraftRequestSerializer $serializer)
{
Expand All @@ -33,7 +33,6 @@ public static function createFromArray(array $data): TypeCompositionLogement
typeLogementSousSolSansFenetre: $data['type_logement_sous_sol_sans_fenetre'] ?? null,
typeLogementSousCombleSansFenetre: $data['type_logement_sous_comble_sans_fenetre'] ?? null,
typeLogementCommoditesCuisine: $data['type_logement_commodites_cuisine'] ?? null,
typeLogementCommoditesPieceAVivre9m: $data['type_logement_commodites_piece_a_vivre_9m'] ?? null,
typeLogementCommoditesCuisineCollective: $data['type_logement_commodites_cuisine_collective'] ?? null,
typeLogementCommoditesSalleDeBain: $data['type_logement_commodites_salle_de_bain'] ?? null,
typeLogementCommoditesSalleDeBainCollective: $data['type_logement_commodites_salle_de_bain_collective'] ?? null,
Expand All @@ -47,6 +46,7 @@ public static function createFromArray(array $data): TypeCompositionLogement
compositionLogementNombrePersonnes: $data['composition_logement_nombre_personnes'] ?? null,
compositionLogementNombreEnfants: $data['composition_logement_nombre_enfants'] ?? null,
compositionLogementEnfants: $data['composition_logement_enfants'] ?? null,
typeLogementCommoditesPieceAVivre9m: $data['type_logement_commodites_piece_a_vivre_9m'] ?? null,
bailDpeBail: $data['bail_dpe_bail'] ?? null,
bailDpeInvariant: $data['bail_dpe_invariant'] ?? null,
bailDpeDpe: $data['bail_dpe_dpe'] ?? null,
Expand Down
75 changes: 43 additions & 32 deletions src/Manager/SignalementManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,21 +55,21 @@ class SignalementManager extends AbstractManager
{
public function __construct(
protected ManagerRegistry $managerRegistry,
private Security $security,
private SignalementFactory $signalementFactory,
private EventDispatcherInterface $eventDispatcher,
private QualificationStatusService $qualificationStatusService,
private SignalementAffectationListViewFactory $signalementAffectationListViewFactory,
private SignalementExportFactory $signalementExportFactory,
private ParameterBagInterface $parameterBag,
private SuroccupationSpecification $suroccupationSpecification,
private CriticiteCalculator $criticiteCalculator,
private SignalementQualificationUpdater $signalementQualificationUpdater,
private DesordrePrecisionRepository $desordrePrecisionRepository,
private DesordreCompositionLogementLoader $desordreCompositionLogementLoader,
private SuiviManager $suiviManager,
private BailleurRepository $bailleurRepository,
private AffectationRepository $affectationRepository,
private readonly Security $security,
private readonly SignalementFactory $signalementFactory,
private readonly EventDispatcherInterface $eventDispatcher,
private readonly QualificationStatusService $qualificationStatusService,
private readonly SignalementAffectationListViewFactory $signalementAffectationListViewFactory,
private readonly SignalementExportFactory $signalementExportFactory,
private readonly ParameterBagInterface $parameterBag,
private readonly SuroccupationSpecification $suroccupationSpecification,
private readonly CriticiteCalculator $criticiteCalculator,
private readonly SignalementQualificationUpdater $signalementQualificationUpdater,
private readonly DesordrePrecisionRepository $desordrePrecisionRepository,
private readonly DesordreCompositionLogementLoader $desordreCompositionLogementLoader,
private readonly SuiviManager $suiviManager,
private readonly BailleurRepository $bailleurRepository,
private readonly AffectationRepository $affectationRepository,
private readonly SignalementAddressUpdater $signalementAddressUpdater,
string $entityName = Signalement::class,
) {
Expand Down Expand Up @@ -193,15 +193,14 @@ public function updateAddressOccupantFromAddress(Signalement $signalement, Addre
}
}

/**
* @throws Exception
*/
public function findAllPartners(Signalement $signalement): array
{
/** @var PartnerRepository $partnerRepository */
$partnerRepository = $this->managerRegistry->getRepository(Partner::class);
$partners['affected'] = $partnerRepository->findByLocalization(
signalement: $signalement,
affected: true
);

$partners['affected'] = $partnerRepository->findByLocalization(signalement: $signalement);
$partners['not_affected'] = $partnerRepository->findByLocalization(
signalement: $signalement,
affected: false
Expand Down Expand Up @@ -271,10 +270,13 @@ public function findUsersAffectedToSignalement(
return array_unique($list, \SORT_REGULAR);
}

/**
* @throws \DateMalformedStringException
*/
public function updateFromSignalementQualification(
SignalementQualification $signalementQualification,
QualificationNDERequest $qualificationNDERequest,
) {
): void {
$signalement = $signalementQualification->getSignalement();
// mise à jour du signalement
if ($qualificationNDERequest->getDateEntree()) {
Expand All @@ -295,7 +297,7 @@ public function updateFromSignalementQualification(
}
$this->save($signalement);

// mise à jour du signalementqualification
// mise à jour du signalementQualification
if ($qualificationNDERequest->getDateDernierBail()) {
if (QualificationNDERequest::RADIO_VALUE_AFTER_2023 === $qualificationNDERequest->getDateDernierBail()
&& (
Expand Down Expand Up @@ -349,7 +351,7 @@ public function updateFromSignalementQualification(
public function updateFromAdresseOccupantRequest(
Signalement $signalement,
AdresseOccupantRequest $adresseOccupantRequest,
) {
): void {
$signalement->setAdresseOccupant($adresseOccupantRequest->getAdresse())
->setCpOccupant($adresseOccupantRequest->getCodePostal())
->setVilleOccupant($adresseOccupantRequest->getVille())
Expand All @@ -374,7 +376,7 @@ public function updateFromAdresseOccupantRequest(
public function updateFromCoordonneesTiersRequest(
Signalement $signalement,
CoordonneesTiersRequest $coordonneesTiersRequest,
) {
): void {
if (ProfileDeclarant::BAILLEUR == $signalement->getProfileDeclarant()) {
$signalement
->setTypeProprio(
Expand All @@ -400,7 +402,7 @@ public function updateFromCoordonneesTiersRequest(
public function updateFromCoordonneesFoyerRequest(
Signalement $signalement,
CoordonneesFoyerRequest $coordonneesFoyerRequest,
) {
): void {
if (ProfileDeclarant::BAILLEUR_OCCUPANT == $signalement->getProfileDeclarant()) {
$signalement
->setTypeProprio(
Expand Down Expand Up @@ -428,7 +430,7 @@ public function updateFromCoordonneesFoyerRequest(
public function updateFromCoordonneesBailleurRequest(
Signalement $signalement,
CoordonneesBailleurRequest $coordonneesBailleurRequest,
) {
): void {
$bailleur = null;
if ($signalement->getIsLogementSocial() && $coordonneesBailleurRequest->getNom()) {
$bailleur = $this->bailleurRepository->findOneBailleurBy(
Expand Down Expand Up @@ -478,7 +480,7 @@ public function updateFromCoordonneesBailleurRequest(
public function updateFromInformationsLogementRequest(
Signalement $signalement,
InformationsLogementRequest $informationsLogementRequest,
) {
): void {
if (is_numeric($informationsLogementRequest->getNombrePersonnes())) {
$signalement->setNbOccupantsLogement((int) $informationsLogementRequest->getNombrePersonnes());
}
Expand Down Expand Up @@ -538,6 +540,7 @@ public function updateFromInformationsLogementRequest(
$informationComplementaire = clone $signalement->getInformationComplementaire();
}
$informationComplementaire
->setInformationsComplementairesLogementMontantLoyer($informationsLogementRequest->getLoyer())
->setInformationsComplementairesSituationOccupantsLoyersPayes(
$informationsLogementRequest->getLoyersPayes()
)
Expand All @@ -564,7 +567,7 @@ public function updateFromInformationsLogementRequest(

private function updateDesordresAndScoreWithSuroccupationChanges(
Signalement $signalement,
) {
): void {
$situationFoyer = $signalement->getSituationFoyer();
$typeCompositionLogement = $signalement->getTypeCompositionLogement();
if ($signalement->getCreatedFrom()) {
Expand Down Expand Up @@ -611,7 +614,7 @@ private function updateDesordresAndScoreWithSuroccupationChanges(
public function updateFromCompositionLogementRequest(
Signalement $signalement,
CompositionLogementRequest $compositionLogementRequest,
) {
): void {
$signalement->setNatureLogement($compositionLogementRequest->getType());
$signalement->setSuperficie((float) $compositionLogementRequest->getSuperficie());

Expand All @@ -629,6 +632,7 @@ public function updateFromCompositionLogementRequest(
}

$typeCompositionLogement
->setTypeLogementNature($compositionLogementRequest->getType())
->setCompositionLogementPieceUnique($compositionLogementRequest->getTypeCompositionLogement())
->setCompositionLogementSuperficie($compositionLogementRequest->getSuperficie())
->setCompositionLogementHauteur($compositionLogementRequest->getCompositionLogementHauteur())
Expand All @@ -653,6 +657,7 @@ public function updateFromCompositionLogementRequest(
$compositionLogementRequest->getTypeLogementCommoditesWcCollective()
)
->setTypeLogementCommoditesWcCuisine($compositionLogementRequest->getTypeLogementCommoditesWcCuisine());

$signalement->setTypeCompositionLogement($typeCompositionLogement);

$this->desordreCompositionLogementLoader->load($signalement, $typeCompositionLogement);
Expand All @@ -671,14 +676,17 @@ public function updateFromCompositionLogementRequest(
$this->save($signalement);
$this->suiviManager->addSuiviIfNeeded(
signalement: $signalement,
description: 'La description du logement a été modifée par ',
description: 'La description du logement a été modifiée par ',
);
}

/**
* @throws \DateMalformedStringException
*/
public function updateFromSituationFoyerRequest(
Signalement $signalement,
SituationFoyerRequest $situationFoyerRequest,
) {
): void {
$signalement
->setIsLogementSocial(
SignalementInputValueMapper::map(
Expand All @@ -703,6 +711,8 @@ public function updateFromSituationFoyerRequest(
$situationFoyer = clone $signalement->getSituationFoyer();
}
$situationFoyer
->setLogementSocialNumeroAllocataire($situationFoyerRequest->getNumAllocataire())
->setLogementSocialDateNaissance($situationFoyerRequest->getDateNaissanceOccupant())
->setLogementSocialMontantAllocation($situationFoyerRequest->getLogementSocialMontantAllocation())
->setTravailleurSocialQuitteLogement($situationFoyerRequest->getTravailleurSocialQuitteLogement())
->setTravailleurSocialPreavisDepart($situationFoyerRequest->getTravailleurSocialPreavisDepart())
Expand Down Expand Up @@ -771,7 +781,7 @@ public function updateFromSituationFoyerRequest(
public function updateFromProcedureDemarchesRequest(
Signalement $signalement,
ProcedureDemarchesRequest $procedureDemarchesRequest,
) {
): void {
$signalement->setIsProprioAverti('' === $procedureDemarchesRequest->getIsProprioAverti() ? null : (bool) ($procedureDemarchesRequest->getIsProprioAverti()));

$informationProcedure = new InformationProcedure();
Expand All @@ -786,6 +796,7 @@ public function updateFromProcedureDemarchesRequest(
}

$informationProcedure
->setInfoProcedureBailleurPrevenu($procedureDemarchesRequest->getIsProprioAverti())
->setInfoProcedureBailMoyen($procedureDemarchesRequest->getInfoProcedureBailMoyen())
->setInfoProcedureBailDate($procedureDemarchesRequest->getInfoProcedureBailDate())
->setInfoProcedureBailReponse($procedureDemarchesRequest->getInfoProcedureBailReponse())
Expand Down

0 comments on commit d287006

Please sign in to comment.