src/Entity/Places/Facility.php line 42

  1. <?php
  2. namespace App\Entity\Places;
  3. use ApiPlatform\Metadata\GetCollection;
  4. use App\Controller\Places\GetCountriesAction;
  5. use App\Controller\Places\GetPlacesAction;
  6. use App\Doctrine\Type\Places\PlaceStatus;
  7. use App\Entity\Common\Blameable;
  8. use App\Entity\Common\Trackable;
  9. use App\Entity\Identity\User;
  10. use App\Entity\Inventory\Warehouse;
  11. use App\Repository\Places\FacilityRepository;
  12. use App\Validator\IsValidEnum\IsValidEnum;
  13. use Doctrine\DBAL\Types\Types;
  14. use Doctrine\ORM\Mapping as ORM;
  15. use Gedmo\Mapping\Annotation as Gedmo;
  16. use Symfony\Component\Validator\Constraints as Assert;
  17. #[ORM\Table(name'place')]
  18. #[ORM\Index(columns: ['owner_id'], name'place_owner_id_idx')]
  19. #[ORM\Index(columns: ['created_by'], name'place_created_by_idx')]
  20. #[ORM\Index(columns: ['updated_by'], name'place_updated_by_idx')]
  21. #[ORM\InheritanceType('SINGLE_TABLE')]
  22. #[ORM\DiscriminatorColumn(name'type')]
  23. #[ORM\DiscriminatorMap([
  24.     'ADDRESS' => Address::class,
  25.     'AIRPORT' => Airport::class,
  26.     'PORT' => Port::class,
  27.     'RAIL_STATION' => RailStation::class,
  28.     'WAREHOUSE' => Warehouse::class,
  29. ])]
  30. #[ORM\Entity(repositoryClassFacilityRepository::class)]
  31. #[GetCollection(
  32.     uriTemplate'/places',
  33.     controllerGetPlacesAction::class,
  34. )]
  35. #[GetCollection(
  36.     uriTemplate'/places/countries',
  37.     controllerGetCountriesAction::class,
  38. )]
  39. Abstract class Facility
  40. {
  41.     use Blameable;
  42.     use Trackable;
  43.     use Placeable;
  44.     #[ORM\Id]
  45.     #[ORM\GeneratedValue(strategy'IDENTITY')]
  46.     #[ORM\SequenceGenerator(sequenceName'place_id_seq')]
  47.     #[ORM\Column(typeTypes::INTEGER)]
  48.     protected ?int $id null;
  49.     #[Assert\Type(typeTypes::STRING)]
  50.     #[ORM\Column(typeTypes::STRINGnullabletrue)]
  51.     protected ?string $name null;
  52.     #[Assert\Type(typeTypes::STRING)]
  53.     #[ORM\Column(typeTypes::STRINGnullabletrue)]
  54.     protected ?string $code null;
  55.     #[Assert\NotNull]
  56.     #[IsValidEnum(enumPlaceStatus::class)]
  57.     #[ORM\Column(typeTypes::STRINGenumTypePlaceStatus::class)]
  58.     protected ?PlaceStatus $status PlaceStatus::ACTIVE;
  59.     /*
  60.      * Override Blameable User as this field could be null
  61.      */
  62.     #[Gedmo\Blameable(on'create')]
  63.     #[ORM\ManyToOne(targetEntityUser::class)]
  64.     #[ORM\JoinColumn(name'created_by'nullabletrue)]
  65.     protected ?User $createdBy null;
  66.     public function __construct() {}
  67.     public function getId(): ?int
  68.     {
  69.         return $this->id;
  70.     }
  71.     public function getName(): ?string
  72.     {
  73.         return $this->name;
  74.     }
  75.     public function setName(?string $name): static
  76.     {
  77.         $this->name $name;
  78.         return $this;
  79.     }
  80.     public function getCode(): ?string
  81.     {
  82.         return $this->code;
  83.     }
  84.     public function setCode(?string $code): static
  85.     {
  86.         $this->code $code;
  87.         return $this;
  88.     }
  89.     public function getStatus(): ?PlaceStatus
  90.     {
  91.         return $this->status;
  92.     }
  93.     public function setStatus(?PlaceStatus $status): static
  94.     {
  95.         $this->status $status;
  96.         return $this;
  97.     }
  98. }