<?php

namespace HiEvents\DomainObjects\Generated;

/**
 * THIS FILE IS AUTOGENERATED - DO NOT EDIT IT DIRECTLY.
 * @package HiEvents\DomainObjects\Generated
 */
abstract class OrderAuditLogDomainObjectAbstract extends \HiEvents\DomainObjects\AbstractDomainObject
{
    final public const SINGULAR_NAME = 'order_audit_log';
    final public const PLURAL_NAME = 'order_audit_logs';
    final public const ID = 'id';
    final public const EVENT_ID = 'event_id';
    final public const ORDER_ID = 'order_id';
    final public const ATTENDEE_ID = 'attendee_id';
    final public const ACTION = 'action';
    final public const OLD_VALUES = 'old_values';
    final public const NEW_VALUES = 'new_values';
    final public const CHANGED_FIELDS = 'changed_fields';
    final public const IP_ADDRESS = 'ip_address';
    final public const USER_AGENT = 'user_agent';
    final public const CREATED_AT = 'created_at';
    final public const UPDATED_AT = 'updated_at';

    protected int $id;
    protected int $event_id;
    protected int $order_id;
    protected ?int $attendee_id = null;
    protected string $action;
    protected array|string|null $old_values = null;
    protected array|string|null $new_values = null;
    protected ?string $changed_fields = null;
    protected ?string $ip_address = null;
    protected ?string $user_agent = null;
    protected ?string $created_at = null;
    protected ?string $updated_at = null;

    public function toArray(): array
    {
        return [
                    'id' => $this->id ?? null,
                    'event_id' => $this->event_id ?? null,
                    'order_id' => $this->order_id ?? null,
                    'attendee_id' => $this->attendee_id ?? null,
                    'action' => $this->action ?? null,
                    'old_values' => $this->old_values ?? null,
                    'new_values' => $this->new_values ?? null,
                    'changed_fields' => $this->changed_fields ?? null,
                    'ip_address' => $this->ip_address ?? null,
                    'user_agent' => $this->user_agent ?? null,
                    'created_at' => $this->created_at ?? null,
                    'updated_at' => $this->updated_at ?? null,
                ];
    }

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

    public function getId(): int
    {
        return $this->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 setOrderId(int $order_id): self
    {
        $this->order_id = $order_id;
        return $this;
    }

    public function getOrderId(): int
    {
        return $this->order_id;
    }

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

    public function getAttendeeId(): ?int
    {
        return $this->attendee_id;
    }

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

    public function getAction(): string
    {
        return $this->action;
    }

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

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

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

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

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

    public function getChangedFields(): ?string
    {
        return $this->changed_fields;
    }

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

    public function getIpAddress(): ?string
    {
        return $this->ip_address;
    }

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

    public function getUserAgent(): ?string
    {
        return $this->user_agent;
    }

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