src/Controller/Action/SiteTreeAction.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Action;
  3. use App\Entity\Customer;
  4. use App\Repository\CustomerRepository;
  5. use App\Repository\SiteRepository;
  6. use App\Traits\TreeBuilderTrait;
  7. use Doctrine\Common\Collections\ArrayCollection;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpKernel\Attribute\AsController;
  11. use Symfony\Component\Security\Core\Security;
  12. #[AsController]
  13. class SiteTreeAction extends AbstractController
  14. {
  15.     use TreeBuilderTrait;
  16.     public function __construct(private Security $security, private SiteRepository $siteRepository, private CustomerRepository $customerRepository)
  17.     {
  18.     }
  19.     public function __invoke(Request $request): array
  20.     {
  21.         $customerFilter $request->get('customer'null);
  22.         $user $this->getUser();
  23.         if ($user->isMasterAdmin()) {
  24.             // Master admin: return all or filtered
  25.             if (!empty($customerFilter)) {
  26.                 return $this->customerRepository->getTree([$customerFilter], $user);
  27.             }
  28.             return $this->customerRepository->getTree(null$user);
  29.         }
  30.         $customerAssociated $user->getCustomerAssociated() ?? [];
  31.         if (empty($customerAssociated)) {
  32.             return [];
  33.         }
  34.         if (!empty($customerFilter)) {
  35.             // Check if requested customer is in associated list
  36.             if (!in_array($customerFilter$customerAssociated)) {
  37.                 return [];
  38.             }
  39.             return $this->customerRepository->getTree([$customerFilter], $user);
  40.         }
  41.         return $this->customerRepository->getTree($customerAssociated$user);
  42.     }
  43. }