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

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'])
;
}
}

View File

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