<?phpnamespace App\Entity;use App\Entity\Common\LibraryVoterInterface;use App\Entity\Common\ResourceFileInterface;use App\Entity\Traits\BaseDateAtTrait;use App\Entity\Traits\ResourceActionsTrait;use App\Entity\Traits\ResourceFileTrait;use App\Repository\WorkroomResourceRepository;use App\Security\Voter\Library\WorkroomLibraryVoter;use Doctrine\ORM\Mapping as ORM;#[ORM\Entity(repositoryClass: WorkroomResourceRepository::class)]#[ORM\HasLifecycleCallbacks]class WorkroomResource implements LibraryVoterInterface, ResourceFileInterface{ use ResourceFileTrait; use ResourceActionsTrait; use BaseDateAtTrait; public const PRIVATE_FOLDER_NAME = 'workroom'; #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column(type: 'integer')] private $id; #[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'personalResources')] private $user; #[ORM\ManyToOne(targetEntity: Workroom::class, inversedBy: 'workroomResources')] private $workroom; #[ORM\ManyToOne(targetEntity: WorkroomFolder::class, inversedBy: 'workroomResources')] private $workroomFolder; #[ORM\OneToOne(targetEntity: ReadingCard::class, inversedBy: 'workroomResource', cascade: ['remove'])] #[ORM\JoinColumn(name: 'reading_card_id', referencedColumnName: 'id', nullable: true, onDelete: 'CASCADE')] private $readingCard; public function getId(): ?int { return $this->id; } public function getUser(): ?User { return $this->user; } public function setUser(?User $user): self { $this->user = $user; return $this; } public function getWorkroom(): ?Workroom { return $this->workroom; } /** * @return $this */ public function setWorkroom(?Workroom $workroom): self { $this->workroom = $workroom; return $this; } public function getWorkroomFolder(): ?WorkroomFolder { return $this->workroomFolder; } public function setWorkroomFolder(?WorkroomFolder $workroomFolder): self { $this->workroomFolder = $workroomFolder; return $this; } public function getParent(): ?WorkroomFolder { return $this->getWorkroomFolder(); } public function setParent(?WorkroomFolder $personalFolder): self { return $this->setWorkroomFolder($personalFolder); } public function getReadingCard(): ?ReadingCard { return $this->readingCard; } public function setReadingCard(?ReadingCard $readingCard): self { // unset the owning side of the relation if necessary if ($readingCard === null && $this->readingCard !== null) { $this->readingCard->setWorkroomResource(null); } // set the owning side of the relation if necessary if ($readingCard !== null && $readingCard->getWorkroomResource() !== $this) { $readingCard->setWorkroomResource($this); } $this->readingCard = $readingCard; return $this; } public function getLibraryVoter(): string { return WorkroomLibraryVoter::class; } public function getPrivateFileIdentificator(): ?int { return $this->getWorkroom() ? $this->getWorkroom()->getId() : null; }}