<?phpnamespace App\Entity;use App\Repository\CreditCardRepository;use Doctrine\DBAL\Types\Types;use Doctrine\ORM\Mapping as ORM;use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;use Symfony\Component\Validator\Constraints as Asserts;#[ORM\Entity(repositoryClass: CreditCardRepository::class)]#[UniqueEntity(['number'])]class CreditCard{ #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 255)] #[Asserts\NotBlank] private ?string $name = null; #[ORM\Column(length: 16)] #[Asserts\CardScheme( schemes: [Asserts\CardScheme::VISA , Asserts\CardScheme::MASTERCARD , Asserts\CardScheme::MAESTRO ] )] #[Asserts\NotBlank] private ?string $number = null; #[ORM\Column(length: 3)] #[Asserts\Length(3)] #[Asserts\NotBlank] private ?string $cvcCode = null; #[ORM\Column(length: 32)] #[Asserts\NotBlank] private ?string $holderName = null; #[Asserts\Range( min: 1, max: 12 )] #[ORM\Column(type: Types::SMALLINT)] private ?int $month = null; #[Asserts\Range( min: 2023 )] #[ORM\Column(type: Types::SMALLINT)] private ?int $year = null; public function __construct() { } public function getId(): ?int { return $this->id; } public function getName(): ?string { return $this->name; } public function setName(string $name): self { $this->name = $name; return $this; } public function getNumber(): ?string { return $this->number; } public function setNumber(string $number): self { $this->number = $number; return $this; } public function getCvcCode(): ?string { return $this->cvcCode; } public function setCvcCode(?string $cvcCode): self { $this->cvcCode = $cvcCode; return $this; } public function getHolderName(): ?string { return $this->holderName; } public function setHolderName(?string $holderName): self { $this->holderName = $holderName; return $this; } public function __toString(): string { $number_masqued = ''; for ($i=0 ; $i< strlen($this->getNumber())-4 ; $i++ ){ $number_masqued = $number_masqued. '*'; } return $number_masqued . substr($this->getNumber(), strlen($this->getNumber())-4 , strlen($this->getNumber()) ) . ', ' .$this->getHolderName(); } public function getMonth(): ?int { return $this->month; } public function setMonth(int $month): self { $this->month = $month; return $this; } public function getYear(): ?int { return $this->year; } public function setYear(int $year): self { $this->year = $year; return $this; }}