<?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\PersonalResourceRepository;use App\Security\Voter\Library\PersonalLibraryVoter;use Doctrine\ORM\Mapping as ORM;use Doctrine\ORM\Mapping\JoinColumn;#[ORM\Entity(repositoryClass: PersonalResourceRepository::class)]#[ORM\HasLifecycleCallbacks]class PersonalResource implements LibraryVoterInterface, ResourceFileInterface{ use ResourceFileTrait; use ResourceActionsTrait; use BaseDateAtTrait; public const PRIVATE_FOLDER_NAME = 'personal'; #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column(type: 'integer')] private $id; #[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'personalResources')] private $user; #[ORM\ManyToOne(targetEntity: PersonalFolder::class, inversedBy: 'personalResources', cascade: ['persist'])] #[JoinColumn(onDelete: 'CASCADE')] private $personalFolder; #[ORM\OneToOne(targetEntity: ReadingCard::class, inversedBy: 'personalResource', 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; } /** * @return $this */ public function setUser(?User $user): self { $this->user = $user; return $this; } public function getPersonalFolder(): ?PersonalFolder { return $this->personalFolder; } public function setPersonalFolder(?PersonalFolder $personalFolder): self { $this->personalFolder = $personalFolder; return $this; } public function getParent(): ?PersonalFolder { return $this->getPersonalFolder(); } public function setParent(?PersonalFolder $personalFolder): self { return $this->setPersonalFolder($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->setPersonalResource(null); } // set the owning side of the relation if necessary if ($readingCard !== null && $readingCard->getPersonalResource() !== $this) { $readingCard->setPersonalResource($this); } $this->readingCard = $readingCard; return $this; } public function getLibraryVoter(): string { return PersonalLibraryVoter::class; } public function getPrivateFileIdentificator(): ?int { return $this->getUser() ? $this->getUser()->getId() : null; }}