<?php

declare(strict_types=1);

namespace App\Service\Export\Model;

use App\Entity\Core\File;
use App\Enum\Person\GenderEnum;

/**
 * Modèle de données d'une licence CMF (d'organisation ou personnelle).
 */
class LicenceCmf implements ExportModelInterface
{
    /**
     * An id for the licence.
     */
    private int $id;

    /**
     * Year of the licence.
     */
    private int $year;

    /**
     * Is this the licence of an organization and not of a person?
     */
    private bool $isOrganizationLicence;

    /**
     * Name of the organization.
     */
    private string $organizationName;

    /**
     * Identifier of the organization.
     */
    private string $organizationIdentifier;

    /**
     * Name of the federation.
     */
    private string $federationName;

    /**
     * Color of the licence card for the given year.
     */
    private string $color;

    /**
     * Organization's logo or Person's avatar.
     */
    private ?File $logo = null;

    /**
     * CMF QrCode.
     */
    private ?File $qrCode = null;

    /**
     * Gender of the licence owner.
     */
    private ?int $personId = null;

    /**
     * Gender of the licence owner.
     */
    private ?GenderEnum $personGender = null;

    /**
     * First name of the licence owner.
     */
    private string $personFirstName = '';

    /**
     * Name of the licence owner.
     */
    private string $personLastName = '';

    /**
     * Avatar of the user (personal licence only).
     */
    private ?File $personAvatar = null;

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

    public function setId(int $id): LicenceCmf
    {
        $this->id = $id;

        return $this;
    }

    public function getYear(): int
    {
        return $this->year;
    }

    public function setYear(int $year): LicenceCmf
    {
        $this->year = $year;

        return $this;
    }

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

    public function setIsOrganizationLicence(bool $isOrganizationLicence): LicenceCmf
    {
        $this->isOrganizationLicence = $isOrganizationLicence;

        return $this;
    }

    public function getOrganizationName(): string
    {
        return $this->organizationName;
    }

    public function setOrganizationName(string $organizationName): LicenceCmf
    {
        $this->organizationName = $organizationName;

        return $this;
    }

    public function getOrganizationIdentifier(): string
    {
        return $this->organizationIdentifier;
    }

    public function setOrganizationIdentifier(?string $organizationIdentifier): LicenceCmf
    {
        $this->organizationIdentifier = $organizationIdentifier;

        return $this;
    }

    public function getFederationName(): ?string
    {
        return $this->federationName;
    }

    public function setFederationName(string $federationName): LicenceCmf
    {
        $this->federationName = $federationName;

        return $this;
    }

    public function getColor(): string
    {
        return $this->color;
    }

    public function setColor(string $color): LicenceCmf
    {
        $this->color = $color;

        return $this;
    }

    public function getLogo(): ?File
    {
        return $this->logo;
    }

    public function setLogo(?File $logo): LicenceCmf
    {
        $this->logo = $logo;

        return $this;
    }

    public function getQrCode(): ?File
    {
        return $this->qrCode;
    }

    public function setQrCode(?File $qrCode): LicenceCmf
    {
        $this->qrCode = $qrCode;

        return $this;
    }

    public function getPersonId(): int
    {
        return $this->personId;
    }

    public function setPersonId(?int $personId): LicenceCmf
    {
        $this->personId = $personId;

        return $this;
    }

    public function getPersonGender(): GenderEnum
    {
        return $this->personGender;
    }

    public function setPersonGender(GenderEnum $personGender): LicenceCmf
    {
        $this->personGender = $personGender;

        return $this;
    }

    public function getPersonFirstName(): string
    {
        return $this->personFirstName;
    }

    public function setPersonFirstName(string $personFirstName): LicenceCmf
    {
        $this->personFirstName = $personFirstName;

        return $this;
    }

    public function getPersonLastName(): string
    {
        return $this->personLastName;
    }

    public function setPersonLastName(string $personLastName): LicenceCmf
    {
        $this->personLastName = $personLastName;

        return $this;
    }

    public function getPersonAvatar(): ?File
    {
        return $this->personAvatar;
    }

    public function setPersonAvatar(?File $personAvatar): LicenceCmf
    {
        $this->personAvatar = $personAvatar;

        return $this;
    }
}
