<?php

namespace HelpGent\App\DTO;

defined( 'ABSPATH' ) || exit;

use HelpGent\WpMVC\DTO\DTO;

class ChatMessageDTO extends DTO {
    private int $id;

    private int $response_id;
    
    private string $message = '';
    
    private int $attachment_id = 0;

    private array $attachment_ids = [];

    private int $is_read = 0;

    private ?int $parent_id = 0;

    private int $created_by = 0;

    private string $replied_by = 'text';

    private ?int $form_id = null;

    /**
     * Get the value of id
     *
     * @return int
     */
    public function get_id(): int {
        return $this->id;
    }

    /**
     * Set the value of id
     *
     * @param int $id
     * @return self
     */
    public function set_id( int $id ): self {
        $this->id = $id;

        return $this;
    }

    /**
     * Get the value of response_id
     *
     * @return int
     */
    public function get_response_id(): int {
        return $this->response_id;
    }

    /**
     * Set the value of response_id
     *
     * @param int $response_id
     * @return self
     */
    public function set_response_id( int $response_id ): self {
        $this->response_id = $response_id;

        return $this;
    }

    /**
     * Get the value of message
     *
     * @return string
     */
    public function get_message(): string {
        return $this->message;
    }

    /**
     * Set the value of message
     *
     * @param string $message
     * @return self
     */
    public function set_message( string $message ): self {
        $this->message = $message;

        return $this;
    }

    /**
     * Get the value of attachment_id
     *
     * @return int
     */
    public function get_attachment_id(): int {
        return $this->attachment_id;
    }

    /**
     * Set the value of attachment_id
     *
     * @param int $attachment_id
     * @return self
     */
    public function set_attachment_id( int $attachment_id ): self {
        $this->attachment_id = $attachment_id;

        return $this;
    }

    /**
     * Get the value of attachment_ids
     *
     * @return ?array
     */
    public function get_attachment_ids(): array {
        return $this->attachment_ids;
    }
    
    /**
     * Set the value of attachment_ids
     *
     * @param array $attachment_ids
     * @return self
     */
    public function set_attachment_ids( array $attachment_ids ): self {
        $this->attachment_ids = $attachment_ids;
    
        return $this;
    }

    /**
     * Get the value of is_read
     *
     * @return int
     */
    public function get_is_read(): int {
        return $this->is_read;
    }

    /**
     * Set the value of is_read
     *
     * @param int $is_read
     * @return self
     */
    public function set_is_read( int $is_read ): self {
        $this->is_read = $is_read;

        return $this;
    }

    /**
     * Get the value of parent_id
     *
     * @return ?int
     */
    public function get_parent_id(): ?int {
        return $this->parent_id;
    }

    /**
     * Set the value of parent_id
     *
     * @param ?int $parent_id
     * @return self
     */
    public function set_parent_id( ?int $parent_id ): self {
        $this->parent_id = $parent_id;

        return $this;
    }

    /**
     * Get the value of created_by
     *
     * @return int
     */
    public function get_created_by(): int {
        return $this->created_by;
    }

    /**
     * Set the value of created_by
     *
     * @param int $created_by
     * @return self
     */
    public function set_created_by( int $created_by ): self {
        $this->created_by = $created_by;

        return $this;
    }

    /**
     * Get the value of replied_by
     *
     * @return string
     */
    public function get_replied_by(): string {
        return $this->replied_by;
    }

    /**
     * Set the value of replied_by
     *
     * @param string $replied_by
     * @return self
     */
    public function set_replied_by( string $replied_by ): self {
        $this->replied_by = $replied_by;

        return $this;
    }

    /**
     * Get the value of form_id
     *
     * @return ?int
     */
    public function get_form_id(): ?int {
        return $this->form_id;
    }

    /**
     * Set the value of form_id
     *
     * @param ?int $form_id
     * @return self
     */
    public function set_form_id( ?int $form_id ): self {
        $this->form_id = $form_id;

        return $this;
    }
}