<?php

namespace App\Entity;

use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use App\Repository\OnBoaringEpageRepository;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Uid\Uuid;
#[Vich\Uploadable()]
#[ORM\Entity(repositoryClass: OnBoaringEpageRepository::class)]
class OnBoaringEpage
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    private ?int $id = null;

    #[ORM\Column(type: 'string')]
    private ?string $uuid = null;

    #[ORM\Column(length: 255)]
    private ?string $state = null;

    #[ORM\ManyToOne(inversedBy: 'onBoaringEpages')]
    private ?Abonements $abos = null;

    #[ORM\Column(length: 255)]
    private ?string $name = null;

    #[ORM\Column(length: 255)]
    private ?string $surname = null;

    #[ORM\Column(length: 255)]
    private ?string $email = null;

    #[ORM\ManyToOne(inversedBy: 'onBoaringEpages')]
    private ?Account $account = null;

    #[ORM\Column]
    private ?bool $useDomain = null;

    #[ORM\Column(length: 255, nullable: true)]
    private ?string $pageUrl = null;

    #[ORM\Column(length: 255)]
    private ?string $birdth = null;

    #[ORM\Column(length: 255)]
    private ?string $nameCosplayer = null;

    #[ORM\Column(length: 255, nullable: true)]
    private ?string $linkInstagram = null;

    #[ORM\Column(length: 255, nullable: true)]
    private ?string $linkFacebook = null;

    #[ORM\Column(length: 255, nullable: true)]
    private ?string $linkTiktok = null;

    #[ORM\Column(length: 255, nullable: true)]
    private ?string $linkX = null;

    #[ORM\Column(type: Types::TEXT, nullable: true)]
    private ?string $description = null;

    #[ORM\Column(length: 255, nullable: true)]
    private ?string $domain = null;

    #[Vich\UploadableField(mapping: 'epage_avatar',fileNameProperty: 'epageFileName', size: 'epageSize', mimeType: 'epageMineType', originalName: 'epageOriginalName',dimensions: 'epageDimensions')]
    private ?File $epage = null;
    #[ORM\Column(nullable: true)]
    private ?string $epageFileName = null;
    #[ORM\Column(nullable: true)]
    private ?array $epageDimensions = [];
    #[ORM\Column(length: 255,nullable: true)]
    private ?string $epageSize = null;
    #[ORM\Column(length: 255,nullable: true)]
    private ?string $epageMineType = null;
    #[ORM\Column(length: 255,nullable: true)]
    private ?string $epageOriginalName = null;
    #[ORM\Column(nullable: true)]
    private ?\DateTimeImmutable $updateAt;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getUuid(): ?string
    {
        return $this->uuid;
    }

    public function setUuid(string $uuid): static
    {
        $this->uuid = $uuid;

        return $this;
    }

    public function getState(): ?string
    {
        return $this->state;
    }

    public function setState(string $state): static
    {
        $this->state = $state;

        return $this;
    }

    public function getAbos(): ?Abonements
    {
        return $this->abos;
    }

    public function setAbos(?Abonements $abos): static
    {
        $this->abos = $abos;

        return $this;
    }

    public function getName(): ?string
    {
        return $this->name;
    }

    public function setName(string $name): static
    {
        $this->name = $name;

        return $this;
    }

    public function getSurname(): ?string
    {
        return $this->surname;
    }

    public function setSurname(string $surname): static
    {
        $this->surname = $surname;

        return $this;
    }

    public function getEmail(): ?string
    {
        return $this->email;
    }

    public function setEmail(string $email): static
    {
        $this->email = $email;

        return $this;
    }

    public function getAccount(): ?Account
    {
        return $this->account;
    }

    public function setAccount(?Account $account): static
    {
        $this->account = $account;

        return $this;
    }

    public function isUseDomain(): ?bool
    {
        return $this->useDomain;
    }

    public function setUseDomain(bool $useDomain): static
    {
        $this->useDomain = $useDomain;

        return $this;
    }

    public function getPageUrl(): ?string
    {
        return $this->pageUrl;
    }

    public function setPageUrl(?string $pageUrl): static
    {
        $this->pageUrl = $pageUrl;

        return $this;
    }

    public function getBirdth(): ?string
    {
        return $this->birdth;
    }

    public function setBirdth(string $birdth): static
    {
        $this->birdth = $birdth;

        return $this;
    }

    public function getNameCosplayer(): ?string
    {
        return $this->nameCosplayer;
    }

    public function setNameCosplayer(string $nameCosplayer): static
    {
        $this->nameCosplayer = $nameCosplayer;

        return $this;
    }

    public function getLinkInstagram(): ?string
    {
        return $this->linkInstagram;
    }

    public function setLinkInstagram(?string $linkInstagram): static
    {
        $this->linkInstagram = $linkInstagram;

        return $this;
    }

    public function getLinkFacebook(): ?string
    {
        return $this->linkFacebook;
    }

    public function setLinkFacebook(?string $linkFacebook): static
    {
        $this->linkFacebook = $linkFacebook;

        return $this;
    }

    public function getLinkTiktok(): ?string
    {
        return $this->linkTiktok;
    }

    public function setLinkTiktok(?string $linkTiktok): static
    {
        $this->linkTiktok = $linkTiktok;

        return $this;
    }

    public function getLinkX(): ?string
    {
        return $this->linkX;
    }

    public function setLinkX(?string $linkX): static
    {
        $this->linkX = $linkX;

        return $this;
    }

    public function getDescription(): ?string
    {
        return $this->description;
    }

    public function setDescription(?string $description): static
    {
        $this->description = $description;

        return $this;
    }

    public function getDomain(): ?string
    {
        return $this->domain;
    }

    public function setDomain(?string $domain): static
    {
        $this->domain = $domain;

        return $this;
    }

    /**
     * @return \DateTimeImmutable|null
     */
    public function getUpdateAt(): ?\DateTimeImmutable
    {
        return $this->updateAt;
    }


    /**
     * @return bool|null
     */
    public function getUseDomain(): ?bool
    {
        return $this->useDomain;
    }

    /**
     * @param \DateTimeImmutable|null $updateAt
     */
    public function setUpdateAt(?\DateTimeImmutable $updateAt): void
    {
        $this->updateAt = $updateAt;
    }

    /**
     * @return File|null
     */
    public function getEpage(): ?File
    {
        return $this->epage;
    }

    /**
     * @return array|null
     */
    public function getEpageDimensions(): ?array
    {
        return $this->epageDimensions;
    }

    /**
     * @return string|null
     */
    public function getEpageFileName(): ?string
    {
        return $this->epageFileName;
    }

    /**
     * @return string|null
     */
    public function getEpageMineType(): ?string
    {
        return $this->epageMineType;
    }

    /**
     * @return string|null
     */
    public function getEpageOriginalName(): ?string
    {
        return $this->epageOriginalName;
    }

    /**
     * @return string|null
     */
    public function getEpageSize(): ?string
    {
        return $this->epageSize;
    }

    /**
     * @param File|null $epage
     */
    public function setEpage(?File $epage): void
    {
        $this->epage = $epage;
    }

    /**
     * @param array|null $epageDimensions
     */
    public function setEpageDimensions(?array $epageDimensions): void
    {
        $this->epageDimensions = $epageDimensions;
    }

    /**
     * @param string|null $epageFileName
     */
    public function setEpageFileName(?string $epageFileName): void
    {
        $this->epageFileName = $epageFileName;
    }

    /**
     * @param string|null $epageMineType
     */
    public function setEpageMineType(?string $epageMineType): void
    {
        $this->epageMineType = $epageMineType;
    }

    /**
     * @param string|null $epageOriginalName
     */
    public function setEpageOriginalName(?string $epageOriginalName): void
    {
        $this->epageOriginalName = $epageOriginalName;
    }

    /**
     * @param string|null $epageSize
     */
    public function setEpageSize(?string $epageSize): void
    {
        $this->epageSize = $epageSize;
    }
}
