<?php

namespace Vendtics\App\DTO\Campaign;

defined( "ABSPATH" ) || exit;

class DTO extends \Vendtics\WpMVC\DTO\DTO {
    protected array $exclude_to_array =  ['id', 'tags', 'lists'];

    private int $id;

    private int $parent_id;

    private string $name;

    private string $type;

    private ?string $subject;

    private ?string $pre_header;

    private ?array $utm_parameters;

    private ?string $body;

    private ?string $recipient_type;

    private array $tags;

    private array $lists;

    private ?int $segment_id;

    private ?array $advanced_filters;

    private int $tracking_open_read;

    private int $tracking_link_click;

    private string $status;

    private string $failed;

    private string $pause_reason;

    private int $created_by;

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

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

        return $this;
    }

    /**
     * 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 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 name
     *
     * @return string
     */
    public function get_name(): string {
        return $this->name;
    }

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

        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 subject
     *
     * @return ?string
     */
    public function get_subject(): ?string {
        return $this->subject;
    }

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        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 failed
     *
     * @return string
     */
    public function get_failed(): string {
        return $this->failed;
    }

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

        return $this;
    }

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

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

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