<?php

declare(strict_types=1);

namespace NoahVet\Reef\Jane\Model;

class VeterinaryGroupRequest extends \ArrayObject
{
    /**
     * @var array
     */
    protected $initialized = [];

    /**
     * Nullable Id - Common Request Model.
     *
     * @var NullableIdRequest|null
     */
    protected $banner;

    /**
     * @var string
     */
    protected $entitled;

    /**
     * @var string|null
     */
    protected $generalConditionUrl;

    /**
     * @var string|null
     */
    protected $groupCode;

    /**
     * @var string|null
     */
    protected $legalNoticeUrl;

    /**
     * Nullable Id - Common Request Model.
     *
     * @var NullableIdRequest|null
     */
    protected $legalStructure;

    /**
     * Nullable Id - Common Request Model.
     *
     * @var NullableIdRequest|null
     */
    protected $logo;

    /**
     * @var string|null
     */
    protected $longDescription;

    /**
     * Nullable Id - Common Request Model.
     *
     * @var NullableIdRequest|null
     */
    protected $mainBillingAccount;

    /**
     * @var string|null
     */
    protected $personalisedMention;

    /**
     * @var list<IdRequest>|null
     */
    protected $pictures;

    /**
     * @var string|null
     */
    protected $privacyPolicyUrl;

    /**
     * @var string|null
     */
    protected $serviceVatCategory;

    /**
     * @var string
     */
    protected $shortDescription;

    /**
     * @var string|null
     */
    protected $status;

    public function isInitialized($property): bool
    {
        return \array_key_exists($property, $this->initialized);
    }

    /**
     * Nullable Id - Common Request Model.
     */
    public function getBanner(): ?NullableIdRequest
    {
        return $this->banner;
    }

    /**
     * Nullable Id - Common Request Model.
     */
    public function setBanner(?NullableIdRequest $banner): self
    {
        $this->initialized['banner'] = true;
        $this->banner = $banner;

        return $this;
    }

    public function getEntitled(): string
    {
        return $this->entitled;
    }

    public function setEntitled(string $entitled): self
    {
        $this->initialized['entitled'] = true;
        $this->entitled = $entitled;

        return $this;
    }

    public function getGeneralConditionUrl(): ?string
    {
        return $this->generalConditionUrl;
    }

    public function setGeneralConditionUrl(?string $generalConditionUrl): self
    {
        $this->initialized['generalConditionUrl'] = true;
        $this->generalConditionUrl = $generalConditionUrl;

        return $this;
    }

    public function getGroupCode(): ?string
    {
        return $this->groupCode;
    }

    public function setGroupCode(?string $groupCode): self
    {
        $this->initialized['groupCode'] = true;
        $this->groupCode = $groupCode;

        return $this;
    }

    public function getLegalNoticeUrl(): ?string
    {
        return $this->legalNoticeUrl;
    }

    public function setLegalNoticeUrl(?string $legalNoticeUrl): self
    {
        $this->initialized['legalNoticeUrl'] = true;
        $this->legalNoticeUrl = $legalNoticeUrl;

        return $this;
    }

    /**
     * Nullable Id - Common Request Model.
     */
    public function getLegalStructure(): ?NullableIdRequest
    {
        return $this->legalStructure;
    }

    /**
     * Nullable Id - Common Request Model.
     */
    public function setLegalStructure(?NullableIdRequest $legalStructure): self
    {
        $this->initialized['legalStructure'] = true;
        $this->legalStructure = $legalStructure;

        return $this;
    }

    /**
     * Nullable Id - Common Request Model.
     */
    public function getLogo(): ?NullableIdRequest
    {
        return $this->logo;
    }

    /**
     * Nullable Id - Common Request Model.
     */
    public function setLogo(?NullableIdRequest $logo): self
    {
        $this->initialized['logo'] = true;
        $this->logo = $logo;

        return $this;
    }

    public function getLongDescription(): ?string
    {
        return $this->longDescription;
    }

    public function setLongDescription(?string $longDescription): self
    {
        $this->initialized['longDescription'] = true;
        $this->longDescription = $longDescription;

        return $this;
    }

    /**
     * Nullable Id - Common Request Model.
     */
    public function getMainBillingAccount(): ?NullableIdRequest
    {
        return $this->mainBillingAccount;
    }

    /**
     * Nullable Id - Common Request Model.
     */
    public function setMainBillingAccount(?NullableIdRequest $mainBillingAccount): self
    {
        $this->initialized['mainBillingAccount'] = true;
        $this->mainBillingAccount = $mainBillingAccount;

        return $this;
    }

    public function getPersonalisedMention(): ?string
    {
        return $this->personalisedMention;
    }

    public function setPersonalisedMention(?string $personalisedMention): self
    {
        $this->initialized['personalisedMention'] = true;
        $this->personalisedMention = $personalisedMention;

        return $this;
    }

    /**
     * @return list<IdRequest>|null
     */
    public function getPictures(): ?array
    {
        return $this->pictures;
    }

    /**
     * @param list<IdRequest>|null $pictures
     */
    public function setPictures(?array $pictures): self
    {
        $this->initialized['pictures'] = true;
        $this->pictures = $pictures;

        return $this;
    }

    public function getPrivacyPolicyUrl(): ?string
    {
        return $this->privacyPolicyUrl;
    }

    public function setPrivacyPolicyUrl(?string $privacyPolicyUrl): self
    {
        $this->initialized['privacyPolicyUrl'] = true;
        $this->privacyPolicyUrl = $privacyPolicyUrl;

        return $this;
    }

    public function getServiceVatCategory(): ?string
    {
        return $this->serviceVatCategory;
    }

    public function setServiceVatCategory(?string $serviceVatCategory): self
    {
        $this->initialized['serviceVatCategory'] = true;
        $this->serviceVatCategory = $serviceVatCategory;

        return $this;
    }

    public function getShortDescription(): string
    {
        return $this->shortDescription;
    }

    public function setShortDescription(string $shortDescription): self
    {
        $this->initialized['shortDescription'] = true;
        $this->shortDescription = $shortDescription;

        return $this;
    }

    public function getStatus(): ?string
    {
        return $this->status;
    }

    public function setStatus(?string $status): self
    {
        $this->initialized['status'] = true;
        $this->status = $status;

        return $this;
    }
}
