src/Entity/Membership.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\MembershipRepository;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Gedmo\Timestampable\Traits\TimestampableEntity;
  6. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  7. use Symfony\Component\Serializer\Annotation\Groups;
  8. #[ORM\Entity(repositoryClassMembershipRepository::class)]
  9. #[ORM\UniqueConstraint(name"association_table"columns: ['company_id''club_id'])]
  10. #[UniqueEntity(fields: ['company''club'], message'A membership already exists for this company in this club.'errorPath'user')]
  11. class Membership
  12. {
  13.     const STATUS_ACTIVE 'active';
  14.     const STATUS_INACTIVE 'inactive';
  15.     #[ORM\Id]
  16.     #[ORM\GeneratedValue]
  17.     #[ORM\Column]
  18.     private ?int $id null;
  19.     use TimestampableEntity;
  20.     #[ORM\ManyToOne(cascade: ["persist"], inversedBy'memberships')]
  21.     #[ORM\JoinColumn(nullablefalseonDelete"CASCADE")]
  22.     #[Groups([
  23.         'read:club:collection:getCompanies',
  24.         'read:club:collection',
  25.         'read:user:item:get',
  26.         'read:user:item:me',
  27.         'read:company:collection:get',
  28.     ])]
  29.     private ?Club $club null;
  30.     #[ORM\ManyToOne(cascade: ["persist"], inversedBy'memberships')]
  31.     #[ORM\JoinColumn(nullablefalseonDelete"CASCADE")]
  32.     private ?Company $company null;
  33.     #[ORM\Column(length255)]
  34.     #[Groups([
  35.         'read:user:item:me',
  36.     ])]
  37.     private ?string $status null;
  38.     public function __construct()
  39.     {
  40.         $this->status self::STATUS_ACTIVE;
  41.     }
  42.     public function __toString(): string
  43.     {
  44.         return $this->club.' --> '.$this->company;
  45.     }
  46.     public static function getStatusList(): array
  47.     {
  48.         return [
  49.             self::STATUS_ACTIVE => 'Active',
  50.             self::STATUS_INACTIVE => 'Inactive',
  51.         ];
  52.     }
  53.     public function getStatusLabel(): ?string
  54.     {
  55.         $list self::getStatusList();
  56.         return ($this->status != null && array_key_exists($this->status$list) ? $list[$this->status] : null);
  57.     }
  58.     public function getStatusClass(): ?string
  59.     {
  60.         return match ($this->status) {
  61.             self::STATUS_ACTIVE => 'success',
  62.             self::STATUS_INACTIVE => 'danger',
  63.             default => null,
  64.         };
  65.     }
  66.     public function getId(): ?int
  67.     {
  68.         return $this->id;
  69.     }
  70.     public function getClub(): ?Club
  71.     {
  72.         return $this->club;
  73.     }
  74.     public function setClub(?Club $club): self
  75.     {
  76.         $this->club $club;
  77.         return $this;
  78.     }
  79.     public function getCompany(): ?Company
  80.     {
  81.         return $this->company;
  82.     }
  83.     public function setCompany(?Company $company): self
  84.     {
  85.         $this->company $company;
  86.         return $this;
  87.     }
  88.     public function getStatus(): ?string
  89.     {
  90.         return $this->status;
  91.     }
  92.     public function setStatus(string $status): self
  93.     {
  94.         $this->status $status;
  95.         return $this;
  96.     }
  97. }