src/V4/Controller/Task/GetTasksByProspectAction.php line 18

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\V4\Controller\Task;
  4. use ApiPlatform\Core\DataProvider\CollectionDataProviderInterface;
  5. use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
  6. use ApiPlatform\Core\Exception\ResourceClassNotSupportedException;
  7. use App\V4\Controller\AbstractGetSubListAction;
  8. use App\V4\Model\Task\Task;
  9. use App\V4\Model\TaskType\TaskType;
  10. use App\V4\Voters\TaskVoter;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\Serializer\Serializer;
  13. use Symfony\Component\Serializer\SerializerInterface;
  14. class GetTasksByProspectAction extends AbstractGetSubListAction
  15. {
  16.     const ENTITY Task::class;
  17.     protected const ACCESS_UNLESS_GRANTED TaskVoter::TASK_SHOW_LIST;
  18.     /**
  19.      * @param CollectionDataProviderInterface $collectionDataProvider
  20.      * @param Serializer                      $serializer
  21.      * @param ItemDataProviderInterface       $itemDataProvider
  22.      */
  23.     public function __construct(
  24.         CollectionDataProviderInterface $collectionDataProvider,
  25.         SerializerInterface $serializer,
  26.         ItemDataProviderInterface $itemDataProvider
  27.     ) {
  28.         parent::__construct($collectionDataProvider$serializer$itemDataProvider);
  29.     }
  30.     /**
  31.      * @param Request $request
  32.      *
  33.      * @return array
  34.      *
  35.      * @throws ResourceClassNotSupportedException
  36.      */
  37.     protected function getDefaultFilters(Request $request): array
  38.     {
  39.         $taskTypeIds null;
  40.         if ('true' !== $request->get('isMailingTask') && 'true' !== $request->get('isSynchroOutlookTask')) {
  41.             $taskTypes $this->collectionDataProvider
  42.                 ->getCollection(TaskType::class, null, [
  43.                     'filters' => [
  44.                         'isMailing' => '0',
  45.                     ],
  46.                     AbstractGetSubListAction::CONTEXT_IS_SUB_RESOURCE_KEY => true,
  47.                 ])
  48.             ;
  49.             $taskTypeIds = ['empty'];
  50.             foreach ($taskTypes as $taskType) {
  51.                 $taskTypeIds[] = $taskType->getId();
  52.             }
  53.         }
  54.         return [
  55.             self::KEY_PROSPECT => $request->get('id'),
  56.             'isClosed' => $request->get('isClosed'),
  57.             'taskType.isSynchroOutlook' => $request->get('isSynchroOutlookTask') ?? 'false',
  58.             'taskType.isMailing' => $request->get('isMailingTask'),
  59.             'taskType' => $taskTypeIds,
  60.         ];
  61.     }
  62. }