Merge branch '172-missing-exports' into 'master'

Fix some issues with exports

Closes #172

See merge request Chill-Projet/chill-bundles!601
This commit is contained in:
Julien Fastré 2023-10-24 13:47:30 +00:00
commit 461995b56b
9 changed files with 26 additions and 19 deletions

View File

@ -21,9 +21,9 @@ use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
class UserScopeFilter implements FilterInterface
class CreatorScopeFilter implements FilterInterface
{
private const PREFIX = 'acp_act_filter_user_scope'; // creator ? cfr translation
private const PREFIX = 'acp_act_filter_creator_scope';
public function __construct(
private readonly TranslatableStringHelper $translatableStringHelper
@ -39,7 +39,7 @@ class UserScopeFilter implements FilterInterface
$p = self::PREFIX;
$qb
->leftJoin('activity.user', "{$p}_user") // createdBy ? cfr translation
->leftJoin('activity.createdBy', "{$p}_user")
->leftJoin(
UserScopeHistory::class,
"{$p}_history",

View File

@ -23,8 +23,8 @@ use Symfony\Contracts\Translation\TranslatorInterface;
class SentReceivedFilter implements FilterInterface
{
private const CHOICES = [
'is sent' => Activity::SENTRECEIVED_SENT,
'is received' => Activity::SENTRECEIVED_RECEIVED,
'export.filter.activity.by_sent_received.is sent' => Activity::SENTRECEIVED_SENT,
'export.filter.activity.by_sent_received.is received' => Activity::SENTRECEIVED_RECEIVED,
];
private const DEFAULT_CHOICE = Activity::SENTRECEIVED_SENT;
@ -64,6 +64,7 @@ class SentReceivedFilter implements FilterInterface
'multiple' => false,
'expanded' => true,
'empty_data' => self::DEFAULT_CHOICE,
'label' => 'export.filter.activity.by_sent_received.Sent or received',
]);
}

View File

@ -12,7 +12,7 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Tests\Export\Filter;
use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Filter\UserScopeFilter;
use Chill\ActivityBundle\Export\Filter\CreatorScopeFilter;
use Chill\MainBundle\Entity\Scope;
use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Doctrine\ORM\EntityManagerInterface;
@ -22,15 +22,15 @@ use Doctrine\ORM\EntityManagerInterface;
*
* @coversNothing
*/
final class UserScopeFilterTest extends AbstractFilterTest
final class CreatorScopeFilterTest extends AbstractFilterTest
{
private UserScopeFilter $filter;
private CreatorScopeFilter $filter;
protected function setUp(): void
{
self::bootKernel();
$this->filter = self::$container->get(UserScopeFilter::class);
$this->filter = self::$container->get(CreatorScopeFilter::class);
}
public function getFilter()

View File

@ -109,8 +109,10 @@ services:
tags:
- { name: chill.export_filter, alias: 'activity_user_filter' }
Chill\ActivityBundle\Export\Filter\UserScopeFilter:
Chill\ActivityBundle\Export\Filter\CreatorScopeFilter:
tags:
# WARNING: for backward compatibility reason, the alias is named with userscope. Changing this will
# affect all saved exports (unless we write a migration for that)
- { name: chill.export_filter, alias: 'activity_userscope_filter' }
Chill\ActivityBundle\Export\Filter\UsersJobFilter:

View File

@ -275,7 +275,7 @@ Filter activity by linked socialaction: Filtrer les échanges par action liée
'Filtered activity by linked socialaction: only %actions%': "Filtré par action liée: uniquement %actions%"
Filter activity by linked socialissue: Filtrer les échanges par problématique liée
'Filtered activity by linked socialissue: only %issues%': "Filtré par problématique liée: uniquement %issues%"
Filter activity by user: Filtrer les échanges par créateur
Filter activity by user: Filtrer les échanges par utilisateur principal
Filter activity by users: Filtrer les échanges par utilisateur participant
Filter activity by creator: Filtrer les échanges par créateur de l'échange
'Filtered activity by user: only %users%': "Filtré par référent: uniquement %users%"
@ -359,7 +359,7 @@ export:
Filter by users job: Filtrer les échanges par métier d'au moins un utilisateur participant
'Filtered activity by users job: only %jobs%': 'Filtré par métier d''au moins un utilisateur participant: seulement %jobs%'
by_users_scope:
Filter by users scope: Filtrer les échanges par services d'au moins un utilisateur participant
Filter by users scope: Filtrer les échanges par service d'au moins un utilisateur participant
'Filtered activity by users scope: only %scopes%': 'Filtré par service d''au moins un utilisateur participant: seulement %scopes%'
course_having_activity_between_date:
Title: Filtrer les parcours ayant reçu un échange entre deux dates
@ -381,6 +381,10 @@ export:
Filter activity by persons: Filtrer les échanges par usager participant
'Filtered activity by persons: only %persons%': 'Échanges filtrés par usagers participants: seulement %persons%'
persons taking part on the activity: Usagers participants à l'échange
by_sent_received:
Sent or received: Envoyé ou reçu
is sent: envoyé
is received: reçu
aggregator:
acp:

View File

@ -38,7 +38,7 @@ final readonly class DurationAggregator implements AggregatorInterface
match ($data['precision']) {
'day' => $qb->addSelect('(COALESCE(acp.closingDate, :now) - acp.openingDate) AS duration_aggregator'),
'week' => $qb->addSelect('(COALESCE(acp.closingDate, :now) - acp.openingDate) / 7 AS duration_aggregator'),
'month' => $qb->addSelect('(EXTRACT (MONTH FROM AGE(COALESCE(acp.closingDate, :now), acp.openingDate)) * 12 +
'month' => $qb->addSelect('(EXTRACT (YEAR FROM AGE(COALESCE(acp.closingDate, :now), acp.openingDate)) * 12 +
EXTRACT (MONTH FROM AGE(COALESCE(acp.closingDate, :now), acp.openingDate))) AS duration_aggregator'),
default => throw new \LogicException('precision not supported: '.$data['precision']),
};

View File

@ -28,7 +28,7 @@ use Symfony\Component\Form\FormBuilderInterface;
*
* Makes use of AccompanyingPeriodInfo
*/
readonly class UserWorkingOnCourseFilter implements FilterInterface
final readonly class UserWorkingOnCourseFilter implements FilterInterface
{
public function __construct(
private UserRender $userRender,

View File

@ -505,10 +505,10 @@ Accepted origins: Origines
"Filtered by origins: only %origins%": "Filtré par origine du parcours: uniquement %origins%"
Group by origin: Grouper les parcours par origine du parcours
Filter by closing motive: Filtrer les parcours par motif de fermeture
Filter by closing motive: Filtrer les parcours par motif de clôture
Accepted closingmotives: Motifs de clôture
"Filtered by closingmotive: only %closingmotives%": "Filtré par motif de clôture: uniquement %closingmotives%"
Group by closing motive: Grouper les parcours par motif de fermeture
Group by closing motive: Grouper les parcours par motif de clôture
Filter by administrative location: Filtrer les parcours par localisation administrative
Accepted locations: Localisations administratives
@ -516,7 +516,7 @@ Administrative location: Localisation administrative
"Filtered by administratives locations: only %locations%": "Filtré par localisation administrative: uniquement %locations%"
Group by administrative location: Grouper les parcours par localisation administrative
Filter by requestor: Filtrer les parcours selon la présence du demandeur au sein des usagers concernés
Filter by requestor: Filtrer les parcours selon la nature du demandeur
Accepted choices: ''
is person concerned: Le demandeur est un usager concerné
is other person: Le demandeur est un usager, mais n'est pas concerné
@ -1226,7 +1226,7 @@ export:
referrer: Référent
referrerSince: Référent depuis le
locationIsPerson: Parcours localisé auprès d'un usager concerné
locationIsTemp: Parcours avec une localisation temporaire
locationIsTemp: Parcours avec une localisation temporaire ou auprès d'un usager
locationPersonName: Usager auprès duquel le parcours est localisé
locationPersonId: Identifiant de l'usager auprès duquel le parcours est localisé
acpaddress_fieldscountry: Pays de l'adresse

View File

@ -131,5 +131,5 @@ export:
Filtered by person\'s who have a residential address located at a thirdparty of type %thirparty_type%: Uniquement les usagers qui ont une addresse de résidence chez un tiers de catégorie %thirdparty_type%
is thirdparty: Le demandeur est un tiers
Filter by person's who have a residential address located at a thirdparty of type: Filtrer les usagers qui ont une addresse de résidence chez un tiers de catégorie "xxx"
Filter by person's who have a residential address located at a thirdparty of type: Filtrer les usagers qui ont une addresse de résidence chez un tiers
"Filtered by person's who have a residential address located at a thirdparty of type %thirdparty_type% and valid on %date_calc%": "Uniquement les usagers qui ont une addresse de résidence chez un tiers de catégorie %thirdparty_type% et valide sur la date %date_calc%"