<?php

namespace HelpGent\App\DTO;

defined( 'ABSPATH' ) || exit;

use HelpGent\App\EnumeratedList\AttachmentTransferQueueStatus;

class AttachmentTransferQueueDTO {
    private int $id;
    
    private string $type;

    private int $attachment_id;

    private string $transfer_from;

    private string $transfer_to;

    private ?string $transfer_next = null;

    private ?int $upload_id = null;

    private ?string $upload_token = null;

    private string $status = AttachmentTransferQueueStatus::IN_QUEUE;

    private ?string $message = 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 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_from
     *
     * @return string
     */
    public function get_transfer_from(): string {
        return $this->transfer_from;
    }
    
    /**
     * Set the value of transfer_from
     *
     * @param string $transfer_from
     * @return self
     */
    public function set_transfer_from( string $transfer_from ): self {
        $this->transfer_from = $transfer_from;
    
        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 upload_token
     *
     * @return ?string
     */
    public function get_upload_token(): ?string {
        return $this->upload_token;
    }
    
    /**
     * Set the value of upload_token
     *
     * @param ?string $upload_token
     * @return self
     */
    public function set_upload_token( ?string $upload_token ): self {
        $this->upload_token = $upload_token;
    
        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 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;
    }
}