<?phpnamespace App\Entity\Gos;use App\Entity\Gos\VirtualCurrency\VirtualCurrencyOrder;use Doctrine\ORM\Mapping as ORM;use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;/** * @ORM\Entity(repositoryClass="App\Repository\Gos\UserFilesRepository") * @ORM\HasLifecycleCallbacks() */class UserFiles{ /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="string", length=255) */ private $hash; /** * @ORM\ManyToOne(targetEntity="App\Entity\Gos\User", inversedBy="userFiles") * @ORM\JoinColumn() */ private $user; /** * @ORM\ManyToOne(targetEntity="App\Entity\Gos\File") * @ORM\JoinColumn() */ private $file; /** * @ORM\Column(type="datetime") */ private $createdAt; /** * @ORM\ManyToOne(targetEntity="App\Entity\Gos\ProductVariant") * @ORM\JoinColumn() */ private $productVariant; /** * @ORM\Column(type="boolean", nullable=true) */ private $hasAccess; /** * @ORM\Column(type="datetime", nullable=true) */ private $accessExpirationDate; /** * @ORM\ManyToOne(targetEntity=Orders::class, cascade={"persist"}) */ private $orders; /** * @ORM\ManyToOne(targetEntity=VirtualCurrencyOrder::class) */ private $virtualCurrencyOrder; /** @ORM\PrePersist() */ public function onPrePersist(): void { $this->createdAt = new \DateTime(); } public function __toString() { return $this->hash; } public function getId(): ?int { return $this->id; } public function getHash(): ?string { return $this->hash; } public function setHash(string $hash): self { $this->hash = $hash; return $this; } public function getUser(): ?User { return $this->user; } public function setUser(?User $user): self { $this->user = $user; return $this; } public function getFile(): ?File { return $this->file; } public function setFile(?File $file): self { $this->file = $file; return $this; } public function getCreatedAt(): ?\DateTimeInterface { return $this->createdAt; } public function setCreatedAt(\DateTimeInterface $createdAt): self { $this->createdAt = $createdAt; return $this; } public function generateHash(): void { $hash = md5($this->getFile()->getId() . $this->getUser()->getEmail() . (new \DateTime())->format('Y-m-d H:i:s')); $this->setHash($hash); } public function getProductVariant(): ?ProductVariant { return $this->productVariant; } public function setProductVariant(?ProductVariant $productVariant): self { $this->productVariant = $productVariant; return $this; } public function getHasAccess(): ?bool { return $this->hasAccess; } public function setHasAccess(?bool $hasAccess): self { $this->hasAccess = $hasAccess; return $this; } public function getAccessExpirationDate(): ?\DateTimeInterface { return $this->accessExpirationDate; } public function setAccessExpirationDate(?\DateTimeInterface $accessExpirationDate): self { $this->accessExpirationDate = $accessExpirationDate; return $this; } public function getOrders(): ?Orders { return $this->orders; } public function setOrders(?Orders $orders): self { $this->orders = $orders; return $this; } public function getVirtualCurrencyOrder(): ?VirtualCurrencyOrder { return $this->virtualCurrencyOrder; } public function setVirtualCurrencyOrder(?VirtualCurrencyOrder $virtualCurrencyOrder): self { $this->virtualCurrencyOrder = $virtualCurrencyOrder; return $this; }}