<?php

namespace App\Entity;

use App\Repository\JoinRepository;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;

#[ORM\Entity(repositoryClass: JoinRepository::class)]
#[ORM\Table(name: '`join`')]
#[Vich\Uploadable()]
class Join
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    private ?int $id = null;

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

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

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

    #[ORM\Column]
    private ?\DateTimeImmutable $createAt = null;

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

    #[ORM\Column(type: Types::TEXT)]
    private ?string $who = null;

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

    #[ORM\Column]
    private ?\DateTime $dateBirth = null;

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

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

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

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

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

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

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

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

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

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

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

    #[ORM\Column(type: Types::ARRAY)]
    private array $role = [];

    #[Vich\UploadableField(mapping: 'fiche',fileNameProperty: 'ficheFileName', size: 'ficheSize', mimeType: 'ficheMineType', originalName: 'ficheOriginalName',dimensions: 'ficheDimensions')]
    private ?File $fiche = null;
    #[ORM\Column(nullable: true)]
    private ?string $ficheFileName = null;
    #[ORM\Column(nullable: true)]
    private ?array $ficheDimensions = [];
    #[ORM\Column(length: 255,nullable: true)]
    private ?string $ficheSize = null;
    #[ORM\Column(length: 255,nullable: true)]
    private ?string $ficheMineType = null;
    #[ORM\Column(length: 255,nullable: true)]
    private ?string $ficheOriginalName = null;
    #[ORM\Column(nullable: true)]
    private ?\DateTimeImmutable $updateAt;


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

    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 getCreateAt(): ?\DateTimeImmutable
    {
        return $this->createAt;
    }

    public function setCreateAt(\DateTimeImmutable $createAt): static
    {
        $this->createAt = $createAt;

        return $this;
    }

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

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

        return $this;
    }

    public function getWho(): ?string
    {
        return $this->who;
    }

    public function setWho(string $who): static
    {
        $this->who = $who;

        return $this;
    }

    public function getPhone(): ?string
    {
        return $this->phone;
    }

    public function setPhone(string $phone): static
    {
        $this->phone = $phone;

        return $this;
    }

    public function getDateBirth(): ?\DateTime
    {
        return $this->dateBirth;
    }

    public function setDateBirth(\DateTime $dateBirth): static
    {
        $this->dateBirth = $dateBirth;

        return $this;
    }

    public function getPaymentId(): ?string
    {
        return $this->paymentId;
    }

    public function setPaymentId(?string $paymentId): static
    {
        $this->paymentId = $paymentId;

        return $this;
    }

    public function getAddress(): ?string
    {
        return $this->address;
    }

    public function setAddress(string $address): static
    {
        $this->address = $address;

        return $this;
    }

    public function getZipCode(): ?string
    {
        return $this->zipCode;
    }

    public function setZipCode(string $zipCode): static
    {
        $this->zipCode = $zipCode;

        return $this;
    }

    public function getCity(): ?string
    {
        return $this->city;
    }

    public function setCity(string $city): static
    {
        $this->city = $city;

        return $this;
    }

    public function getPronom(): ?string
    {
        return $this->pronom;
    }

    public function setPronom(string $pronom): static
    {
        $this->pronom = $pronom;

        return $this;
    }

    public function getSexe(): ?string
    {
        return $this->sexe;
    }

    public function setSexe(string $sexe): static
    {
        $this->sexe = $sexe;

        return $this;
    }

    public function getInstaLink(): ?string
    {
        return $this->instaLink;
    }

    public function setInstaLink(?string $instaLink): static
    {
        $this->instaLink = $instaLink;

        return $this;
    }

    public function getFacebookLink(): ?string
    {
        return $this->facebookLink;
    }

    public function setFacebookLink(string $facebookLink): static
    {
        $this->facebookLink = $facebookLink;

        return $this;
    }

    public function getTiktokLink(): ?string
    {
        return $this->tiktokLink;
    }

    public function setTiktokLink(?string $tiktokLink): static
    {
        $this->tiktokLink = $tiktokLink;

        return $this;
    }

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

    public function setIsDiscord(bool $isDiscord): static
    {
        $this->isDiscord = $isDiscord;

        return $this;
    }

    public function getDiscordAccount(): ?string
    {
        return $this->discordAccount;
    }

    public function setDiscordAccount(?string $discordAccount): static
    {
        $this->discordAccount = $discordAccount;

        return $this;
    }

    public function getRole(): array
    {
        return $this->role;
    }

    public function setRole(array $role): static
    {
        $this->role = $role;

        return $this;
    }
}
