PublicEventDataProvider.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace App\DataProvider\Public;
  3. use ApiPlatform\Core\DataProvider\CollectionDataProviderInterface;
  4. use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
  5. use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
  6. use App\ApiResources\Public\FederationStructure;
  7. use App\Entity\Public\PublicEvent;
  8. use App\Repository\Booking\EventRepository;
  9. use App\Repository\Organization\OrganizationRepository;
  10. use Doctrine\Common\Collections\ArrayCollection;
  11. use Symfony\Component\HttpFoundation\RequestStack;
  12. class PublicEventDataProvider implements ItemDataProviderInterface, CollectionDataProviderInterface, RestrictedDataProviderInterface
  13. {
  14. public function __construct(
  15. private EventRepository $eventRepository
  16. ) {}
  17. public function supports(string $resourceClass, string $operationName = null, array $context = []): bool
  18. {
  19. return PublicEvent::class === $resourceClass;
  20. }
  21. public function getItem(string $resourceClass, $id, string $operationName = null, array $context = []): ?FederationStructure
  22. {
  23. return $this->eventRepository->getAllEvents($id)[0];
  24. }
  25. public function getCollection(string $resourceClass, string $operationName = null): ArrayCollection
  26. {
  27. return new ArrayCollection($this->eventRepository->getAllEvents());
  28. }
  29. }