<?php

namespace HiEvents\DomainObjects\Generated;

/**
 * THIS FILE IS AUTOGENERATED - DO NOT EDIT IT DIRECTLY.
 * @package HiEvents\DomainObjects\Generated
 */
abstract class OrganizerSettingDomainObjectAbstract extends \HiEvents\DomainObjects\AbstractDomainObject
{
    final public const SINGULAR_NAME = 'organizer_setting';
    final public const PLURAL_NAME = 'organizer_settings';
    final public const ID = 'id';
    final public const ORGANIZER_ID = 'organizer_id';
    final public const SOCIAL_MEDIA_HANDLES = 'social_media_handles';
    final public const WEBSITE_URL = 'website_url';
    final public const HOMEPAGE_THEME_SETTINGS = 'homepage_theme_settings';
    final public const HOMEPAGE_VISIBILITY = 'homepage_visibility';
    final public const HOMEPAGE_PASSWORD = 'homepage_password';
    final public const SEO_KEYWORDS = 'seo_keywords';
    final public const SEO_TITLE = 'seo_title';
    final public const SEO_DESCRIPTION = 'seo_description';
    final public const ALLOW_SEARCH_ENGINE_INDEXING = 'allow_search_engine_indexing';
    final public const CREATED_AT = 'created_at';
    final public const UPDATED_AT = 'updated_at';
    final public const DELETED_AT = 'deleted_at';
    final public const LOCATION_DETAILS = 'location_details';
    final public const DEFAULT_ATTENDEE_DETAILS_COLLECTION_METHOD = 'default_attendee_details_collection_method';
    final public const DEFAULT_SHOW_MARKETING_OPT_IN = 'default_show_marketing_opt_in';
    final public const DEFAULT_PASS_PLATFORM_FEE_TO_BUYER = 'default_pass_platform_fee_to_buyer';
    final public const DEFAULT_ALLOW_ATTENDEE_SELF_EDIT = 'default_allow_attendee_self_edit';
    final public const TRACKING_PIXELS = 'tracking_pixels';
    final public const TRACKING_CONSENT_ACKNOWLEDGED = 'tracking_consent_acknowledged';

    protected int $id;
    protected int $organizer_id;
    protected array|string|null $social_media_handles = null;
    protected ?string $website_url = null;
    protected array|string|null $homepage_theme_settings = null;
    protected string $homepage_visibility = 'PUBLIC';
    protected ?string $homepage_password = null;
    protected ?string $seo_keywords = null;
    protected ?string $seo_title = null;
    protected ?string $seo_description = null;
    protected bool $allow_search_engine_indexing = true;
    protected ?string $created_at = null;
    protected ?string $updated_at = null;
    protected ?string $deleted_at = null;
    protected array|string|null $location_details = null;
    protected string $default_attendee_details_collection_method = 'PER_TICKET';
    protected bool $default_show_marketing_opt_in = true;
    protected bool $default_pass_platform_fee_to_buyer = false;
    protected bool $default_allow_attendee_self_edit = true;
    protected array|string|null $tracking_pixels = null;
    protected bool $tracking_consent_acknowledged = false;

    public function toArray(): array
    {
        return [
                    'id' => $this->id ?? null,
                    'organizer_id' => $this->organizer_id ?? null,
                    'social_media_handles' => $this->social_media_handles ?? null,
                    'website_url' => $this->website_url ?? null,
                    'homepage_theme_settings' => $this->homepage_theme_settings ?? null,
                    'homepage_visibility' => $this->homepage_visibility ?? null,
                    'homepage_password' => $this->homepage_password ?? null,
                    'seo_keywords' => $this->seo_keywords ?? null,
                    'seo_title' => $this->seo_title ?? null,
                    'seo_description' => $this->seo_description ?? null,
                    'allow_search_engine_indexing' => $this->allow_search_engine_indexing ?? null,
                    'created_at' => $this->created_at ?? null,
                    'updated_at' => $this->updated_at ?? null,
                    'deleted_at' => $this->deleted_at ?? null,
                    'location_details' => $this->location_details ?? null,
                    'default_attendee_details_collection_method' => $this->default_attendee_details_collection_method ?? null,
                    'default_show_marketing_opt_in' => $this->default_show_marketing_opt_in ?? null,
                    'default_pass_platform_fee_to_buyer' => $this->default_pass_platform_fee_to_buyer ?? null,
                    'default_allow_attendee_self_edit' => $this->default_allow_attendee_self_edit ?? null,
                    'tracking_pixels' => $this->tracking_pixels ?? null,
                    'tracking_consent_acknowledged' => $this->tracking_consent_acknowledged ?? null,
                ];
    }

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

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

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

    public function getOrganizerId(): int
    {
        return $this->organizer_id;
    }

    public function setSocialMediaHandles(array|string|null $social_media_handles): self
    {
        $this->social_media_handles = $social_media_handles;
        return $this;
    }

    public function getSocialMediaHandles(): array|string|null
    {
        return $this->social_media_handles;
    }

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

    public function getWebsiteUrl(): ?string
    {
        return $this->website_url;
    }

    public function setHomepageThemeSettings(array|string|null $homepage_theme_settings): self
    {
        $this->homepage_theme_settings = $homepage_theme_settings;
        return $this;
    }

    public function getHomepageThemeSettings(): array|string|null
    {
        return $this->homepage_theme_settings;
    }

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

    public function getHomepageVisibility(): string
    {
        return $this->homepage_visibility;
    }

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

    public function getHomepagePassword(): ?string
    {
        return $this->homepage_password;
    }

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

    public function getSeoKeywords(): ?string
    {
        return $this->seo_keywords;
    }

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

    public function getSeoTitle(): ?string
    {
        return $this->seo_title;
    }

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

    public function getSeoDescription(): ?string
    {
        return $this->seo_description;
    }

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

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

    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 setLocationDetails(array|string|null $location_details): self
    {
        $this->location_details = $location_details;
        return $this;
    }

    public function getLocationDetails(): array|string|null
    {
        return $this->location_details;
    }

    public function setDefaultAttendeeDetailsCollectionMethod(
        string $default_attendee_details_collection_method,
    ): self {
        $this->default_attendee_details_collection_method = $default_attendee_details_collection_method;
        return $this;
    }

    public function getDefaultAttendeeDetailsCollectionMethod(): string
    {
        return $this->default_attendee_details_collection_method;
    }

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

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

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

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

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

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

    public function setTrackingPixels(array|string|null $tracking_pixels): self
    {
        $this->tracking_pixels = $tracking_pixels;
        return $this;
    }

    public function getTrackingPixels(): array|string|null
    {
        return $this->tracking_pixels;
    }

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

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