src/Entity/DealerImage.php line 54

  1. <?php
  2. namespace App\Entity;
  3. use ApiPlatform\Doctrine\Orm\Filter\NumericFilter;
  4. use ApiPlatform\Metadata\ApiFilter;
  5. use ApiPlatform\Metadata\ApiResource;
  6. use ApiPlatform\Metadata\Delete;
  7. use ApiPlatform\Metadata\GetCollection;
  8. use ApiPlatform\Metadata\Patch;
  9. use ApiPlatform\Metadata\Post;
  10. use App\Controller\DealerUploadImgController;
  11. use App\Repository\DealerImageRepository;
  12. use App\State\DealerImgProcess;
  13. use Doctrine\ORM\Mapping as ORM;
  14. use Symfony\Component\HttpFoundation\File\UploadedFile;
  15. use Symfony\Component\Serializer\Annotation\Groups;
  16. use Symfony\Component\Validator\Constraints\NotBlank;
  17. #[ApiResource(
  18.     operations: [
  19.         new GetCollection(),
  20.         new Post(
  21.             uriTemplate'/dealer-images/{dealerId}',
  22.             inputFormats: [
  23.                 'multipart' => ['multipart/form-data'],
  24.             ],
  25.             uriVariables: [ 'dealerId' ],
  26.             controllerDealerUploadImgController::class,
  27.             denormalizationContext: [
  28.                 'groups' => ['img:write'],
  29.             ],
  30.             readfalse,
  31.             deserializefalse,
  32.         ),
  33.         new Patch(
  34.             openapiContext: [ 'summary'=> 'Update main value' ],
  35.             denormalizationContext: [
  36.                 'groups' => ['img:update'],
  37.             ],
  38.             processorDealerImgProcess::class
  39.         ),
  40.         new Delete(
  41.             processorDealerImgProcess::class
  42.         )
  43.     ],
  44.     normalizationContext: ['groups' => ['img:read']],
  45.     denormalizationContext: ['groups' => ['img:create''img:update']],
  46.     security"is_granted('ROLE_ADMIN')"
  47. )]
  48. #[ApiFilter(NumericFilter::class, properties: ['dealer.id'  ])]
  49. #[ORM\Entity(repositoryClassDealerImageRepository::class)]
  50. class DealerImage
  51. {
  52.     #[ORM\Id]
  53.     #[ORM\GeneratedValue]
  54.     #[ORM\Column]
  55.     #[Groups(['img:read'])]
  56.     private ?int $id null;
  57.     #[NotBlank]
  58.     #[Groups(['dealer:create''dealer:read''img:read'])]
  59.     #[ORM\Column(length255)]
  60.     private ?string $name null;
  61.     #[Groups(['img:write'])]
  62.     private ?UploadedFile $file null;
  63.     #[NotBlank]
  64.     #[Groups(['dealer:create''dealer:read''img:read''img:write''img:update'])]
  65.     #[ORM\Column(type'boolean'nullabletrue)]
  66.     private ?bool $main null;
  67.     #[NotBlank]
  68.     #[Groups(['img:read'])]
  69.     #[ORM\ManyToOne(inversedBy'dealerImages')]
  70.     private ?Dealer $dealer null;
  71.     public function getId(): ?int
  72.     {
  73.         return $this->id;
  74.     }
  75.     public function getName(): ?string
  76.     {
  77.         return $this->name;
  78.     }
  79.     public function setName(string $name): self
  80.     {
  81.         $this->name $name;
  82.         return $this;
  83.     }
  84.     public function isMain(): ?bool
  85.     {
  86.         return $this->main;
  87.     }
  88.     public function setMain(?bool $main): self
  89.     {
  90.         $this->main $main;
  91.         return $this;
  92.     }
  93.     /**
  94.      * @return UploadedFile|null
  95.      */
  96.     public function getFile(): ?UploadedFile
  97.     {
  98.         return $this->file;
  99.     }
  100.     /**
  101.      * @param UploadedFile|null $file
  102.      */
  103.     public function setFile(?UploadedFile $file): void
  104.     {
  105.         $this->file $file;
  106.     }
  107.     public function getDealer(): ?Dealer
  108.     {
  109.         return $this->dealer;
  110.     }
  111.     public function setDealer(?Dealer $dealer): self
  112.     {
  113.         $this->dealer $dealer;
  114.         return $this;
  115.     }
  116. }