Skip to content
Snippets Groups Projects
Select Git revision
  • 2afbddafea71031b20415766e09550083b33f95b
  • main default protected
  • v0.2.0
  • v0.1.4
  • v0.1.3
  • v0.1.2
  • v0.1.1
  • v0.1.0
8 results

CourseTrait.php

Blame
  • CourseItemDataProvider.php 1.13 KiB
    <?php
    
    declare(strict_types=1);
    
    namespace Dbp\Relay\CourseBundle\DataProvider;
    
    use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
    use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
    use Dbp\Relay\CourseBundle\API\CourseProviderInterface;
    use Dbp\Relay\CourseBundle\Entity\Course;
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    
    final class CourseItemDataProvider extends AbstractController implements ItemDataProviderInterface, RestrictedDataProviderInterface
    {
        private $api;
    
        public function __construct(CourseProviderInterface $api)
        {
            $this->api = $api;
        }
    
        public function supports(string $resourceClass, string $operationName = null, array $context = []): bool
        {
            return Course::class === $resourceClass;
        }
    
        public function getItem(string $resourceClass, $id, string $operationName = null, array $context = []): ?Course
        {
            $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
    
            $filters = $context['filters'] ?? [];
            $options = ['lang' => $filters['lang'] ?? 'de'];
    
            return $this->api->getCourseById($id, $options);
        }
    }