mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Set repositories for EventBundle on the new way + dependent issues
This commit is contained in:
parent
48cd8aaa9f
commit
4028cc8a8b
@ -16,6 +16,7 @@ use Chill\EventBundle\Entity\Status;
|
||||
use Chill\EventBundle\Form\Type\PickRoleType;
|
||||
use Chill\EventBundle\Form\Type\PickStatusType;
|
||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
@ -25,16 +26,10 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
*
|
||||
* If the `event` option is defined, the role will be restricted
|
||||
*/
|
||||
class ParticipationType extends AbstractType
|
||||
final class ParticipationType extends AbstractType
|
||||
{
|
||||
/**
|
||||
* @var TranslatableStringHelper
|
||||
*/
|
||||
protected $translatableStringHelper;
|
||||
|
||||
public function __construct(TranslatableStringHelper $translatableStringHelper)
|
||||
public function __construct(private readonly TranslatableStringHelperInterface $translatableStringHelper)
|
||||
{
|
||||
$this->translatableStringHelper = $translatableStringHelper;
|
||||
}
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
|
@ -14,21 +14,16 @@ namespace Chill\EventBundle\Form;
|
||||
use Chill\EventBundle\Entity\EventType;
|
||||
use Chill\MainBundle\Form\Type\TranslatableStringFormType;
|
||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
|
||||
|
||||
class RoleType extends AbstractType
|
||||
final class RoleType extends AbstractType
|
||||
{
|
||||
/**
|
||||
* @var TranslatableStringHelper
|
||||
*/
|
||||
protected $translatableStringHelper;
|
||||
|
||||
public function __construct(TranslatableStringHelper $translatableStringHelper)
|
||||
public function __construct(private readonly TranslatableStringHelperInterface $translatableStringHelper)
|
||||
{
|
||||
$this->translatableStringHelper = $translatableStringHelper;
|
||||
}
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
|
@ -18,7 +18,7 @@ use Chill\EventBundle\Search\EventSearch;
|
||||
use Chill\MainBundle\Entity\Center;
|
||||
use Chill\MainBundle\Entity\GroupCenter;
|
||||
use Chill\MainBundle\Entity\User;
|
||||
use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
|
||||
use Chill\MainBundle\Security\Authorization\AuthorizationHelperInterface;
|
||||
use RuntimeException;
|
||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||
use Symfony\Component\Finder\Exception\AccessDeniedException;
|
||||
@ -28,6 +28,7 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
||||
use Symfony\Component\Security\Core\Role\Role;
|
||||
use Symfony\Component\Security\Core\Security;
|
||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
|
||||
use function in_array;
|
||||
@ -36,48 +37,18 @@ use function is_array;
|
||||
/**
|
||||
* Class PickEventType.
|
||||
*/
|
||||
class PickEventType extends AbstractType
|
||||
final class PickEventType extends AbstractType
|
||||
{
|
||||
/**
|
||||
* @var AuthorizationHelper
|
||||
*/
|
||||
protected $authorizationHelper;
|
||||
|
||||
/**
|
||||
* @var EventRepository
|
||||
*/
|
||||
protected $eventRepository;
|
||||
|
||||
/**
|
||||
* @var TranslatorInterface
|
||||
*/
|
||||
protected $translator;
|
||||
|
||||
/**
|
||||
* @var UrlGeneratorInterface
|
||||
*/
|
||||
protected $urlGenerator;
|
||||
|
||||
/**
|
||||
* @var User
|
||||
*/
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* PickEventType constructor.
|
||||
*/
|
||||
public function __construct(
|
||||
EventRepository $eventRepository,
|
||||
TokenStorageInterface $tokenStorage,
|
||||
AuthorizationHelper $authorizationHelper,
|
||||
UrlGeneratorInterface $urlGenerator,
|
||||
TranslatorInterface $translator
|
||||
private readonly EventRepository $eventRepository,
|
||||
private readonly AuthorizationHelperInterface $authorizationHelper,
|
||||
private readonly UrlGeneratorInterface $urlGenerator,
|
||||
private readonly TranslatorInterface $translator,
|
||||
private readonly Security $security
|
||||
) {
|
||||
$this->eventRepository = $eventRepository;
|
||||
$this->user = $tokenStorage->getToken()->getUser();
|
||||
$this->authorizationHelper = $authorizationHelper;
|
||||
$this->urlGenerator = $urlGenerator;
|
||||
$this->translator = $translator;
|
||||
}
|
||||
|
||||
public function buildView(\Symfony\Component\Form\FormView $view, \Symfony\Component\Form\FormInterface $form, array $options)
|
||||
@ -133,15 +104,21 @@ class PickEventType extends AbstractType
|
||||
*/
|
||||
protected function filterCenters(Options $options)
|
||||
{
|
||||
$user = $this->security->getUser();
|
||||
|
||||
if (!$user instanceof User) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// option role
|
||||
if (null === $options['role']) {
|
||||
$centers = array_map(
|
||||
static fn (GroupCenter $g) => $g->getCenter(),
|
||||
$this->user->getGroupCenters()->toArray()
|
||||
$user->getGroupCenters()->toArray()
|
||||
);
|
||||
} else {
|
||||
$centers = $this->authorizationHelper->getReachableCenters(
|
||||
$this->user,
|
||||
$user,
|
||||
(string) $options['role']->getRole()
|
||||
);
|
||||
}
|
||||
|
@ -13,7 +13,9 @@ namespace Chill\EventBundle\Form\Type;
|
||||
|
||||
use Chill\EventBundle\Entity\EventType;
|
||||
use Chill\EventBundle\Entity\Role;
|
||||
use Chill\EventBundle\Repository\RoleRepository;
|
||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
@ -26,31 +28,13 @@ use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
/**
|
||||
* Allow to pick a choice amongst different choices.
|
||||
*/
|
||||
class PickRoleType extends AbstractType
|
||||
final class PickRoleType extends AbstractType
|
||||
{
|
||||
/**
|
||||
* @var EntityRepository
|
||||
*/
|
||||
protected $roleRepository;
|
||||
|
||||
/**
|
||||
* @var TranslatableStringHelper
|
||||
*/
|
||||
protected $translatableStringHelper;
|
||||
|
||||
/**
|
||||
* @var TranslatorInterface
|
||||
*/
|
||||
protected $translator;
|
||||
|
||||
public function __construct(
|
||||
TranslatableStringHelper $translatableStringHelper,
|
||||
TranslatorInterface $translator,
|
||||
EntityRepository $roleRepository
|
||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||
private readonly TranslatorInterface $translator,
|
||||
private readonly RoleRepository $roleRepository
|
||||
) {
|
||||
$this->translatableStringHelper = $translatableStringHelper;
|
||||
$this->translator = $translator;
|
||||
$this->roleRepository = $roleRepository;
|
||||
}
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
|
@ -13,7 +13,9 @@ namespace Chill\EventBundle\Form\Type;
|
||||
|
||||
use Chill\EventBundle\Entity\EventType;
|
||||
use Chill\EventBundle\Entity\Status;
|
||||
use Chill\EventBundle\Repository\StatusRepository;
|
||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
@ -31,31 +33,10 @@ use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
* - event_type : restricts to a certain event type. Default null (= all event types)
|
||||
* - active_only: restricts to active type only. Default true
|
||||
*/
|
||||
class PickStatusType extends AbstractType
|
||||
final class PickStatusType extends AbstractType
|
||||
{
|
||||
/**
|
||||
* @var EntityRepository
|
||||
*/
|
||||
protected $statusRepository;
|
||||
|
||||
/**
|
||||
* @var TranslatableStringHelper
|
||||
*/
|
||||
protected $translatableStringHelper;
|
||||
|
||||
/**
|
||||
* @var TranslatorInterface
|
||||
*/
|
||||
protected $translator;
|
||||
|
||||
public function __construct(
|
||||
TranslatableStringHelper $translatableStringHelper,
|
||||
TranslatorInterface $translator,
|
||||
EntityRepository $statusRepository
|
||||
) {
|
||||
$this->translatableStringHelper = $translatableStringHelper;
|
||||
$this->translator = $translator;
|
||||
$this->statusRepository = $statusRepository;
|
||||
public function __construct(protected TranslatableStringHelperInterface $translatableStringHelper, protected TranslatorInterface $translator, protected StatusRepository $statusRepository)
|
||||
{
|
||||
}
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
|
@ -11,11 +11,18 @@ declare(strict_types=1);
|
||||
|
||||
namespace Chill\EventBundle\Repository;
|
||||
|
||||
use Chill\EventBundle\Entity\Event;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* Class EventRepository.
|
||||
*/
|
||||
class EventRepository extends EntityRepository
|
||||
class EventRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, Event::class);
|
||||
}
|
||||
}
|
||||
|
@ -11,23 +11,28 @@ declare(strict_types=1);
|
||||
|
||||
namespace Chill\EventBundle\Repository;
|
||||
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
use Chill\EventBundle\Entity\Participation;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* Class ParticipationRepository.
|
||||
*/
|
||||
class ParticipationRepository extends EntityRepository
|
||||
class ParticipationRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, Participation::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Count number of participations per person.
|
||||
*
|
||||
* @param $person_id
|
||||
*
|
||||
* @throws \Doctrine\ORM\NonUniqueResultException
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function countByPerson($person_id)
|
||||
public function countByPerson($person_id): int
|
||||
{
|
||||
return $this->createQueryBuilder('p')
|
||||
->select('COUNT (p.id)')
|
||||
|
25
src/Bundle/ChillEventBundle/Repository/RoleRepository.php
Normal file
25
src/Bundle/ChillEventBundle/Repository/RoleRepository.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?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\EventBundle\Repository;
|
||||
|
||||
use Chill\EventBundle\Entity\Role;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
class RoleRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, Role::class);
|
||||
}
|
||||
|
||||
}
|
24
src/Bundle/ChillEventBundle/Repository/StatusRepository.php
Normal file
24
src/Bundle/ChillEventBundle/Repository/StatusRepository.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?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\EventBundle\Repository;
|
||||
|
||||
use Chill\EventBundle\Entity\Status;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
class StatusRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, Status::class);
|
||||
}
|
||||
}
|
@ -1,49 +1,33 @@
|
||||
services:
|
||||
_defaults:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
|
||||
chill.event.form.type.pick_event_type:
|
||||
class: Chill\EventBundle\Form\Type\PickEventTypeType
|
||||
arguments:
|
||||
- "@chill.main.helper.translatable_string"
|
||||
tags:
|
||||
- { name: form.type }
|
||||
|
||||
chill.event.form.participation_type:
|
||||
class: Chill\EventBundle\Form\ParticipationType
|
||||
arguments:
|
||||
- "@chill.main.helper.translatable_string"
|
||||
tags:
|
||||
- { name: form.type }
|
||||
|
||||
|
||||
chill.event.form.pick_role_type:
|
||||
class: Chill\EventBundle\Form\Type\PickRoleType
|
||||
arguments:
|
||||
- "@chill.main.helper.translatable_string"
|
||||
- "@translator"
|
||||
- "@chill_event.repository.role"
|
||||
tags:
|
||||
- { name: form.type }
|
||||
|
||||
|
||||
chill.event.form.pick_status_type:
|
||||
class: Chill\EventBundle\Form\Type\PickStatusType
|
||||
arguments:
|
||||
- "@chill.main.helper.translatable_string"
|
||||
- "@translator"
|
||||
- "@chill_event.repository.status"
|
||||
tags:
|
||||
- { name: form.type }
|
||||
|
||||
|
||||
chill.event.form.role_type:
|
||||
class: Chill\EventBundle\Form\RoleType
|
||||
arguments:
|
||||
- "@chill.main.helper.translatable_string"
|
||||
tags:
|
||||
- { name: form.type }
|
||||
|
||||
Chill\EventBundle\Form\Type\PickEventType:
|
||||
arguments:
|
||||
$eventRepository: "@chill_event.repository.event"
|
||||
$tokenStorage: "@security.token_storage"
|
||||
$authorizationHelper: "@chill.main.security.authorization.helper"
|
||||
$urlGenerator: '@Symfony\Component\Routing\Generator\UrlGeneratorInterface'
|
||||
$translator: '@Symfony\Contracts\Translation\TranslatorInterface'
|
||||
tags:
|
||||
- { name: form.type }
|
||||
|
@ -1,25 +1,5 @@
|
||||
services:
|
||||
|
||||
chill_event.repository.event:
|
||||
class: Chill\EventBundle\Repository\EventRepository
|
||||
factory: ['@doctrine.orm.entity_manager', getRepository]
|
||||
arguments:
|
||||
- 'Chill\EventBundle\Entity\Event'
|
||||
|
||||
chill_event.repository.participation:
|
||||
class: Chill\EventBundle\Repository\ParticipationRepository
|
||||
factory: ['@doctrine.orm.entity_manager', getRepository]
|
||||
arguments:
|
||||
- 'Chill\EventBundle\Entity\Participation'
|
||||
|
||||
chill_event.repository.role:
|
||||
class: Doctrine\ORM\EntityRepository
|
||||
factory: ['@doctrine.orm.entity_manager', getRepository]
|
||||
arguments:
|
||||
- 'Chill\EventBundle\Entity\Role'
|
||||
|
||||
chill_event.repository.status:
|
||||
class: Doctrine\ORM\EntityRepository
|
||||
factory: ['@doctrine.orm.entity_manager', getRepository]
|
||||
arguments:
|
||||
- 'Chill\EventBundle\Entity\Status'
|
||||
Chill\EventBundle\Repository\:
|
||||
resource: './../../Repository'
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
|
@ -1,11 +1,7 @@
|
||||
services:
|
||||
Chill\EventBundle\Search\EventSearch:
|
||||
arguments:
|
||||
$security: '@Symfony\Component\Security\Core\Security'
|
||||
$eventRepository: "@chill_event.repository.event"
|
||||
$authorizationHelper: "@chill.main.security.authorization.helper"
|
||||
$templating: "@templating"
|
||||
$paginatorFactory: "@chill_main.paginator_factory"
|
||||
autoconfigure: true
|
||||
autowire: true
|
||||
tags:
|
||||
- { name: chill.search, alias: 'event_regular' }
|
||||
|
||||
|
@ -226,7 +226,7 @@ class User implements UserInterface, \Stringable
|
||||
/**
|
||||
* @return Collection<GroupCenter>
|
||||
*/
|
||||
public function getGroupCenters()
|
||||
public function getGroupCenters(): Collection
|
||||
{
|
||||
return $this->groupCenters;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user