mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-09-24 23:55:02 +00:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
702a5a27d2 | |||
|
41dd4d89f7 | ||
|
3a7ed7ef8f | ||
18df08e8c3 | |||
db3961275b
|
|||
cd488d7576 | |||
436661d952 | |||
c3b8d42047 | |||
|
9c28df25a1 | ||
|
c5a24e8ac5 | ||
|
d9c50cffb7 | ||
|
25ccb16308 | ||
|
ba25c181f5 |
5
.changes/v2.22.1.md
Normal file
5
.changes/v2.22.1.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
## v2.22.1 - 2024-07-01
|
||||||
|
### Fixed
|
||||||
|
* Remove debug word
|
||||||
|
### DX
|
||||||
|
* Add a command for reading official address DB from Luxembourg and update chill addresses
|
3
.changes/v2.22.2.md
Normal file
3
.changes/v2.22.2.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
## v2.22.2 - 2024-07-03
|
||||||
|
### Fixed
|
||||||
|
* Remove scope required for event participation stats
|
10
CHANGELOG.md
10
CHANGELOG.md
@@ -6,6 +6,16 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
|||||||
and is generated by [Changie](https://github.com/miniscruff/changie).
|
and is generated by [Changie](https://github.com/miniscruff/changie).
|
||||||
|
|
||||||
|
|
||||||
|
## v2.22.2 - 2024-07-03
|
||||||
|
### Fixed
|
||||||
|
* Remove scope required for event participation stats
|
||||||
|
|
||||||
|
## v2.22.1 - 2024-07-01
|
||||||
|
### Fixed
|
||||||
|
* Remove debug word
|
||||||
|
### DX
|
||||||
|
* Add a command for reading official address DB from Luxembourg and update chill addresses
|
||||||
|
|
||||||
## v2.22.0 - 2024-06-25
|
## v2.22.0 - 2024-06-25
|
||||||
### Feature
|
### Feature
|
||||||
* ([#216](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/216)) [event bundle] exports added for the event module
|
* ([#216](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/216)) [event bundle] exports added for the event module
|
||||||
|
@@ -87,7 +87,6 @@
|
|||||||
<li>
|
<li>
|
||||||
{% if bloc.type == 'user' %}
|
{% if bloc.type == 'user' %}
|
||||||
<span class="badge-user">
|
<span class="badge-user">
|
||||||
hello
|
|
||||||
{{ item|chill_entity_render_box({'render': 'raw', 'addAltNames': false, 'at_date': entity.date }) }}
|
{{ item|chill_entity_render_box({'render': 'raw', 'addAltNames': false, 'at_date': entity.date }) }}
|
||||||
</span>
|
</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@@ -72,7 +72,7 @@ class ParticipationVoter extends AbstractChillVoter implements ProvideRoleHierar
|
|||||||
|
|
||||||
public function getRolesWithoutScope(): array
|
public function getRolesWithoutScope(): array
|
||||||
{
|
{
|
||||||
return [];
|
return [self::ROLES, self::STATS];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function supports($attribute, $subject)
|
public function supports($attribute, $subject)
|
||||||
|
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Chill is a software for social workers
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Chill\MainBundle\Command;
|
||||||
|
|
||||||
|
use Chill\MainBundle\Service\Import\AddressReferenceLU;
|
||||||
|
use Symfony\Component\Console\Command\Command;
|
||||||
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
|
||||||
|
class LoadAddressesLUFromBDAddressCommand extends Command
|
||||||
|
{
|
||||||
|
protected static $defaultDescription = 'Import LUX addresses from BD addresses (see https://data.public.lu/fr/datasets/adresses-georeferencees-bd-adresses/)';
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
private readonly AddressReferenceLU $addressImporter,
|
||||||
|
) {
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function configure()
|
||||||
|
{
|
||||||
|
$this->setName('chill:main:address-ref-lux');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||||
|
{
|
||||||
|
$this->addressImporter->import();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,97 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Chill is a software for social workers
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Chill\MainBundle\Service\Import;
|
||||||
|
|
||||||
|
use League\Csv\Reader;
|
||||||
|
use League\Csv\Statement;
|
||||||
|
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||||
|
|
||||||
|
class AddressReferenceLU
|
||||||
|
{
|
||||||
|
private const RELEASE = 'https://data.public.lu/fr/datasets/r/5cadc5b8-6a7d-4283-87bc-f9e58dd771f7';
|
||||||
|
|
||||||
|
public function __construct(private readonly HttpClientInterface $client, private readonly AddressReferenceBaseImporter $addressBaseImporter, private readonly PostalCodeBaseImporter $postalCodeBaseImporter, private readonly AddressToReferenceMatcher $addressToReferenceMatcher)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function import(): void
|
||||||
|
{
|
||||||
|
$downloadUrl = self::RELEASE;
|
||||||
|
|
||||||
|
$response = $this->client->request('GET', $downloadUrl);
|
||||||
|
|
||||||
|
if (200 !== $response->getStatusCode()) {
|
||||||
|
throw new \Exception('Could not download CSV: '.$response->getStatusCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
$file = tmpfile();
|
||||||
|
|
||||||
|
foreach ($this->client->stream($response) as $chunk) {
|
||||||
|
fwrite($file, $chunk->getContent());
|
||||||
|
}
|
||||||
|
|
||||||
|
fseek($file, 0);
|
||||||
|
|
||||||
|
$csv = Reader::createFromStream($file);
|
||||||
|
$csv->setDelimiter(';');
|
||||||
|
$csv->setHeaderOffset(0);
|
||||||
|
|
||||||
|
$this->process_postal_code($csv);
|
||||||
|
|
||||||
|
$this->process_address($csv);
|
||||||
|
|
||||||
|
$this->addressToReferenceMatcher->checkAddressesMatchingReferences();
|
||||||
|
|
||||||
|
fclose($file);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function process_address(Reader $csv): void
|
||||||
|
{
|
||||||
|
$stmt = Statement::create()->process($csv);
|
||||||
|
foreach ($stmt as $record) {
|
||||||
|
$this->addressBaseImporter->importAddress(
|
||||||
|
$record['id_geoportail'],
|
||||||
|
$record['code_postal'],
|
||||||
|
$record['code_postal'],
|
||||||
|
$record['rue'],
|
||||||
|
$record['numero'],
|
||||||
|
'bd-addresses.lux',
|
||||||
|
(float) $record['lat_wgs84'],
|
||||||
|
(float) $record['lon_wgs84'],
|
||||||
|
4326
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->addressBaseImporter->finalize();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function process_postal_code(Reader $csv): void
|
||||||
|
{
|
||||||
|
$stmt = Statement::create()->process($csv);
|
||||||
|
$arr_postal_codes = [];
|
||||||
|
foreach ($stmt as $record) {
|
||||||
|
if (false === \array_key_exists($record['code_postal'], $arr_postal_codes)) {
|
||||||
|
$this->postalCodeBaseImporter->importCode(
|
||||||
|
'LU',
|
||||||
|
trim((string) $record['localite']),
|
||||||
|
trim((string) $record['code_postal']),
|
||||||
|
trim((string) $record['code_postal']),
|
||||||
|
'bd-addresses.lux',
|
||||||
|
(float) $record['lat_wgs84'],
|
||||||
|
(float) $record['lon_wgs84'],
|
||||||
|
4326
|
||||||
|
);
|
||||||
|
$arr_postal_codes[$record['code_postal']] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -59,6 +59,12 @@ services:
|
|||||||
tags:
|
tags:
|
||||||
- { name: console.command }
|
- { name: console.command }
|
||||||
|
|
||||||
|
Chill\MainBundle\Command\LoadAddressesLUFromBDAddressCommand:
|
||||||
|
autoconfigure: true
|
||||||
|
autowire: true
|
||||||
|
tags:
|
||||||
|
- { name: console.command }
|
||||||
|
|
||||||
Chill\MainBundle\Command\ExecuteCronJobCommand:
|
Chill\MainBundle\Command\ExecuteCronJobCommand:
|
||||||
autoconfigure: true
|
autoconfigure: true
|
||||||
autowire: true
|
autowire: true
|
||||||
|
Reference in New Issue
Block a user