src/Entity/Affectation.php line 81

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
  4. use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
  5. use ApiPlatform\Metadata\ApiFilter;
  6. use ApiPlatform\Metadata\ApiResource;
  7. use ApiPlatform\Metadata\Delete;
  8. use ApiPlatform\Metadata\Get;
  9. use ApiPlatform\Metadata\GetCollection;
  10. use ApiPlatform\Metadata\Post;
  11. use ApiPlatform\Metadata\Put;
  12. use App\Controller\Action\AffectationController;
  13. use App\Controller\Action\AffectationListController;
  14. use App\Controller\Action\DesaffectDocumentsSiteAction;
  15. use App\Filter\AffectationOrderFilter;
  16. use App\Traits\AutoTimestampTrait;
  17. use Doctrine\DBAL\Types\Types;
  18. use Doctrine\ORM\Mapping as ORM;
  19. use Symfony\Component\Serializer\Annotation\Groups;
  20. #[ORM\Table(name'affectation')]
  21. #[ORM\Index(name'document_id'columns: ['document_id'])]
  22. #[ORM\Index(name'site_id'columns: ['site_id'])]
  23. #[ORM\Entity]
  24. #[ApiResource(
  25.     normalizationContext: ['skip_null_values'=> false'groups' => [ 'affectation.get''document.get']],
  26.     denormalizationContext: ['skip_null_values'=> false,'groups' => ['document.write']],
  27.     paginationEnabledfalse,
  28.     cacheHeaders: [
  29.         'public' => true,
  30.         'max_age' => 60,
  31.     ],
  32.     operations: [
  33.         new GetCollection(),
  34.         new GetCollection(
  35.             name'_api_/affectations_list',
  36.             uriTemplate'/affectations_list',
  37.             controllerAffectationListController::class,
  38.             writefalse,
  39.             readfalse
  40.         ),
  41.         new Post(
  42.             name'_api_/affecations/documents_report',
  43.             uriTemplate'/affectations/documents_report',
  44.             controllerAffectationController::class,
  45.             writefalse,
  46.             readfalse
  47.         ),
  48.         new Post(
  49.             security'user.isMasterAdmin()',
  50.         ),
  51.         new Post(
  52.             name'_api_/desaffecation_documents/site',
  53.             uriTemplate'/desaffecation_documents/site',
  54.             controllerDesaffectDocumentsSiteAction::class,
  55.             writefalse,
  56.             readfalse
  57.         ),
  58.         new Get(),
  59.         new Put(
  60.             security'user.isMasterAdmin()',
  61.         ),
  62.         new Delete(
  63.             security'user.isMasterAdmin()',
  64.         ),
  65.     ]
  66. )]
  67. #[ApiFilter(
  68.     SearchFilter::class, properties: [
  69.         'document' => 'exact',
  70.         'site' => 'exact',
  71.         'isApplicable' => 'exact',
  72.     ]
  73. )]
  74. #[ApiFilter(AffectationOrderFilter::class)]
  75. #[ORM\HasLifecycleCallbacks]
  76. class Affectation
  77. {
  78.     use AutoTimestampTrait;
  79.     #[ORM\Column(name'id'type'integer'nullablefalse)]
  80.     #[ORM\Id]
  81.     #[ORM\GeneratedValue(strategy'IDENTITY')]
  82.     #[Groups(['site.get','site.write','document.affectation.get','document.write''affectation.get'])]
  83.     private int $id;
  84.     #[ORM\Column(name'is_applicable'type'boolean')]
  85.     #[Groups(['site.get','site.write','document.affectation.get','document.write''affectation.get'])]
  86.     private bool $isApplicable true;
  87.     #[ORM\ManyToOne(inversedBy'affectations')]
  88.     #[ORM\JoinColumn(nullablefalse)]
  89.     #[Groups(['site.get','site.write','document.write''affectation.get'])]
  90.     private ?Document $document;
  91.     #[ORM\ManyToOne(inversedBy'affectations')]
  92.     #[ORM\JoinColumn(nullablefalse)]
  93.     #[Groups(['site.write','document.affectation.get','document.write','document.get''affectation.get'])]
  94.     private ?Site $site;
  95.     #[ORM\ManyToOne(inversedBy'affectations')]
  96.     #[Groups(['site.write','document.affectation.get','document.write','document.get''affectation.get'])]
  97.     private ?User $createdBy null;
  98.     public function getId(): ?int
  99.     {
  100.         return $this->id;
  101.     }
  102.     public function isIsApplicable(): bool
  103.     {
  104.         return $this->isApplicable;
  105.     }
  106.     public function setIsApplicable(bool $isApplicable): self
  107.     {
  108.         $this->isApplicable $isApplicable;
  109.         return $this;
  110.     }
  111.     public function getDocument(): Document
  112.     {
  113.         return $this->document;
  114.     }
  115.     public function setDocument(Document $document=null): self
  116.     {
  117.         $this->document $document;
  118.         return $this;
  119.     }
  120.     public function getSite(): Site
  121.     {
  122.         return $this->site;
  123.     }
  124.     public function setSite(Site $site=null): self
  125.     {
  126.         $this->site $site;
  127.         return $this;
  128.     }
  129.     public function getCreatedBy(): ?User
  130.     {
  131.         return $this->createdBy;
  132.     }
  133.     public function setCreatedBy(?User $createdBy): self
  134.     {
  135.         $this->createdBy $createdBy;
  136.         return $this;
  137.     }
  138. }