src/Entity/Delete/Quality/NonConformity.php line 62

  1. <?php
  2. namespace App\Entity\Delete\Quality;
  3. use ApiPlatform\Doctrine\Orm\Filter\ExistsFilter;
  4. use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
  5. use ApiPlatform\Metadata\ApiFilter;
  6. use ApiPlatform\Metadata\ApiProperty;
  7. use ApiPlatform\Metadata\ApiResource;
  8. use ApiPlatform\Metadata\Delete;
  9. use ApiPlatform\Metadata\Get;
  10. use ApiPlatform\Metadata\GetCollection;
  11. use ApiPlatform\Metadata\Patch;
  12. use ApiPlatform\Metadata\Post;
  13. use ApiPlatform\Metadata\Put;
  14. use App\Doctrine\Type\Expediting\CasingMaterial;
  15. use App\Doctrine\Type\Expediting\CasingType;
  16. use App\Doctrine\Type\Expediting\NonConformityStatus;
  17. use App\Doctrine\Type\Expediting\NonConformitySubject;
  18. use App\Doctrine\Type\Expediting\NonConformityType;
  19. use App\Dto\Delete\NcrInput;
  20. use App\Entity\Common as Common;
  21. use App\Entity\File\File;
  22. use App\Entity\Identity\User;
  23. use App\Processor\Delete\Quality\NcrInputProcessor;
  24. use App\Provider\Delete\Quality\NonConformityProvider;
  25. use App\Validator\IsValidEnum\IsValidEnum;
  26. use Doctrine\Common\Collections\ArrayCollection;
  27. use Doctrine\Common\Collections\Collection;
  28. use Doctrine\DBAL\Types\Types;
  29. use Doctrine\ORM\Mapping as ORM;
  30. use Gedmo\Mapping\Annotation as Gedmo;
  31. use Symfony\Component\Validator\Constraints as Assert;
  32. #[ORM\Table(name'non_conformity')]
  33. #[ORM\Entity]
  34. #[ApiResource(
  35.     shortName'Ncr',
  36.     operations: [
  37.         new Get(providerNonConformityProvider::class),
  38.         new GetCollection(),
  39.         new Post('/ncr'inputFormats: ['json' => ['application/json'], 'multipart' => ['multipart/form-data']]),
  40.         new Patch(),
  41.         new Put(),
  42.         new Delete(),
  43.     ],
  44.     inputNcrInput::class,
  45.     processorNcrInputProcessor::class,
  46. )]
  47. #[ApiFilter(SearchFilter::class, properties: [
  48.     'reference' => 'ipartial',
  49.     'subjectReference' => 'ipartial',
  50.     'invoicesNumbers' => 'ipartial',
  51.     'ordersNumbers' => 'ipartial',
  52.     'subjectType' => 'exact',
  53.     'status' => 'exact',
  54.     'type' => 'exact',
  55. ])]
  56. #[ApiFilter(ExistsFilter::class, properties: [
  57.     'ncr',
  58. ])]
  59. class NonConformity
  60. {
  61.     use Common\Blameable;
  62.     use Common\Trackable;
  63.     #[ORM\Id]
  64.     #[ORM\GeneratedValue(strategy'IDENTITY')]
  65.     #[ORM\SequenceGenerator(sequenceName'expediting_z_box_id_seq')]
  66.     #[ORM\Column(typeTypes::INTEGER)]
  67.     #[ApiProperty(identifierfalse)]
  68.     private int $id;
  69.     #[Gedmo\Slug(fields: ['reference'])]
  70.     #[ORM\Column(typeTypes::STRING)]
  71.     #[ApiProperty(identifiertrue)]
  72.     private ?string $slug null;
  73.     #[Assert\NotBlank]
  74.     #[Assert\Type(typeTypes::STRING)]
  75.     #[ORM\Column(typeTypes::STRING)]
  76.     private ?string $reference null;
  77.     #[Assert\Type(typeTypes::STRING)]
  78.     #[ORM\Column(typeTypes::STRINGnullabletrue)]
  79.     private ?string $subjectReference null;
  80.     #[Assert\Type(typeTypes::STRING)]
  81.     #[ORM\Column(typeTypes::STRINGnullabletrue)]
  82.     private ?string $supplier null;
  83.     #[Assert\Type(typeTypes::STRING)]
  84.     #[ORM\Column(typeTypes::STRINGnullabletrue)]
  85.     private ?string $invoicesNumbers null;
  86.     #[Assert\Type(typeTypes::STRING)]
  87.     #[ORM\Column(typeTypes::STRINGnullabletrue)]
  88.     private ?string $ordersNumbers null;
  89.     #[Assert\Type(typeTypes::STRING)]
  90.     #[ORM\Column(typeTypes::STRINGnullabletrue)]
  91.     private ?string $lineItems null;
  92.     #[Assert\Type(typeTypes::STRING)]
  93.     #[ORM\Column(typeTypes::STRING)]
  94.     private ?string $description null;
  95.     #[Assert\Type(typeCasingType::class)]
  96.     #[IsValidEnum(enumCasingType::class)]
  97.     #[ORM\Column(typeTypes::STRINGnullabletrueenumTypeCasingType::class)]
  98.     private ?CasingType $casingType null;
  99.     #[Assert\Type(typeCasingMaterial::class)]
  100.     #[IsValidEnum(enumCasingMaterial::class)]
  101.     #[ORM\Column(typeTypes::STRINGnullabletrueenumTypeCasingMaterial::class)]
  102.     private ?CasingMaterial $casingMaterial null;
  103.     #[Assert\Type(typeTypes::FLOAT)]
  104.     #[ORM\Column(typeTypes::DECIMALprecision18scale3nullabletrue)]
  105.     private ?float $length null;
  106.     #[Assert\Type(typeTypes::FLOAT)]
  107.     #[ORM\Column(typeTypes::DECIMALprecision18scale3nullabletrue)]
  108.     private ?float $width null;
  109.     #[Assert\Type(typeTypes::FLOAT)]
  110.     #[ORM\Column(typeTypes::DECIMALprecision18scale3nullabletrue)]
  111.     private ?float $height null;
  112.     #[Assert\Type(typeTypes::FLOAT)]
  113.     #[ORM\Column(typeTypes::DECIMALprecision18scale3nullabletrue)]
  114.     private ?float $weight null;
  115.     #[Assert\Type(typeNonConformitySubject::class)]
  116.     #[IsValidEnum(enumNonConformitySubject::class)]
  117.     #[ORM\Column(typeTypes::STRINGenumTypeNonConformitySubject::class)]
  118.     private ?NonConformitySubject $subjectType null;
  119.     #[Assert\Type(typeNonConformityType::class)]
  120.     #[IsValidEnum(enumNonConformityType::class)]
  121.     #[ORM\Column(typeTypes::STRINGenumTypeNonConformityType::class)]
  122.     private ?NonConformityType $type null;
  123.     #[Assert\Type(typeNonConformityStatus::class)]
  124.     #[IsValidEnum(enumNonConformityStatus::class)]
  125.     #[ORM\Column(typeTypes::STRINGenumTypeNonConformityStatus::class)]
  126.     private ?NonConformityStatus $status null;
  127.     #[ORM\ManyToOne(targetEntityNonConformity::class, inversedBy'boxes')]
  128.     #[ORM\JoinColumn(name'ncr_id'referencedColumnName'id')]
  129.     private ?NonConformity $ncr null;
  130.     #[ORM\OneToMany(mappedBy'ncr'targetEntityNonConformity::class)]
  131.     private Collection $boxes;
  132.     /** @var Collection<int, File> */
  133.     #[ORM\ManyToMany(targetEntityFile::class, cascade: ['persist''remove'])]
  134.     #[ORM\JoinTable(name'non_conformity_file_map')]
  135.     #[ORM\JoinColumn(name'non_conformity_id')]
  136.     #[ORM\InverseJoinColumn(name'file_id')]
  137.     #[ORM\OrderBy(['id' => 'ASC'])]
  138.     private Collection $images;
  139.     #[Gedmo\Blameable(on'create')]
  140.     #[ORM\ManyToOne(targetEntityUser::class)]
  141.     #[ORM\JoinColumn(name'created_by'nullabletrue)]
  142.     protected ?User $createdBy null;
  143.     public array $packages = [];
  144.     public array $pictures = [];
  145.     public function __construct()
  146.     {
  147.         $this->boxes = new ArrayCollection();
  148.         $this->images = new ArrayCollection();
  149.     }
  150.     public function getId(): ?int
  151.     {
  152.         return $this->id;
  153.     }
  154.     public function getSlug(): ?string
  155.     {
  156.         return $this->slug;
  157.     }
  158.     public function setSlug(?string $slug): static
  159.     {
  160.         $this->slug $slug;
  161.         return $this;
  162.     }
  163.     public function getReference(): ?string
  164.     {
  165.         return $this->reference;
  166.     }
  167.     public function setReference(?string $reference): static
  168.     {
  169.         $this->reference $reference;
  170.         return $this;
  171.     }
  172.     public function getSupplier(): ?string
  173.     {
  174.         return $this->supplier;
  175.     }
  176.     public function setSupplier(?string $supplier): static
  177.     {
  178.         $this->supplier $supplier;
  179.         return $this;
  180.     }
  181.     public function getSubjectReference(): ?string
  182.     {
  183.         return $this->subjectReference;
  184.     }
  185.     public function setSubjectReference(?string $subjectReference): static
  186.     {
  187.         $this->subjectReference $subjectReference;
  188.         return $this;
  189.     }
  190.     public function getInvoicesNumbers(): ?string
  191.     {
  192.         return $this->invoicesNumbers;
  193.     }
  194.     public function setInvoicesNumbers(?string $invoicesNumbers): static
  195.     {
  196.         $this->invoicesNumbers $invoicesNumbers;
  197.         return $this;
  198.     }
  199.     public function getOrdersNumbers(): ?string
  200.     {
  201.         return $this->ordersNumbers;
  202.     }
  203.     public function setOrdersNumbers(?string $ordersNumbers): static
  204.     {
  205.         $this->ordersNumbers $ordersNumbers;
  206.         return $this;
  207.     }
  208.     public function getLineItems(): ?string
  209.     {
  210.         return $this->lineItems;
  211.     }
  212.     public function setLineItems(?string $lineItems): static
  213.     {
  214.         $this->lineItems $lineItems;
  215.         return $this;
  216.     }
  217.     public function getDescription(): ?string
  218.     {
  219.         return $this->description;
  220.     }
  221.     public function setDescription(?string $description): static
  222.     {
  223.         $this->description $description;
  224.         return $this;
  225.     }
  226.     public function getCasingType(): ?CasingType
  227.     {
  228.         return $this->casingType;
  229.     }
  230.     public function setCasingType(?CasingType $casingType): static
  231.     {
  232.         $this->casingType $casingType;
  233.         return $this;
  234.     }
  235.     public function getCasingMaterial(): ?CasingMaterial
  236.     {
  237.         return $this->casingMaterial;
  238.     }
  239.     public function setCasingMaterial(?CasingMaterial $casingMaterial): static
  240.     {
  241.         $this->casingMaterial $casingMaterial;
  242.         return $this;
  243.     }
  244.     public function getLength(): ?float
  245.     {
  246.         return $this->length;
  247.     }
  248.     public function setLength(?float $length): static
  249.     {
  250.         $this->length $length;
  251.         return $this;
  252.     }
  253.     public function getWidth(): ?float
  254.     {
  255.         return $this->width;
  256.     }
  257.     public function setWidth(?float $width): static
  258.     {
  259.         $this->width $width;
  260.         return $this;
  261.     }
  262.     public function getHeight(): ?float
  263.     {
  264.         return $this->height;
  265.     }
  266.     public function setHeight(?float $height): static
  267.     {
  268.         $this->height $height;
  269.         return $this;
  270.     }
  271.     public function getVolume(): ?float
  272.     {
  273.         return ($this->length $this->width $this->height) / 1_000_000;
  274.     }
  275.     public function getWeight(): ?float
  276.     {
  277.         return $this->weight;
  278.     }
  279.     public function setWeight(?float $weight): static
  280.     {
  281.         $this->weight $weight;
  282.         return $this;
  283.     }
  284.     public function getSubjectType(): ?NonConformitySubject
  285.     {
  286.         return $this->subjectType;
  287.     }
  288.     public function setSubjectType(?NonConformitySubject $subjectType): static
  289.     {
  290.         $this->subjectType $subjectType;
  291.         return $this;
  292.     }
  293.     public function getType(): ?NonConformityType
  294.     {
  295.         return $this->type;
  296.     }
  297.     public function setType(?NonConformityType $type): static
  298.     {
  299.         $this->type $type;
  300.         return $this;
  301.     }
  302.     public function getStatus(): ?NonConformityStatus
  303.     {
  304.         return $this->status;
  305.     }
  306.     public function setStatus(?NonConformityStatus $status): static
  307.     {
  308.         $this->status $status;
  309.         return $this;
  310.     }
  311.     public function getNcr(): ?self
  312.     {
  313.         return $this->ncr;
  314.     }
  315.     public function setNcr(?self $ncr): self
  316.     {
  317.         $this->ncr $ncr;
  318.         return $this;
  319.     }
  320.     /**
  321.      * @return Collection<int, NonConformity>
  322.      */
  323.     public function getBoxes(): Collection
  324.     {
  325.         return $this->boxes;
  326.     }
  327.     public function addBox(NonConformity $box): self
  328.     {
  329.         if (!$this->boxes->contains($box)) {
  330.             $this->boxes->add($box);
  331.             $box->setNcr($this);
  332.         }
  333.         return $this;
  334.     }
  335.     public function removeBox(NonConformity $box): self
  336.     {
  337.         if ($this->boxes->removeElement($box)) {
  338.             // set the owning side to null (unless already changed)
  339.             if ($box->getNcr() === $this) {
  340.                 $box->setNcr(null);
  341.             }
  342.         }
  343.         return $this;
  344.     }
  345.     /**
  346.      * @return Collection<int, File>
  347.      */
  348.     public function getImages(): Collection
  349.     {
  350.         return $this->images;
  351.     }
  352.     public function addImage(File $image): self
  353.     {
  354.         if (!$this->images->contains($image)) {
  355.             $this->images->add($image);
  356.         }
  357.         return $this;
  358.     }
  359.     public function removeImage(File $image): self
  360.     {
  361.         $this->images->removeElement($image);
  362.         return $this;
  363.     }
  364. }