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 - Signalements] Filtre Commune n agrege pas les données #3213

Merged
merged 1 commit into from
Oct 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions migrations/Version20241024083100.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

declare(strict_types=1);

namespace DoctrineMigrations;

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

final class Version20241024083100 extends AbstractMigration
{
public function getDescription(): string
{
return 'Set consistent ville_occupant values for Marseille and Lyon';
}

public function up(Schema $schema): void
{
$mapping = [
// Marseille
'MARSEILLE' => 'Marseille',
'MARSEILLE 2EME' => 'Marseille 2e Arrondissement',
'MARSEILLE 02' => 'Marseille 2e Arrondissement',
'MARSEILLE 04' => 'Marseille 4e Arrondissement',
'MARSEILLE (13013)' => 'Marseille 13e Arrondissement',
'MARSEILLE 14' => 'Marseille 14e Arrondissement',
// Lyon
'LYON 05' => 'Lyon 5e Arrondissement',
'Lyon 6' => 'Lyon 6e Arrondissement',
'LYON 08' => 'Lyon 8e Arrondissement',
'LYON 9EME' => 'Lyon 9e Arrondissement',
];
foreach ($mapping as $key => $value) {
$this->addSql("UPDATE signalement SET ville_occupant = '".$value."' WHERE ville_occupant = '".$key."'");
}
}

public function down(Schema $schema): void
{
}
}
6 changes: 6 additions & 0 deletions src/Service/Signalement/SearchFilter.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
use App\Repository\SignalementQualificationRepository;
use App\Repository\SuiviRepository;
use App\Repository\TerritoryRepository;
use App\Utils\CommuneHelper;
use App\Utils\ImportCommune;
use Doctrine\DBAL\Exception;
use Doctrine\ORM\EntityManagerInterface;
Expand Down Expand Up @@ -379,6 +380,11 @@ public function applyFilters(QueryBuilder $qb, array $filters, User $user): Quer
}

if (!empty($filters['cities'])) {
foreach ($filters['cities'] as $city) {
if (isset(CommuneHelper::COMMUNES_ARRONDISSEMENTS[$city])) {
$filters['cities'] = array_merge($filters['cities'], CommuneHelper::COMMUNES_ARRONDISSEMENTS[$city]);
}
}
$qb->andWhere('s.villeOccupant IN (:cities) OR s.cpOccupant IN (:cities)')
->setParameter('cities', $filters['cities']);
}
Expand Down
66 changes: 66 additions & 0 deletions src/Utils/CommuneHelper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?php

namespace App\Utils;

class CommuneHelper
{
private const MARSEILLE_ARRONDISSEMENTS = [
'Marseille 1er Arrondissement',
'Marseille 2e Arrondissement',
'Marseille 3e Arrondissement',
'Marseille 4e Arrondissement',
'Marseille 5e Arrondissement',
'Marseille 6e Arrondissement',
'Marseille 7e Arrondissement',
'Marseille 8e Arrondissement',
'Marseille 9e Arrondissement',
'Marseille 10e Arrondissement',
'Marseille 11e Arrondissement',
'Marseille 12e Arrondissement',
'Marseille 13e Arrondissement',
'Marseille 14e Arrondissement',
'Marseille 15e Arrondissement',
'Marseille 16e Arrondissement',
];

private const LYON_ARRONDISSEMENTS = [
'Lyon 1er Arrondissement',
'Lyon 2e Arrondissement',
'Lyon 3e Arrondissement',
'Lyon 4e Arrondissement',
'Lyon 5e Arrondissement',
'Lyon 6e Arrondissement',
'Lyon 7e Arrondissement',
'Lyon 8e Arrondissement',
'Lyon 9e Arrondissement',
];

private const PARIS_ARRONDISSEMENTS = [
'Paris 1er Arrondissement',
'Paris 2e Arrondissement',
'Paris 3e Arrondissement',
'Paris 4e Arrondissement',
'Paris 5e Arrondissement',
'Paris 6e Arrondissement',
'Paris 7e Arrondissement',
'Paris 8e Arrondissement',
'Paris 9e Arrondissement',
'Paris 10e Arrondissement',
'Paris 11e Arrondissement',
'Paris 12e Arrondissement',
'Paris 13e Arrondissement',
'Paris 14e Arrondissement',
'Paris 15e Arrondissement',
'Paris 16e Arrondissement',
'Paris 17e Arrondissement',
'Paris 18e Arrondissement',
'Paris 19e Arrondissement',
'Paris 20e Arrondissement',
];

public const COMMUNES_ARRONDISSEMENTS = [
'Marseille' => self::MARSEILLE_ARRONDISSEMENTS,
'Lyon' => self::LYON_ARRONDISSEMENTS,
'Paris' => self::PARIS_ARRONDISSEMENTS,
];
}
Loading