| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- <?php
- declare(strict_types=1);
- namespace App\ApiResources\Search;
- use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
- use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
- use ApiPlatform\Metadata\ApiFilter;
- use ApiPlatform\Metadata\ApiProperty;
- use ApiPlatform\Metadata\ApiResource;
- use ApiPlatform\Metadata\Get;
- use ApiPlatform\Metadata\GetCollection;
- use App\ApiResources\ApiResourcesInterface;
- use App\Entity\Organization\Organization;
- use App\Entity\Place\Place;
- use App\Filter\ApiPlatform\Utils\InFilter;
- use App\State\Provider\Search\PlaceSearchItemProvider;
- use Symfony\Component\ObjectMapper\Attribute\Map;
- /**
- * Classe resource pour les recherches de lieux.
- */
- #[ApiResource(
- operations: [
- new Get(
- uriTemplate: '/search/places/{id}',
- security: 'object.organization == user.getOrganization()'
- ),
- new GetCollection(
- uriTemplate: '/search/places'
- ),
- ],
- provider: PlaceSearchItemProvider::class,
- )]
- #[ApiFilter(filterClass: SearchFilter::class, properties: ['name' => 'ipartial'])]
- #[ApiFilter(filterClass: OrderFilter::class, properties: ['name' => 'ASC'])]
- #[ApiFilter(filterClass: InFilter::class, properties: ['id'])]
- #[Map(source: Place::class)]
- class PlaceSearchItem implements ApiResourcesInterface
- {
- #[ApiProperty(identifier: true)]
- public ?int $id = null;
- public string $name;
- public Organization $organization;
- }
|