<?php
declare(strict_types=1);
namespace App\Shared\Doctrine\Entity;
use App\Client\Doctrine\Entity\Client;
use App\Order\Doctrine\Entity\Carrier;
use App\Supplier\Doctrine\Entity\Supplier;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\DiscriminatorColumn;
use Doctrine\ORM\Mapping\DiscriminatorMap;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\Id;
use Doctrine\ORM\Mapping\InheritanceType;
use Doctrine\ORM\Mapping\Table;
use Symfony\Component\Validator\Constraints\NotBlank;
#[Entity]
#[Table(name: 'company')]
#[InheritanceType('SINGLE_TABLE')]
#[DiscriminatorColumn(name: 'discr', type: 'string')]
#[DiscriminatorMap([
'client' => Client::class,
'supplier' => Supplier::class,
'carrier' => Carrier::class,
])]
abstract class Company
{
#[Id]
#[Column(type: 'integer')]
#[GeneratedValue]
protected ?int $id = null;
#[Column]
#[NotBlank]
protected string $companyName = '';
#[Column(nullable: true)]
protected ?string $companyNumber = null;
#[Column(nullable: true)]
protected ?string $vatNumber = null;
public function __toString(): string
{
return $this->getCompanyName();
}
public function getId(): ?int
{
return $this->id;
}
public function getCompanyName(): string
{
return $this->companyName;
}
public function setCompanyName(string $companyName): void
{
$this->companyName = $companyName;
}
public function getCompanyNumber(): ?string
{
return $this->companyNumber;
}
public function setCompanyNumber(?string $companyNumber): void
{
$this->companyNumber = $companyNumber;
}
public function getVatNumber(): ?string
{
return $this->vatNumber;
}
public function setVatNumber(?string $vatNumber): void
{
$this->vatNumber = $vatNumber;
}
}