remove "person" filter when a person file is opened

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

View File

@ -358,7 +358,7 @@ class SingleTaskController extends Controller
$params['person'] = $person; $params['person'] = $person;
} }
if ($request->query->has('user_id')) { if (!empty($request->query->get('user_id', null))) {
$userId = $request->query->getInt('user_id', null); $userId = $request->query->getInt('user_id', null);
$user = $this->getDoctrine()->getManager() $user = $this->getDoctrine()->getManager()
@ -373,7 +373,7 @@ class SingleTaskController extends Controller
$params['user'] = $user; $params['user'] = $user;
} }
if ($request->query->has('scope_id')) { if (!empty($request->query->get('scope_id'))) {
$scopeId = $request->query->getInt('scope_id', null); $scopeId = $request->query->getInt('scope_id', null);
$scope = $this->getDoctrine()->getManager() $scope = $this->getDoctrine()->getManager()
@ -447,6 +447,7 @@ class SingleTaskController extends Controller
// Form for filtering tasks // Form for filtering tasks
$form = $formFactory->createNamed(null, SingleTaskListType::class, null, [ $form = $formFactory->createNamed(null, SingleTaskListType::class, null, [
'person' => $viewParams['person'],
'method' => Request::METHOD_GET, 'method' => Request::METHOD_GET,
'csrf_protection' => false 'csrf_protection' => false
]); ]);

View File

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

View File

@ -145,7 +145,10 @@
{{ form_start(form) }} {{ form_start(form) }}
{{ form_row(form.user_id) }} {{ form_row(form.user_id) }}
{{ form_row(form.status) }} {{ form_row(form.status) }}
{% if form.person_id is defined %}
{{ form_row(form.person_id) }} {{ form_row(form.person_id) }}
{% endif %}
<button type="submit">{{ 'Filter'|trans }}</button> <button type="submit">{{ 'Filter'|trans }}</button>
{{ form_end(form)}} {{ form_end(form)}}