<?php

namespace HelpGent\App\DTO;

defined( 'ABSPATH' ) || exit;

class AttachmentTransferQueueReadQueryDTO {
    private ?array $columns;

    private bool $paginate;

    private int $per_page;

    private int $page;

    private string $order_by;

    private ?string $type;

    private ?int $attachment_id;

    private ?string $transfer_to;

    private ?string $transfer_next;

    private ?int $upload_id;

    private ?string $status;

    private ?array $status_in;

    private string $status_operator;

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

    /**
     * Get the value of paginate
     *
     * @return int
     */
    public function get_paginate(): int {
        return $this->paginate;
    }
    
    /**
     * Set the value of paginate
     *
     * @param bool $paginate
     * @return self
     */
    public function set_paginate( bool $paginate ): self {
        $this->paginate = $paginate;
    
        return $this;
    }

    /**
     * Get the value of per_page
     *
     * @return bool
     */
    public function get_per_page(): bool {
        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 type
     *
     * @return ?string
     */
    public function get_type(): ?string {
        return $this->type;
    }
    
    /**
     * Set the value of type
     *
     * @param ?string $type
     * @return self
     */
    public function set_type( ?string $type ): self {
        $this->type = $type;
    
        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 transfer_to
     *
     * @return ?string
     */
    public function get_transfer_to(): ?string {
        return $this->transfer_to;
    }
    
    /**
     * Set the value of transfer_to
     *
     * @param ?string $transfer_to
     * @return self
     */
    public function set_transfer_to( ?string $transfer_to ): self {
        $this->transfer_to = $transfer_to;
    
        return $this;
    }

    /**
     * Get the value of transfer_next
     *
     * @return ?string
     */
    public function get_transfer_next(): ?string {
        return $this->transfer_next;
    }
    
    /**
     * Set the value of transfer_next
     *
     * @param ?string $transfer_next
     * @return self
     */
    public function set_transfer_next( ?string $transfer_next ): self {
        $this->transfer_next = $transfer_next;
    
        return $this;
    }

    /**
     * Get the value of upload_id
     *
     * @return ?int
     */
    public function get_upload_id(): ?int {
        return $this->upload_id;
    }
    
    /**
     * Set the value of upload_id
     *
     * @param ?int $upload_id
     * @return self
     */
    public function set_upload_id( ?int $upload_id ): self {
        $this->upload_id = $upload_id;
    
        return $this;
    }

    /**
     * Get the value of status
     *
     * @return ?string
     */
    public function get_status(): ?string {
        return $this->status;
    }
    
    /**
     * Set the value of status
     *
     * @param ?string $status
     * @return self
     */
    public function set_status( ?string $status ): self {
        $this->status = $status;
    
        return $this;
    }

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

    /**
     * Get the value of status_operator
     *
     * @return string
     */
    public function get_status_operator(): string {
        return $this->status_operator;
    }
    
    /**
     * Set the value of status_operator
     *
     * @param string $status_operator
     * @return self
     */
    public function set_status_operator( string $status_operator ): self {
        $this->status_operator = $status_operator;
    
        return $this;
    }
}