<?php 
 
namespace App\Entity; 
 
use App\Controller\Action\UserSiteRoleAction; 
use Doctrine\ORM\Mapping as ORM; 
use ApiPlatform\Metadata\ApiResource; 
use Symfony\Component\Serializer\Annotation\Groups; 
use ApiPlatform\Metadata\Get; 
 
#[ORM\Table(name: 'user_site')] 
#[ORM\Index(name: 'site_id', columns: ['site_id'])] 
#[ORM\Index(name: 'user_id', columns: ['user_id'])] 
#[ORM\Entity] 
#[ApiResource( 
    normalizationContext: ['groups' => ['user.get']], 
    operations: [ 
        new Get( 
            name: '_api_/user_site_role', 
            uriTemplate: '/user_site_role', 
            controller: UserSiteRoleAction::class, 
            write: false, 
            read: false 
        ) 
    ] 
) 
 
] 
class UserSite 
{ 
    #[ORM\Column(name: 'id', type: 'integer', nullable: false)] 
    #[ORM\Id] 
    #[ORM\GeneratedValue(strategy: 'IDENTITY')] 
    #[Groups(['site.get', 'plan.get'])] 
    private int $id; 
 
    #[ORM\Column(name: 'role', type: 'string', length: 255, nullable: true)] 
    #[Groups(['user.get', 'user.write'])] 
    private ?string $role = null; 
 
    #[ORM\ManyToOne(inversedBy: 'userSites')] 
    #[Groups(['user.write'])] 
    #[ORM\JoinColumn(nullable: false)] 
    private ?User $user; 
 
    #[ORM\ManyToOne(inversedBy: 'userSites')] 
    #[Groups(['user.get', 'user.write'])] 
    private Site $site; 
 
    #[ORM\Column(length: 255, nullable: true)] 
    #[Groups(['user.get', 'plan.get', 'user.write'])] 
    private ?string $userRole = null; 
 
 
    public function getId(): ?int 
    { 
        return $this->id; 
    } 
 
    public function getRole(): ?string 
    { 
        return $this->role; 
    } 
 
    public function setRole(?string $role): self 
    { 
        $this->role = $role; 
 
        return $this; 
    } 
 
    public function getUser(): User 
    { 
        return $this->user; 
    } 
 
    public function setUser(User $user = null): self 
    { 
        $this->user = $user; 
 
        return $this; 
    } 
 
    public function getSite(): Site 
    { 
        return $this->site; 
    } 
 
    public function setSite(Site $site): self 
    { 
        $this->site = $site; 
 
        return $this; 
    } 
 
    public function getUserRole(): ?string 
    { 
        return $this->userRole; 
    } 
 
    public function setUserRole(?string $userRole): self 
    { 
        $this->userRole = $userRole; 
 
        return $this; 
    } 
 
 
}