remove "person" filter when a person file is opened

This commit is contained in:
2018-05-07 22:32:59 +02:00
parent b856647b04
commit 650f2c8e18
3 changed files with 41 additions and 24 deletions

View File

@@ -20,11 +20,7 @@ namespace Chill\TaskBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Chill\MainBundle\Entity\Scope;
use Chill\MainBundle\Entity\Center;
use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Form\Type\ScopePickerType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Chill\TaskBundle\Repository\SingleTaskRepository;
use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -35,6 +31,9 @@ use Chill\TaskBundle\Security\Authorization\TaskVoter;
use Symfony\Component\Security\Core\Role\Role;
use Chill\TaskBundle\Entity\SingleTask;
use Chill\PersonBundle\Form\Type\PickPersonType;
use Chill\PersonBundle\Entity\Person;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Chill\PersonBundle\Form\DataTransformer\PersonToIdTransformer;
/**
*
@@ -49,12 +48,6 @@ class SingleTaskListType extends AbstractType
*/
protected $em;
/**
*
* @var SingleTaskRepository
*/
protected $singleTaskRepository;
/**
*
* @var TokenStorageInterface
@@ -85,7 +78,7 @@ class SingleTaskListType extends AbstractType
$builder
->add('user_id', EntityType::class, [
'class' => User::class,
'choices' => $this->getUsersAssigneedToTask(),
'choices' => $this->getUsersAssigneedToTask($options),
'placeholder' => 'Choose a user',
'required' => false
])
@@ -94,15 +87,27 @@ class SingleTaskListType extends AbstractType
'expanded' => true,
'multiple' => true
])
->add('person_id', PickPersonType::class, [
'centers' => $this->authorizationHelper
->getReachableCenters(
$this->tokenStorage->getToken()->getUser(),
new Role(TaskVoter::SHOW)
),
'required' => false
])
;
if ($options['person'] === null) {
$builder
->add('person_id', PickPersonType::class, [
'centers' => $this->authorizationHelper
->getReachableCenters(
$this->tokenStorage->getToken()->getUser(),
new Role(TaskVoter::SHOW)
),
'required' => false
])
;
} else {
// add a hidden field
$builder
->add('person_id', HiddenType::class);
$builder->get('person_id')
->addModelTransformer(new PersonToIdTransformer($this->em))
;
}
}
/**
@@ -110,7 +115,7 @@ class SingleTaskListType extends AbstractType
*
* @return User[]
*/
protected function getUsersAssigneedToTask()
protected function getUsersAssigneedToTask($options)
{
$qb = $this->em->createQueryBuilder();
$user = $this->tokenStorage->getToken()->getUser();
@@ -124,6 +129,13 @@ class SingleTaskListType extends AbstractType
->where("user.enabled = 'TRUE'")
;
if (NULL !== $options['person']) {
$qb
->andWhere($qb->expr()->eq('task.person', ':person'))
->setParameter('person', $options['person'])
;
}
$i = 0;
foreach ($centers as $center) {
$circles = $this->authorizationHelper->getReachableCircles($user, $role, $center);
@@ -147,8 +159,9 @@ class SingleTaskListType extends AbstractType
public function configureOptions(OptionsResolver $resolver)
{
$resolver
// ->setRequired('center')
// ->setAllowedTypes('center', [ Center::class ])
->setDefined('person')
->setDefault('person', null)
->setAllowedTypes('person', [Person::class, 'null'])
;
}
}