src/Containers/CrmSection/PenaltyContainer/Entities/PenaltyEntity.php line 71

Open in your IDE?
  1. <?php
  2. namespace App\Containers\CrmSection\PenaltyContainer\Entities;
  3. use ApiPlatform\Metadata\ApiResource;
  4. use ApiPlatform\Metadata\Get;
  5. use ApiPlatform\Metadata\GetCollection;
  6. use ApiPlatform\Metadata\ApiFilter;
  7. use ApiPlatform\Doctrine\Orm\Filter\BooleanFilter;
  8. use ApiPlatform\Doctrine\Orm\Filter\DateFilter;
  9. use ApiPlatform\Doctrine\Orm\Filter\NumericFilter;
  10. use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
  11. use ApiPlatform\Doctrine\Orm\Filter\RangeFilter;
  12. use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
  13. use App\Containers\CrmSection\ClientContainer\Entities\ClientEntity;
  14. use App\Containers\CrmSection\ContractContainer\Entities\ContractEntity;
  15. use App\Containers\CrmSection\PenaltyContainer\Data\Repositories\PenaltyRepository;
  16. use App\Ship\ApiPlatform\Filter\SimpleSearchFilter;
  17. use DateTimeImmutable;
  18. use Doctrine\ORM\Mapping as ORM;
  19. use Doctrine\DBAL\Types\Types;
  20. use Gedmo\Mapping\Annotation as Gedmo;
  21. use Symfony\Component\Serializer\Annotation\Context;
  22. use Symfony\Component\Serializer\Annotation\Groups;
  23. use Symfony\Component\Serializer\Annotation\MaxDepth;
  24. use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
  25. /** 
  26.  * Штрафи
  27.  */
  28. #[ApiResource(
  29.     routePrefix'/crm',
  30.     normalizationContext: [
  31.         'groups' => 'read',
  32.         'enable_max_depth' => true
  33.     ],
  34.     operations: [
  35.         new Get(
  36.             uriTemplate'/penalties/{id}',
  37.             requirements: ['id' => '\d+'],
  38.             security"is_granted('ROLE_ADMIN') or is_granted('ROLE_USER_CLIENT')"
  39.         ),
  40.         new GetCollection(
  41.             uriTemplate'/penalties',
  42.             security"is_granted('ROLE_ADMIN') or is_granted('ROLE_USER_CLIENT')"
  43.         ),
  44.     ],
  45.     shortName'CRM_Penalties'
  46. )]
  47. #[ApiFilter(SearchFilter::class, properties: [
  48.     'id' => 'exact',
  49.     'client' => 'exact',
  50.     'contract' => 'exact',
  51.     'amount' => 'exact',
  52.     'protocolSeries' => 'exact',
  53.     'protocolNumber' => 'exact',
  54.     'documentId' => 'exact',
  55.     'datePerpetration' => 'exact',
  56.     'description' => 'partial',
  57. ])]
  58. #[ApiFilter(NumericFilter::class, properties: ['id'])]
  59. #[ApiFilter(RangeFilter::class, properties: ['id'])]
  60. #[ApiFilter(BooleanFilter::class, properties: ['isPaid''isPaidInternal'])]
  61. #[ApiFilter(filterClassSimpleSearchFilter::class, properties: [
  62.     'protocolSeries''protocolNumber''description',
  63. ])]
  64. #[ApiFilter(DateFilter::class, properties: ['datePerpetration'])]
  65. #[ApiFilter(OrderFilter::class)]
  66. #[ORM\Entity(repositoryClassPenaltyRepository::class)]
  67. #[ORM\Table(name'`crm_penalties`')]
  68. class PenaltyEntity
  69. {
  70.     #[ORM\Id]
  71.     #[ORM\GeneratedValue]
  72.     #[ORM\Column(typeTypes::INTEGER)]
  73.     #[Groups(['read'])]
  74.     private ?int $id null;
  75.     #[ORM\ManyToOne(targetEntityClientEntity::class)]
  76.     #[ORM\JoinColumn(name'client_id'referencedColumnName'id')]
  77.     #[Groups(['read'])]
  78.     #[MaxDepth(2)]
  79.     private ClientEntity $client;
  80.     #[ORM\ManyToOne(targetEntityContractEntity::class)]
  81.     #[ORM\JoinColumn(name'contract_id'referencedColumnName'id')]
  82.     #[Groups(['read'])]
  83.     #[MaxDepth(2)]
  84.     private ContractEntity $contract;
  85.     #[ORM\Column(typeTypes::BOOLEAN)]
  86.     #[Groups(['read'])]
  87.     private ?bool $isPaid false;
  88.     #[ORM\Column(typeTypes::BOOLEAN)]
  89.     #[Groups(['read'])]
  90.     private ?bool $isPaidInternal false;
  91.     #[ORM\Column(typeTypes::INTEGER)]
  92.     #[Groups(['read'])]
  93.     private int $amount;
  94.     #[ORM\Column(typeTypes::STRINGlength50)]
  95.     #[Groups(['read'])]
  96.     private string $protocolSeries;
  97.     #[ORM\Column(typeTypes::STRINGlength50)]
  98.     #[Groups(['read'])]
  99.     private string $protocolNumber;
  100.     #[ORM\Column(typeTypes::STRINGlength50)]
  101.     #[Groups(['read'])]
  102.     private string $documentId;
  103.     #[ORM\Column(typeTypes::DATETIME_IMMUTABLE)]
  104.     #[Context(
  105.         normalizationContext: [DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'],
  106.         denormalizationContext: [DateTimeNormalizer::FORMAT_KEY => 'Y-m-d']
  107.     )]
  108.     #[Groups(['read'])]
  109.     private DateTimeImmutable $datePerpetration;
  110.     #[ORM\Column(typeTypes::STRINGlength255nullabletrue)]
  111.     #[Groups(['read'])]
  112.     private ?string $description;
  113.     #[Gedmo\Timestampable(on'create')]
  114.     #[ORM\Column(typeTypes::DATETIME_IMMUTABLE)]
  115.     #[Groups(['read'])]
  116.     protected $createdAt;
  117.     #[Gedmo\Timestampable(on'update')]
  118.     #[ORM\Column(typeTypes::DATETIME_IMMUTABLE)]
  119.     #[Groups(['read'])]
  120.     protected $updatedAt;
  121.     public function getId(): ?int
  122.     {
  123.         return $this->id;
  124.     }
  125.     public function getClient()
  126.     {
  127.         return $this->client;
  128.     }
  129.     public function setClient(ClientEntity $client)
  130.     {
  131.         $this->client $client;
  132.         return $this;
  133.     }
  134.     public function getContract()
  135.     {
  136.         return $this->contract;
  137.     }
  138.     public function setContract(ContractEntity $contract)
  139.     {
  140.         $this->contract $contract;
  141.         return $this;
  142.     }
  143.     public function getIsPaid()
  144.     {
  145.         return $this->isPaid;
  146.     }
  147.     public function setIsPaid(?bool $isPaid)
  148.     {
  149.         $this->isPaid $isPaid;
  150.         return $this;
  151.     }
  152.     public function getIsPaidInternal()
  153.     {
  154.         return $this->isPaidInternal;
  155.     }
  156.     public function setIsPaidInternal(?bool $isPaidInternal)
  157.     {
  158.         $this->isPaidInternal $isPaidInternal;
  159.         return $this;
  160.     }
  161.     public function getAmount()
  162.     {
  163.         return $this->amount;
  164.     }
  165.     public function setAmount(int $amount)
  166.     {
  167.         $this->amount $amount;
  168.         return $this;
  169.     }
  170.     public function getProtocolSeries()
  171.     {
  172.         return $this->protocolSeries;
  173.     }
  174.     public function setProtocolSeries(string $protocolSeries)
  175.     {
  176.         $this->protocolSeries $protocolSeries;
  177.         return $this;
  178.     }
  179.     public function getProtocolNumber()
  180.     {
  181.         return $this->protocolNumber;
  182.     }
  183.     public function setProtocolNumber(string $protocolNumber)
  184.     {
  185.         $this->protocolNumber $protocolNumber;
  186.         return $this;
  187.     }
  188.     public function getDocumentId()
  189.     {
  190.         return $this->documentId;
  191.     }
  192.     public function setDocumentId(string $documentId)
  193.     {
  194.         $this->documentId $documentId;
  195.         return $this;
  196.     }
  197.     public function getDatePerpetration()
  198.     {
  199.         return $this->datePerpetration;
  200.     }
  201.     public function setDatePerpetration(DateTimeImmutable $datePerpetration)
  202.     {
  203.         $this->datePerpetration $datePerpetration;
  204.         return $this;
  205.     }
  206.     public function getDescription()
  207.     {
  208.         return $this->description;
  209.     }
  210.     public function setDescription(string $description)
  211.     {
  212.         $this->description $description;
  213.         return $this;
  214.     }
  215.     public function getCreatedAt()
  216.     {
  217.         return $this->createdAt;
  218.     }
  219.     public function getUpdatedAt()
  220.     {
  221.         return $this->updatedAt;
  222.     }
  223. }