<?php

namespace Vendtics\App\DTO\Campaign\Recipient;

defined( "ABSPATH" ) || exit;

use DateTime;

class DTO extends \Vendtics\WpMVC\DTO\DTO {
    private int $id;

    private int $campaign_id;

    private int $children_campaign_id;

    private int $contact_id;

    private string $status;

    private ?DateTime $sent_at;

    private ?DateTime $opened_at;

    private ?DateTime $clicked_at;

    private ?DateTime $bounced_at;

    private ?DateTime $unsubscribed_at;

    /**
     * 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 campaign_id
     *
     * @return int
     */
    public function get_campaign_id(): int {
        return $this->campaign_id;
    }

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

        return $this;
    }

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

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

        return $this;
    }

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

    /**
     * Set the value of contact_id
     *
     * @param int $contact_id 
     *
     * @return self
     */
    public function set_contact_id( int $contact_id ): self {
        $this->contact_id = $contact_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 sent_at
     *
     * @return ?DateTime
     */
    public function get_sent_at(): ?DateTime {
        return $this->sent_at;
    }

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }
}