diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityDuration.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityDuration.php index 327dc9e30..1ae5d1830 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityDuration.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityDuration.php @@ -2,17 +2,30 @@ namespace Chill\ActivityBundle\Export\Export\LinkedToACP; +use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter; use Chill\MainBundle\Export\ExportInterface; +use Chill\MainBundle\Export\FormatterInterface; use Chill\MainBundle\Export\GroupedExportInterface; use Closure; +use Doctrine\ORM\EntityManagerInterface; +use Doctrine\ORM\EntityRepository; +use Doctrine\ORM\Query; use Doctrine\ORM\QueryBuilder; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Security\Core\Role\Role; class AvgActivityDuration implements ExportInterface, GroupedExportInterface { + protected EntityRepository $repository; + + public function __construct( + EntityManagerInterface $em + ) { + $this->repository = $em->getRepository(Activity::class); + } + public function buildForm(FormBuilderInterface $builder) { // TODO: Implement buildForm() method. @@ -35,7 +48,11 @@ class AvgActivityDuration implements ExportInterface, GroupedExportInterface public function getLabels($key, array $values, $data) { - // TODO: Implement getLabels() method. + if ('export_avg_activity_duration' !== $key) { + throw new LogicException("the key {$key} is not used by this export"); + } + + return static fn ($value) => '_header' === $value ? 'Average activities linked to an accompanying period duration' : $value; } public function getQueryKeys($data): array @@ -55,7 +72,13 @@ class AvgActivityDuration implements ExportInterface, GroupedExportInterface public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) { - // TODO: Implement initiateQuery() method. + $qb = $this->repository->createQueryBuilder('activity') + ->join('activity.accompanyingPeriod', 'acp') + ; + + $qb->select('AVG(activity.durationTime) as export_avg_activity_duration'); + + return $qb; } public function requiredRole(): Role diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityVisitDuration.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityVisitDuration.php index 96c7941e9..b03378b16 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityVisitDuration.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityVisitDuration.php @@ -2,17 +2,30 @@ namespace Chill\ActivityBundle\Export\Export\LinkedToACP; +use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter; use Chill\MainBundle\Export\ExportInterface; +use Chill\MainBundle\Export\FormatterInterface; use Chill\MainBundle\Export\GroupedExportInterface; use Closure; +use Doctrine\ORM\EntityManagerInterface; +use Doctrine\ORM\EntityRepository; +use Doctrine\ORM\Query; use Doctrine\ORM\QueryBuilder; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Security\Core\Role\Role; class AvgActivityVisitDuration implements ExportInterface, GroupedExportInterface { + protected EntityRepository $repository; + + public function __construct( + EntityManagerInterface $em + ) { + $this->repository = $em->getRepository(Activity::class); + } + public function buildForm(FormBuilderInterface $builder) { // TODO: Implement buildForm() method. @@ -35,7 +48,11 @@ class AvgActivityVisitDuration implements ExportInterface, GroupedExportInterfac public function getLabels($key, array $values, $data) { - // TODO: Implement getLabels() method. + if ('export_avg_activity_visit_duration' !== $key) { + throw new LogicException("the key {$key} is not used by this export"); + } + + return static fn ($value) => '_header' === $value ? 'Average activities linked to an accompanying period visit duration' : $value; } public function getQueryKeys($data): array @@ -55,7 +72,13 @@ class AvgActivityVisitDuration implements ExportInterface, GroupedExportInterfac public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) { - // TODO: Implement initiateQuery() method. + $qb = $this->repository->createQueryBuilder('activity') + ->join('activity.accompanyingPeriod', 'acp') + ; + + $qb->select('AVG(activity.travelTime) as export_avg_activity_visit_duration'); + + return $qb; } public function requiredRole(): Role diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityDuration.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityDuration.php index 40f8977a3..3ab192702 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityDuration.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityDuration.php @@ -2,17 +2,30 @@ namespace Chill\ActivityBundle\Export\Export\LinkedToACP; +use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter; use Chill\MainBundle\Export\ExportInterface; +use Chill\MainBundle\Export\FormatterInterface; use Chill\MainBundle\Export\GroupedExportInterface; use Closure; +use Doctrine\ORM\EntityManagerInterface; +use Doctrine\ORM\EntityRepository; +use Doctrine\ORM\Query; use Doctrine\ORM\QueryBuilder; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Security\Core\Role\Role; class SumActivityDuration implements ExportInterface, GroupedExportInterface { + protected EntityRepository $repository; + + public function __construct( + EntityManagerInterface $em + ) { + $this->repository = $em->getRepository(Activity::class); + } + public function buildForm(FormBuilderInterface $builder) { // TODO: Implement buildForm() method. @@ -35,7 +48,11 @@ class SumActivityDuration implements ExportInterface, GroupedExportInterface public function getLabels($key, array $values, $data) { - // TODO: Implement getLabels() method. + if ('export_sum_activity_duration' !== $key) { + throw new LogicException("the key {$key} is not used by this export"); + } + + return static fn ($value) => '_header' === $value ? 'Sum activities linked to an accompanying period duration' : $value; } public function getQueryKeys($data): array @@ -55,7 +72,13 @@ class SumActivityDuration implements ExportInterface, GroupedExportInterface public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) { - // TODO: Implement initiateQuery() method. + $qb = $this->repository->createQueryBuilder('activity') + ->join('activity.accompanyingPeriod', 'acp') + ; + + $qb->select('SUM(activity.durationTime) as export_sum_activity_duration'); + + return $qb; } public function requiredRole(): Role diff --git a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityVisitDuration.php b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityVisitDuration.php index 1bbc83a86..452fc4de7 100644 --- a/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityVisitDuration.php +++ b/src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityVisitDuration.php @@ -2,17 +2,30 @@ namespace Chill\ActivityBundle\Export\Export\LinkedToACP; +use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter; use Chill\MainBundle\Export\ExportInterface; +use Chill\MainBundle\Export\FormatterInterface; use Chill\MainBundle\Export\GroupedExportInterface; use Closure; +use Doctrine\ORM\EntityManagerInterface; +use Doctrine\ORM\EntityRepository; +use Doctrine\ORM\Query; use Doctrine\ORM\QueryBuilder; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Security\Core\Role\Role; class SumActivityVisitDuration implements ExportInterface, GroupedExportInterface { + protected EntityRepository $repository; + + public function __construct( + EntityManagerInterface $em + ) { + $this->repository = $em->getRepository(Activity::class); + } + public function buildForm(FormBuilderInterface $builder) { // TODO: Implement buildForm() method. @@ -35,7 +48,11 @@ class SumActivityVisitDuration implements ExportInterface, GroupedExportInterfac public function getLabels($key, array $values, $data) { - // TODO: Implement getLabels() method. + if ('export_sum_activity_visit_duration' !== $key) { + throw new LogicException("the key {$key} is not used by this export"); + } + + return static fn ($value) => '_header' === $value ? 'Sum activities linked to an accompanying period visit duration' : $value; } public function getQueryKeys($data): array @@ -55,7 +72,13 @@ class SumActivityVisitDuration implements ExportInterface, GroupedExportInterfac public function initiateQuery(array $requiredModifiers, array $acl, array $data = []) { - // TODO: Implement initiateQuery() method. + $qb = $this->repository->createQueryBuilder('activity') + ->join('activity.accompanyingPeriod', 'acp') + ; + + $qb->select('SUM(activity.travelTime) as export_sum_activity_visit_duration'); + + return $qb; } public function requiredRole(): Role diff --git a/src/Bundle/ChillActivityBundle/translations/messages.fr.yml b/src/Bundle/ChillActivityBundle/translations/messages.fr.yml index 7eacba1ce..1d7d61592 100644 --- a/src/Bundle/ChillActivityBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillActivityBundle/translations/messages.fr.yml @@ -218,13 +218,21 @@ Exports of activities linked to an accompanying period: Exports des activités l Number of activities linked to an accompanying period: Nombre d'activités liées à un parcours Count activities linked to an accompanying period: Nombre d'activités Count activities linked to an accompanying period by various parameters.: Compte le nombre d'activités enregistrées et liées à un parcours en fonction de différents paramètres. + Sum activity linked to an accompanying period duration: Somme de la durée des activités +Sum activities linked to an accompanying period duration: Somme de la durée des activités liées à un parcours Sum activities linked to an accompanying period duration by various parameters.: Additionne la durée des activités en fonction de différents paramètres. + Sum activity linked to an accompanying period visit duration: Somme de la durée de déplacement des activités +Sum activities linked to an accompanying period visit duration: Somme de la durée de déplacement des activités liées à un parcours Sum activities linked to an accompanying period visit duration by various parameters.: Additionne la durée de déplacement des activités en fonction de différents paramètres. + Average activity linked to an accompanying period duration: Moyenne de la durée des activités +Average activities linked to an accompanying period duration: Moyenne de la durée des activités liées à un parcours Average activities linked to an accompanying period duration by various parameters.: Moyenne de la durée des activités en fonction de différents paramètres. + Average activity linked to an accompanying period visit duration: Moyenne de la durée de déplacement des activités +Average activities linked to an accompanying period visit duration: Moyenne de la durée de déplacement des activités liées à un parcours Average activities linked to an accompanying period visit duration by various parameters.: Moyenne de la durée de déplacement des activités en fonction de différents paramètres. #filters