mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Feature: [export][activity] Add filter on localisation for activities
This commit is contained in:
parent
40924d9d39
commit
cc62c9cc4a
@ -0,0 +1,74 @@
|
|||||||
|
<?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\ActivityBundle\Export\Filter\ACPFilters;
|
||||||
|
|
||||||
|
use Chill\ActivityBundle\Export\Declarations;
|
||||||
|
use Chill\MainBundle\Export\FilterInterface;
|
||||||
|
use Chill\MainBundle\Form\Type\PickUserLocationType;
|
||||||
|
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||||
|
use Doctrine\ORM\QueryBuilder;
|
||||||
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
|
||||||
|
class LocationFilter implements FilterInterface
|
||||||
|
{
|
||||||
|
private TranslatableStringHelper $translatableStringHelper;
|
||||||
|
|
||||||
|
public function __construct(TranslatableStringHelper $translatableStringHelper)
|
||||||
|
{
|
||||||
|
$this->translatableStringHelper = $translatableStringHelper;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addRole(): ?string
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function alterQuery(QueryBuilder $qb, $data)
|
||||||
|
{
|
||||||
|
$qb->andWhere(
|
||||||
|
$qb->expr()->in('activity.location', ':location')
|
||||||
|
);
|
||||||
|
|
||||||
|
$qb->setParameter('location', $data['accepted_location']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyOn(): string
|
||||||
|
{
|
||||||
|
return Declarations::ACTIVITY_ACP;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buildForm(FormBuilderInterface $builder)
|
||||||
|
{
|
||||||
|
$builder->add('accepted_location', PickUserLocationType::class, [
|
||||||
|
'multiple' => true,
|
||||||
|
'label' => 'pick location'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function describeAction($data, $format = 'string'): array
|
||||||
|
{
|
||||||
|
$locations = [];
|
||||||
|
|
||||||
|
foreach ($data['accepted_location'] as $location) {
|
||||||
|
$locations[] = $location->getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ['Filtered activity by location: only %locations%', [
|
||||||
|
'%locations%' => implode(', ', $locations),
|
||||||
|
]];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Filter activity by location';
|
||||||
|
}
|
||||||
|
}
|
@ -79,6 +79,11 @@ services:
|
|||||||
tags:
|
tags:
|
||||||
- { name: chill.export_filter, alias: 'accompanyingcourse_activitytype_filter' }
|
- { name: chill.export_filter, alias: 'accompanyingcourse_activitytype_filter' }
|
||||||
|
|
||||||
|
chill.activity.export.location_filter:
|
||||||
|
class: Chill\ActivityBundle\Export\Filter\ACPFilters\LocationFilter
|
||||||
|
tags:
|
||||||
|
- { name: chill.export_filter, alias: 'activity_location_filter' }
|
||||||
|
|
||||||
chill.activity.export.locationtype_filter:
|
chill.activity.export.locationtype_filter:
|
||||||
class: Chill\ActivityBundle\Export\Filter\ACPFilters\LocationTypeFilter
|
class: Chill\ActivityBundle\Export\Filter\ACPFilters\LocationTypeFilter
|
||||||
tags:
|
tags:
|
||||||
|
@ -252,6 +252,8 @@ Activity reasons for those activities: Sujets de ces activités
|
|||||||
|
|
||||||
Filter by activity type: Filtrer les activités par type
|
Filter by activity type: Filtrer les activités par type
|
||||||
|
|
||||||
|
Filter activity by location: Filtrer les activités par localisation
|
||||||
|
'Filtered activity by location: only %locations%': "Filtré par localisation: uniquement %locations%"
|
||||||
Filter activity by locationtype: Filtrer les activités par type de localisation
|
Filter activity by locationtype: Filtrer les activités par type de localisation
|
||||||
'Filtered activity by locationtype: only %types%': "Filtré par type de localisation: uniquement %types%"
|
'Filtered activity by locationtype: only %types%': "Filtré par type de localisation: uniquement %types%"
|
||||||
Accepted locationtype: Types de localisation
|
Accepted locationtype: Types de localisation
|
||||||
|
@ -229,6 +229,7 @@ Create a new circle: Créer un nouveau cercle
|
|||||||
|
|
||||||
#admin section for location
|
#admin section for location
|
||||||
Location: Localisation
|
Location: Localisation
|
||||||
|
pick location: Localisation
|
||||||
Location type list: Liste des types de localisation
|
Location type list: Liste des types de localisation
|
||||||
Create a new location type: Créer un nouveau type de localisation
|
Create a new location type: Créer un nouveau type de localisation
|
||||||
Available for users: Disponible aux utilisateurs
|
Available for users: Disponible aux utilisateurs
|
||||||
|
@ -72,6 +72,7 @@ class HasTemporaryLocationFilter implements FilterInterface
|
|||||||
{
|
{
|
||||||
$builder
|
$builder
|
||||||
->add('having_temporarily', ChoiceType::class, [
|
->add('having_temporarily', ChoiceType::class, [
|
||||||
|
'label' => 'export.filter.course.having_temporarily.label',
|
||||||
'choices' => [
|
'choices' => [
|
||||||
'export.filter.course.having_temporarily.Having a temporarily location' => true,
|
'export.filter.course.having_temporarily.Having a temporarily location' => true,
|
||||||
'export.filter.course.having_temporarily.Having a person\'s location' => false,
|
'export.filter.course.having_temporarily.Having a person\'s location' => false,
|
||||||
|
@ -1068,6 +1068,7 @@ export:
|
|||||||
by_referrer:
|
by_referrer:
|
||||||
Computation date for referrer: Date à laquelle le référent était actif
|
Computation date for referrer: Date à laquelle le référent était actif
|
||||||
having_temporarily:
|
having_temporarily:
|
||||||
|
label: Qualité de la localisation
|
||||||
Having a temporarily location: Ayant une localisation temporaire
|
Having a temporarily location: Ayant une localisation temporaire
|
||||||
Having a person's location: Ayant une localisation auprès d'un usager
|
Having a person's location: Ayant une localisation auprès d'un usager
|
||||||
Calculation date: Date de la localisation
|
Calculation date: Date de la localisation
|
||||||
|
Loading…
x
Reference in New Issue
Block a user