src/Controller/ReverseSync/Proxy/Opportunity/CompanyOpportunitiesAction.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller\ReverseSync\Proxy\Opportunity;
  3. use App\Controller\ActionRequiresCrmEnabledInterface;
  4. use App\Entity\Channel\Channel;
  5. use App\Entity\Channel\Company;
  6. use App\Entity\Crm\Opportunity\Opportunity;
  7. use App\Enum\Serialization\OpportunitySerializationGroups;
  8. use App\Repository\Crm\Opportunity\OpportunityRepository;
  9. use Doctrine\ORM\QueryBuilder;
  10. use Drosalys\Bundle\ApiBundle\Filter\Attributes\Filterable;
  11. use Drosalys\Bundle\ApiBundle\Pagination\Attributes\Paginable;
  12. use Drosalys\Bundle\ApiBundle\Routing\Attributes\Get;
  13. use Drosalys\Bundle\ApiBundle\Serializer\Attributes\Serializable;
  14. use Nellapp\Bundle\SDKBundle\DataSync\Form\Filter\CollectionFilter;
  15. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  16. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  17. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  18. class CompanyOpportunitiesAction extends AbstractController implements ActionRequiresCrmEnabledInterface
  19. {
  20.     public function __construct(
  21.         private OpportunityRepository $opportunityRepository,
  22.     ) {}
  23.     #[Get('/proxy/channels/{channelId}/company/{companyId}/opportunities'name'proxy_channel_company_opportunities')]
  24.     #[ParamConverter('channel'options: ['id' => 'channelId'])]
  25.     #[ParamConverter('company'options: ['id' => 'companyId'])]
  26.     #[Serializable(groups: [OpportunitySerializationGroups::API_COLLECTION])]
  27.     #[Paginable(Opportunity::class, limit50maxLimit50)]
  28.     #[Filterable(CollectionFilter::class)]
  29.     #[IsGranted('ROLE_USER')]
  30.     public function __invoke(Channel $channelCompany $company): QueryBuilder
  31.     {
  32.         return $this->opportunityRepository->queryByChannelAndCompany($channel$companyarchivedfalse);
  33.     }
  34. }