src/Entity/Places/Facility.php line 42
<?php
namespace App\Entity\Places;
use ApiPlatform\Metadata\GetCollection;
use App\Controller\Places\GetCountriesAction;
use App\Controller\Places\GetPlacesAction;
use App\Doctrine\Type\Places\PlaceStatus;
use App\Entity\Common\Blameable;
use App\Entity\Common\Trackable;
use App\Entity\Identity\User;
use App\Entity\Inventory\Warehouse;
use App\Repository\Places\FacilityRepository;
use App\Validator\IsValidEnum\IsValidEnum;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Table(name: 'place')]
#[ORM\Index(columns: ['owner_id'], name: 'place_owner_id_idx')]
#[ORM\Index(columns: ['created_by'], name: 'place_created_by_idx')]
#[ORM\Index(columns: ['updated_by'], name: 'place_updated_by_idx')]
#[ORM\InheritanceType('SINGLE_TABLE')]
#[ORM\DiscriminatorColumn(name: 'type')]
#[ORM\DiscriminatorMap([
'ADDRESS' => Address::class,
'AIRPORT' => Airport::class,
'PORT' => Port::class,
'RAIL_STATION' => RailStation::class,
'WAREHOUSE' => Warehouse::class,
])]
#[ORM\Entity(repositoryClass: FacilityRepository::class)]
#[GetCollection(
uriTemplate: '/places',
controller: GetPlacesAction::class,
)]
#[GetCollection(
uriTemplate: '/places/countries',
controller: GetCountriesAction::class,
)]
Abstract class Facility
{
use Blameable;
use Trackable;
use Placeable;
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
#[ORM\SequenceGenerator(sequenceName: 'place_id_seq')]
#[ORM\Column(type: Types::INTEGER)]
protected ?int $id = null;
#[Assert\Type(type: Types::STRING)]
#[ORM\Column(type: Types::STRING, nullable: true)]
protected ?string $name = null;
#[Assert\Type(type: Types::STRING)]
#[ORM\Column(type: Types::STRING, nullable: true)]
protected ?string $code = null;
#[Assert\NotNull]
#[IsValidEnum(enum: PlaceStatus::class)]
#[ORM\Column(type: Types::STRING, enumType: PlaceStatus::class)]
protected ?PlaceStatus $status = PlaceStatus::ACTIVE;
/*
* Override Blameable User as this field could be null
*/
#[Gedmo\Blameable(on: 'create')]
#[ORM\ManyToOne(targetEntity: User::class)]
#[ORM\JoinColumn(name: 'created_by', nullable: true)]
protected ?User $createdBy = null;
public function __construct() {}
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(?string $name): static
{
$this->name = $name;
return $this;
}
public function getCode(): ?string
{
return $this->code;
}
public function setCode(?string $code): static
{
$this->code = $code;
return $this;
}
public function getStatus(): ?PlaceStatus
{
return $this->status;
}
public function setStatus(?PlaceStatus $status): static
{
$this->status = $status;
return $this;
}
}