refs #422. Model change

pull/7/head
Manuel Aranda Rosales 2024-07-15 11:15:53 +02:00
parent 8e8947cdfa
commit 14ace8fdbf
5 changed files with 60 additions and 13 deletions

View File

@ -0,0 +1,43 @@
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240715084147 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE user_user_group (user_id INT NOT NULL, user_group_id INT NOT NULL, INDEX IDX_28657971A76ED395 (user_id), INDEX IDX_286579711ED93D47 (user_group_id), PRIMARY KEY(user_id, user_group_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('ALTER TABLE user_user_group ADD CONSTRAINT FK_28657971A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE user_user_group ADD CONSTRAINT FK_286579711ED93D47 FOREIGN KEY (user_group_id) REFERENCES user_group (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE user_group_user DROP FOREIGN KEY FK_3AE4BD51ED93D47');
$this->addSql('ALTER TABLE user_group_user DROP FOREIGN KEY FK_3AE4BD5A76ED395');
$this->addSql('DROP TABLE user_group_user');
$this->addSql('ALTER TABLE hardware_profile CHANGE organizational_unit_id organizational_unit_id INT NOT NULL');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE user_group_user (user_group_id INT NOT NULL, user_id INT NOT NULL, INDEX IDX_3AE4BD5A76ED395 (user_id), INDEX IDX_3AE4BD51ED93D47 (user_group_id), PRIMARY KEY(user_group_id, user_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('ALTER TABLE user_group_user ADD CONSTRAINT FK_3AE4BD51ED93D47 FOREIGN KEY (user_group_id) REFERENCES user_group (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE user_group_user ADD CONSTRAINT FK_3AE4BD5A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE user_user_group DROP FOREIGN KEY FK_28657971A76ED395');
$this->addSql('ALTER TABLE user_user_group DROP FOREIGN KEY FK_286579711ED93D47');
$this->addSql('DROP TABLE user_user_group');
$this->addSql('ALTER TABLE hardware_profile CHANGE organizational_unit_id organizational_unit_id INT DEFAULT NULL');
}
}

View File

@ -10,7 +10,7 @@ use Symfony\Component\Serializer\Annotation\Groups;
#[Get(shortName: 'UserGroup')]
final class UserGroupOutput extends AbstractOutput
{
#[Groups(['user-group:read'])]
#[Groups(['user-group:read', 'user:read'])]
public string $name;
#[Groups(['user-group:read'])]
@ -20,10 +20,10 @@ final class UserGroupOutput extends AbstractOutput
public bool $enabled;
#[Groups(['user-group:read'])]
public \DateTime $createAt;
public \DateTime $createdAt;
#[Groups(['user-group:read'])]
public ?string $createBy = null;
public ?string $createdBy = null;
public function __construct(UserGroup $userGroup)
{
@ -32,7 +32,7 @@ final class UserGroupOutput extends AbstractOutput
$this->name = $userGroup->getName();
$this->permissions = $userGroup->getPermissions();
$this->enabled = $userGroup->isEnabled();
$this->createAt = $userGroup->getCreatedAt();
$this->createBy = $userGroup->getCreatedBy();
$this->createdAt = $userGroup->getCreatedAt();
$this->createdBy = $userGroup->getCreatedBy();
}
}

View File

@ -5,6 +5,7 @@ namespace App\Dto\Output;
use ApiPlatform\Metadata\Get;
use App\Entity\OrganizationalUnit;
use App\Entity\User;
use App\Entity\UserGroup;
use Symfony\Component\Serializer\Annotation\Groups;
#[Get(shortName: 'User')]
@ -24,10 +25,10 @@ final class UserOutput extends AbstractOutput
public array $userGroups;
#[Groups(['user:read'])]
public \DateTime $createAt;
public \DateTime $createdAt;
#[Groups(['user:read'])]
public ?string $createBy = null;
public ?string $createdBy = null;
public function __construct(User $user)
{
@ -36,13 +37,16 @@ final class UserOutput extends AbstractOutput
$this->username = $user->getUsername();
$this->roles = $user->getRoles();
$this->enabled = $user->isEnabled();
$this->userGroups = $user->getUserGroups()->toArray();
$this->userGroups = $user->getUserGroups()->map(
fn(UserGroup $userGroup) => new UserGroupOutput($userGroup)
)->toArray();
$this->allowedOrganizationalUnits = $user->getAllowedOrganizationalUnits()->map(
fn(OrganizationalUnit $organizationalUnit) => new OrganizationalUnitOutput($organizationalUnit)
)->toArray();
$this->createAt = $user->getCreatedAt();
$this->createBy = $user->getCreatedBy();
$this->createdAt = $user->getCreatedAt();
$this->createdBy = $user->getCreatedBy();
}
}

View File

@ -38,7 +38,7 @@ class User extends AbstractEntity implements UserInterface, PasswordAuthenticate
/**
* @var Collection<int, UserGroup>
*/
#[ORM\ManyToMany(targetEntity: UserGroup::class, mappedBy: 'users')]
#[ORM\ManyToMany(targetEntity: UserGroup::class, inversedBy: 'users')]
private Collection $userGroups;
/**
@ -160,7 +160,7 @@ class User extends AbstractEntity implements UserInterface, PasswordAuthenticate
{
if (!$this->userGroups->contains($userGroup)) {
$this->userGroups->add($userGroup);
$userGroup->addUser($this);
}
return $this;

View File

@ -23,7 +23,7 @@ class UserGroup extends AbstractEntity
/**
* @var Collection<int, User>
*/
#[ORM\ManyToMany(targetEntity: User::class, inversedBy: 'userGroups')]
#[ORM\ManyToMany(targetEntity: User::class, mappedBy: 'userGroups')]
private Collection $users;
public function __construct()