<?php

namespace HiEvents\DomainObjects\Generated;

/**
 * THIS FILE IS AUTOGENERATED - DO NOT EDIT IT DIRECTLY.
 * @package HiEvents\DomainObjects\Generated
 */
abstract class AccountVatSettingDomainObjectAbstract extends \HiEvents\DomainObjects\AbstractDomainObject
{
    final public const SINGULAR_NAME = 'account_vat_setting';
    final public const PLURAL_NAME = 'account_vat_settings';
    final public const ID = 'id';
    final public const ACCOUNT_ID = 'account_id';
    final public const VAT_REGISTERED = 'vat_registered';
    final public const VAT_NUMBER = 'vat_number';
    final public const VAT_VALIDATED = 'vat_validated';
    final public const VAT_VALIDATION_DATE = 'vat_validation_date';
    final public const BUSINESS_NAME = 'business_name';
    final public const BUSINESS_ADDRESS = 'business_address';
    final public const VAT_COUNTRY_CODE = 'vat_country_code';
    final public const CREATED_AT = 'created_at';
    final public const UPDATED_AT = 'updated_at';
    final public const DELETED_AT = 'deleted_at';
    final public const VAT_VALIDATION_STATUS = 'vat_validation_status';
    final public const VAT_VALIDATION_ERROR = 'vat_validation_error';
    final public const VAT_VALIDATION_ATTEMPTS = 'vat_validation_attempts';

    protected int $id;
    protected int $account_id;
    protected bool $vat_registered = false;
    protected ?string $vat_number = null;
    protected bool $vat_validated = false;
    protected ?string $vat_validation_date = null;
    protected ?string $business_name = null;
    protected ?string $business_address = null;
    protected ?string $vat_country_code = null;
    protected ?string $created_at = null;
    protected ?string $updated_at = null;
    protected ?string $deleted_at = null;
    protected string $vat_validation_status = 'PENDING';
    protected ?string $vat_validation_error = null;
    protected int $vat_validation_attempts = 0;

    public function toArray(): array
    {
        return [
                    'id' => $this->id ?? null,
                    'account_id' => $this->account_id ?? null,
                    'vat_registered' => $this->vat_registered ?? null,
                    'vat_number' => $this->vat_number ?? null,
                    'vat_validated' => $this->vat_validated ?? null,
                    'vat_validation_date' => $this->vat_validation_date ?? null,
                    'business_name' => $this->business_name ?? null,
                    'business_address' => $this->business_address ?? null,
                    'vat_country_code' => $this->vat_country_code ?? null,
                    'created_at' => $this->created_at ?? null,
                    'updated_at' => $this->updated_at ?? null,
                    'deleted_at' => $this->deleted_at ?? null,
                    'vat_validation_status' => $this->vat_validation_status ?? null,
                    'vat_validation_error' => $this->vat_validation_error ?? null,
                    'vat_validation_attempts' => $this->vat_validation_attempts ?? null,
                ];
    }

    public function setId(int $id): self
    {
        $this->id = $id;
        return $this;
    }

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

    public function setAccountId(int $account_id): self
    {
        $this->account_id = $account_id;
        return $this;
    }

    public function getAccountId(): int
    {
        return $this->account_id;
    }

    public function setVatRegistered(bool $vat_registered): self
    {
        $this->vat_registered = $vat_registered;
        return $this;
    }

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

    public function setVatNumber(?string $vat_number): self
    {
        $this->vat_number = $vat_number;
        return $this;
    }

    public function getVatNumber(): ?string
    {
        return $this->vat_number;
    }

    public function setVatValidated(bool $vat_validated): self
    {
        $this->vat_validated = $vat_validated;
        return $this;
    }

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

    public function setVatValidationDate(?string $vat_validation_date): self
    {
        $this->vat_validation_date = $vat_validation_date;
        return $this;
    }

    public function getVatValidationDate(): ?string
    {
        return $this->vat_validation_date;
    }

    public function setBusinessName(?string $business_name): self
    {
        $this->business_name = $business_name;
        return $this;
    }

    public function getBusinessName(): ?string
    {
        return $this->business_name;
    }

    public function setBusinessAddress(?string $business_address): self
    {
        $this->business_address = $business_address;
        return $this;
    }

    public function getBusinessAddress(): ?string
    {
        return $this->business_address;
    }

    public function setVatCountryCode(?string $vat_country_code): self
    {
        $this->vat_country_code = $vat_country_code;
        return $this;
    }

    public function getVatCountryCode(): ?string
    {
        return $this->vat_country_code;
    }

    public function setCreatedAt(?string $created_at): self
    {
        $this->created_at = $created_at;
        return $this;
    }

    public function getCreatedAt(): ?string
    {
        return $this->created_at;
    }

    public function setUpdatedAt(?string $updated_at): self
    {
        $this->updated_at = $updated_at;
        return $this;
    }

    public function getUpdatedAt(): ?string
    {
        return $this->updated_at;
    }

    public function setDeletedAt(?string $deleted_at): self
    {
        $this->deleted_at = $deleted_at;
        return $this;
    }

    public function getDeletedAt(): ?string
    {
        return $this->deleted_at;
    }

    public function setVatValidationStatus(string $vat_validation_status): self
    {
        $this->vat_validation_status = $vat_validation_status;
        return $this;
    }

    public function getVatValidationStatus(): string
    {
        return $this->vat_validation_status;
    }

    public function setVatValidationError(?string $vat_validation_error): self
    {
        $this->vat_validation_error = $vat_validation_error;
        return $this;
    }

    public function getVatValidationError(): ?string
    {
        return $this->vat_validation_error;
    }

    public function setVatValidationAttempts(int $vat_validation_attempts): self
    {
        $this->vat_validation_attempts = $vat_validation_attempts;
        return $this;
    }

    public function getVatValidationAttempts(): int
    {
        return $this->vat_validation_attempts;
    }
}
