<?php

namespace Vendtics\App\DTO\Contact;

defined( "ABSPATH" ) || exit;

use Vendtics\WpMVC\DTO\DTO;

class ContactDTO extends DTO {
    private int $id;

    private ?string $first_name;

    private ?string $last_name;

    private ?string $email;

    private ?string $phone_number;

    private ?string $company;

    private ?string $designation;

    private ?string $date_of_birth;

    private ?string $timezone;

    private ?string $address;

    private ?string $city;

    private ?string $state;

    private ?string $postal_code;

    private ?string $country;

    private ?string $status;

    private ?string $type;

    private ?array $tags;

    private ?array $lists;

    private ?string $source = null;

    private string $created_at;

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }
}