<?php

namespace App\Entity;

use App\Repository\ConcessionRepository;
use Doctrine\ORM\Mapping as ORM;

/**
 * Référentiel des concessions : l'ID externe (DMS) est l'identifiant stable stocké
 * partout dans l'app (périmètres utilisateurs, inventaires, stock) ; le nom ne sert
 * qu'à l'affichage et peut changer sans casser l'historique.
 */
#[ORM\Entity(repositoryClass: ConcessionRepository::class)]
#[ORM\Table(name: 'concessions')]
#[ORM\UniqueConstraint(name: 'uniq_concession_external_id', columns: ['external_id'])]
class Concession
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    private ?int $id = null;

    /** ID_CONCESSION du DMS. */
    #[ORM\Column(length: 64)]
    private string $externalId;

    #[ORM\Column(length: 255)]
    private string $name;

    public function __construct(string $externalId, string $name)
    {
        $this->externalId = mb_substr($externalId, 0, 64);
        $this->name = mb_substr($name, 0, 255);
    }

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getExternalId(): string
    {
        return $this->externalId;
    }

    public function getName(): string
    {
        return $this->name;
    }
}
