<?php

namespace HelpGent\App\DTO;

defined( 'ABSPATH' ) || exit;

use HelpGent\WpMVC\DTO\DTO;
use HelpGent\App\Utils\DateTime;

class AdminResponseReadDTO extends DTO {
    private int $form_id = 0;

    private int $response_id = 0;

    private int $per_page;
    
    private int $page;

    private string $order_by;

    private int $is_completed;
    
    private array $tag_ids = [];
    
    private ?string $search;

    private int $is_archive = 0;

    private int $created_by = 0;

    private ?DateTime $from_date = null;

    private ?DateTime $to_date = null;

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

    public function get_response_id(): int {
        return $this->response_id;
    }

    public function set_response_id( int $response_id ): self {
        $this->response_id = $response_id;

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

    /**
     * Get the value of tag_ids
     *
     * @return array
     */
    public function get_tag_ids(): array {
        return $this->tag_ids;
    }

    /**
     * Set the value of tag_ids
     *
     * @param array $tag_ids 
     *
     * @return self
     */
    public function set_tag_ids( array $tag_ids ): self {
        $this->tag_ids = $tag_ids;

        return $this;
    }

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

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

        return $this;
    }

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

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

        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 from_date
     *
     * @return ?DateTime
     */
    public function get_from_date(): ?DateTime {
        return $this->from_date;
    }

    /**
     * Set the value of from_date
     *
     * @param ?DateTime $from_date 
     *
     * @return self
     */
    public function set_from_date( ?DateTime $from_date ): self {
        $this->from_date = $from_date;

        return $this;
    }

    /**
     * Get the value of to_date
     *
     * @return ?DateTime
     */
    public function get_to_date(): ?DateTime {
        return $this->to_date;
    }

    /**
     * Set the value of to_date
     *
     * @param ?DateTime $to_date 
     *
     * @return self
     */
    public function set_to_date( ?DateTime $to_date ): self {
        $this->to_date = $to_date;

        return $this;
    }
}
