<?php

namespace HiEvents\DomainObjects\Generated;

/**
 * THIS FILE IS AUTOGENERATED - DO NOT EDIT IT DIRECTLY.
 * @package HiEvents\DomainObjects\Generated
 */
abstract class EmailTemplateDomainObjectAbstract extends \HiEvents\DomainObjects\AbstractDomainObject
{
    final public const SINGULAR_NAME = 'email_template';
    final public const PLURAL_NAME = 'email_templates';
    final public const ID = 'id';
    final public const ACCOUNT_ID = 'account_id';
    final public const ORGANIZER_ID = 'organizer_id';
    final public const EVENT_ID = 'event_id';
    final public const TEMPLATE_TYPE = 'template_type';
    final public const SUBJECT = 'subject';
    final public const BODY = 'body';
    final public const CTA = 'cta';
    final public const ENGINE = 'engine';
    final public const IS_ACTIVE = 'is_active';
    final public const CREATED_AT = 'created_at';
    final public const UPDATED_AT = 'updated_at';
    final public const DELETED_AT = 'deleted_at';

    protected int $id;
    protected int $account_id;
    protected ?int $organizer_id = null;
    protected ?int $event_id = null;
    protected string $template_type;
    protected string $subject;
    protected string $body;
    protected array|string|null $cta = null;
    protected string $engine = 'liquid';
    protected bool $is_active = true;
    protected ?string $created_at = null;
    protected ?string $updated_at = null;
    protected ?string $deleted_at = null;

    public function toArray(): array
    {
        return [
                    'id' => $this->id ?? null,
                    'account_id' => $this->account_id ?? null,
                    'organizer_id' => $this->organizer_id ?? null,
                    'event_id' => $this->event_id ?? null,
                    'template_type' => $this->template_type ?? null,
                    'subject' => $this->subject ?? null,
                    'body' => $this->body ?? null,
                    'cta' => $this->cta ?? null,
                    'engine' => $this->engine ?? null,
                    'is_active' => $this->is_active ?? null,
                    'created_at' => $this->created_at ?? null,
                    'updated_at' => $this->updated_at ?? null,
                    'deleted_at' => $this->deleted_at ?? 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 setOrganizerId(?int $organizer_id): self
    {
        $this->organizer_id = $organizer_id;
        return $this;
    }

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

    public function setEventId(?int $event_id): self
    {
        $this->event_id = $event_id;
        return $this;
    }

    public function getEventId(): ?int
    {
        return $this->event_id;
    }

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

    public function getTemplateType(): string
    {
        return $this->template_type;
    }

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

    public function getSubject(): string
    {
        return $this->subject;
    }

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

    public function getBody(): string
    {
        return $this->body;
    }

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

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

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

    public function getEngine(): string
    {
        return $this->engine;
    }

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

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

    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;
    }
}
