<?php declare(strict_types=1);
namespace Sq\Entity\Schema\ORM;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
#[ORM\Table(name: 'user_organization_assignments')]
#[ORM\UniqueConstraint(name: 'uqx__uoa_o_id__uoa_u_id', columns: ['uoa_o_id', 'uoa_u_id'])]
class UserOrganizationAssignment
{
public const ROLE_OWNER = 'OWNER';
public const ROLE_ADMIN = 'ADMIN';
public const ROLE_EDITOR = 'EDITOR';
public const ROLE_CLIENT = 'CLIENT';
/**
*
* @var int|null
*/
#[ORM\Id]
#[ORM\Column(name: 'uoa_id', type: 'integer', nullable: false, options: ['unsigned' => true])]
#[ORM\GeneratedValue(strategy: 'AUTO')]
private $id;
/**
*
* @var User
*/
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'organizationAssignments', cascade: ['persist'])]
#[ORM\JoinColumn(name: 'uoa_u_id', referencedColumnName: 'u_id', nullable: false)]
private $user;
/**
*
* @var Organization
*/
#[ORM\ManyToOne(targetEntity: Organization::class, inversedBy: 'userAssignments', fetch: 'EAGER', cascade: ['persist'])]
#[ORM\JoinColumn(name: 'uoa_o_id', referencedColumnName: 'o_id', nullable: false)]
private $organization;
/**
* @var UserOrganizationSettings
*/
#[ORM\OneToOne(targetEntity: UserOrganizationSettings::class, mappedBy: 'assignment', cascade: ['persist', 'remove'])]
private $settings;
/**
* @var string
*/
#[ORM\Column(name: 'uoa_role', type: 'string', nullable: false)]
private $role;
public function __construct(User $user, Organization $organization, string $role)
{
$this->user = $user;
$this->organization = $organization;
$this->settings = new UserOrganizationSettings($this);
$this->role = $role;
}
public function getId(): ?int
{
return $this->id;
}
public function getUser(): User
{
return $this->user;
}
public function getOrganization(): Organization
{
return $this->organization;
}
public function getSettings(): UserOrganizationSettings
{
return $this->settings;
}
public function getRole(): string
{
return $this->role;
}
public function setRole(string $role): void
{
$this->role = $role;
}
}