diff --git a/src/Bundle/ChillMainBundle/Entity/UserGroup.php b/src/Bundle/ChillMainBundle/Entity/UserGroup.php index dddd01c70..35e967e5f 100644 --- a/src/Bundle/ChillMainBundle/Entity/UserGroup.php +++ b/src/Bundle/ChillMainBundle/Entity/UserGroup.php @@ -24,6 +24,9 @@ class UserGroup #[ORM\Column(type: \Doctrine\DBAL\Types\Types::INTEGER, nullable: false)] private ?int $id = null; + #[ORM\Column(type: \Doctrine\DBAL\Types\Types::BOOLEAN, nullable: false, options: ['default' => true])] + private bool $active = true; + #[ORM\Column(type: \Doctrine\DBAL\Types\Types::JSON, nullable: false, options: ['default' => '[]'])] private array $label = []; @@ -34,6 +37,13 @@ class UserGroup #[ORM\JoinTable(name: 'chill_main_user_group_user')] private Collection $users; + /** + * @var Collection&Selectable + */ + #[ORM\ManyToMany(targetEntity: User::class)] + #[ORM\JoinTable(name: 'chill_main_user_group_user_admin')] + private Collection&Selectable $adminUsers; + #[ORM\Column(type: \Doctrine\DBAL\Types\Types::TEXT, nullable: false, options: ['default' => '#ffffffff'])] private string $backgroundColor = '#ffffffff'; @@ -54,6 +64,33 @@ class UserGroup $this->users = new ArrayCollection(); } + public function isActive(): bool + { + return $this->active; + } + + public function setActive(bool $active): self + { + $this->active = $active; + return $this; + } + + public function addAdminUser(User $user): self + { + if (!$this->adminUsers->contains($user)) { + $this->adminUsers[] = $user; + } + + return $this; + } + + public function removeAdminUser(User $user): self + { + $this->adminUsers->removeElement($user); + + return $this; + } + public function addUser(User $user): self { if (!$this->users->contains($user)) { @@ -87,6 +124,14 @@ class UserGroup return $this->users; } + /** + * @return Selectable&Collection + */ + public function getAdminUsers(): Collection&Selectable + { + return $this->adminUsers; + } + public function getForegroundColor(): string { return $this->foregroundColor; diff --git a/src/Bundle/ChillMainBundle/migrations/Version20240927095751.php b/src/Bundle/ChillMainBundle/migrations/Version20240927095751.php new file mode 100644 index 000000000..ce34eb5c2 --- /dev/null +++ b/src/Bundle/ChillMainBundle/migrations/Version20240927095751.php @@ -0,0 +1,34 @@ +addSql('CREATE TABLE chill_main_user_group_user_admin (usergroup_id INT NOT NULL, user_id INT NOT NULL, PRIMARY KEY(usergroup_id, user_id))'); + $this->addSql('CREATE INDEX IDX_DAD75036D2112630 ON chill_main_user_group_user_admin (usergroup_id)'); + $this->addSql('CREATE INDEX IDX_DAD75036A76ED395 ON chill_main_user_group_user_admin (user_id)'); + $this->addSql('ALTER TABLE chill_main_user_group_user_admin ADD CONSTRAINT FK_DAD75036D2112630 FOREIGN KEY (usergroup_id) REFERENCES chill_main_user_group (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE chill_main_user_group_user_admin ADD CONSTRAINT FK_DAD75036A76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE chill_main_user_group ADD active BOOLEAN DEFAULT true NOT NULL'); + } + + public function down(Schema $schema): void + { + $this->addSql('ALTER TABLE chill_main_user_group_user_admin DROP CONSTRAINT FK_DAD75036D2112630'); + $this->addSql('ALTER TABLE chill_main_user_group_user_admin DROP CONSTRAINT FK_DAD75036A76ED395'); + $this->addSql('DROP TABLE chill_main_user_group_user_admin'); + $this->addSql('ALTER TABLE chill_main_user_group DROP active'); + } +}