src/Entity/AdditionalCost.php line 32

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Entity;
  4. use ApiPlatform\Core\Annotation\ApiProperty;
  5. use ApiPlatform\Core\Annotation\ApiResource;
  6. use App\Trait\TimestampableEntity;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Symfony\Component\Serializer\Annotation\Groups;
  9. use Symfony\Component\Validator\Constraints as Assert;
  10. use Ramsey\Uuid\Uuid;
  11. use Ramsey\Uuid\UuidInterface;
  12. #[ORM\Entity]
  13. #[ApiResource(
  14.     iri'AdditionalCost',
  15.     collectionOperations: [],
  16.     itemOperations: [
  17.         'get' => [
  18.             'security' => "is_granted('ROLE_USER')",
  19.             'method' => 'GET',
  20.             'path' => '/contracts/additional_cost/{id}',
  21.             'openapi_context' => [
  22.                 'tags' => ['Contract / AdditionalCost']
  23.             ]
  24.         ]
  25.     ],
  26.     attributes: ['pagination_enabled' => false]
  27. )]
  28. class AdditionalCost
  29. {
  30.     use TimestampableEntity;
  31.     public const COST_TYPE_PMT 'PMT';
  32.     public const COST_TYPE_LUMPSUM 'LUMPSUM';
  33.     public const COST_TYPE_WS 'WS';
  34.     public const COST_TYPES = [
  35.         self::COST_TYPE_PMT,
  36.         self::COST_TYPE_LUMPSUM,
  37.         self::COST_TYPE_WS,
  38.     ];
  39.     #[ORM\Id]
  40.     #[ORM\GeneratedValue(strategy'NONE')]
  41.     #[ORM\Column(type'uuid'uniquetrue)]
  42.     #[ApiProperty()]
  43.     private ?UuidInterface $id null;
  44.     #[ORM\Column(type'string'nullabletrue)]
  45.     #[Assert\Type('string')]
  46.     #[ApiProperty()]
  47.     #[Groups([
  48.         'contract:collection:post'
  49.         'contract:item:get'
  50.         'contract:item:put'
  51.     ])]
  52.     private ?string $additionalCost null;
  53.     #[ORM\Column(type'string'nullabletrue)]
  54.     #[Assert\Type('string')]
  55.     #[ApiProperty()]
  56.     #[Groups([
  57.         'contract:collection:post'
  58.         'contract:item:get'
  59.         'contract:item:put'
  60.     ])]
  61.     private ?string $additionalCostCurrency null;
  62.     #[ORM\Column(type'string'nullabletrue)]
  63.     #[Assert\Type('string')]
  64.     #[Assert\Choice(
  65.         choicesself::COST_TYPES
  66.         message'The type is not valid.'
  67.     )]
  68.     #[ApiProperty()]
  69.     #[Groups([
  70.         'contract:collection:post'
  71.         'contract:item:get'
  72.         'contract:item:put'
  73.     ])]
  74.     private ?string $additionalType null;
  75.     #[ORM\Column(type'string'nullabletrue)]
  76.     #[ApiProperty()]
  77.     #[Assert\Type('string')]
  78.     #[Groups([
  79.         'contract:collection:post'
  80.         'contract:item:get'
  81.         'contract:item:put'
  82.     ])]
  83.     private ?string $description null;
  84.     #[ORM\ManyToOne(
  85.         targetEntityContract::class, 
  86.         inversedBy'additionalCosts'
  87. )]
  88.     #[ORM\JoinColumn(nullabletrue)]
  89.     private ?Contract $contract null;
  90.     public function __construct()
  91.     {
  92.         $this->id Uuid::uuid4();
  93.     }
  94.     public function getId(): ?UuidInterface
  95.     {
  96.         return $this->id;
  97.     }
  98.     public function getAdditionalCost(): ?string
  99.     {
  100.         return $this->additionalCost;
  101.     }
  102.     public function setAdditionalCost(?string $additionalCost): void
  103.     {
  104.         $this->additionalCost $additionalCost;
  105.     }
  106.     public function getAdditionalCostCurrency(): ?string
  107.     {
  108.         return $this->additionalCostCurrency;
  109.     }
  110.     public function setAdditionalCostCurrency(?string $additionalCostCurrency): void
  111.     {
  112.         $this->additionalCostCurrency $additionalCostCurrency;
  113.     }
  114.     public function getAdditionalType(): ?string
  115.     {
  116.         return $this->additionalType;
  117.     }
  118.     public function setAdditionalType(?string $additionalType): void
  119.     {
  120.         $this->additionalType $additionalType;
  121.     }
  122.     public function setDescription(?string $description): void
  123.     {
  124.         $this->description $description;
  125.     }
  126.     public function getDescription(): ?string
  127.     {
  128.         return $this->description;
  129.     }
  130.     public function setContract(?Contract $contract): void
  131.     {
  132.         $this->contract $contract;
  133.     }
  134.     public function getContract(): ?Contract
  135.     {
  136.         return $this->contract;
  137.     }
  138. }