<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CampaignResponseResponses StructType
 * @subpackage Structs
 */
class CampaignResponseResponses extends AbstractStructBase
{
    /**
     * The response
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $response;
    /**
     * The responseDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $responseDate;
    /**
     * The author
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $author;
    /**
     * The note
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $note;
    /**
     * Constructor method for CampaignResponseResponses
     * @uses CampaignResponseResponses::setResponse()
     * @uses CampaignResponseResponses::setResponseDate()
     * @uses CampaignResponseResponses::setAuthor()
     * @uses CampaignResponseResponses::setNote()
     * @param string $response
     * @param string $responseDate
     * @param string $author
     * @param string $note
     */
    public function __construct($response = null, $responseDate = null, $author = null, $note = null)
    {
        $this
            ->setResponse($response)
            ->setResponseDate($responseDate)
            ->setAuthor($author)
            ->setNote($note);
    }
    /**
     * Get response value
     * @return string|null
     */
    public function getResponse()
    {
        return $this->response;
    }
    /**
     * Set response value
     * @param string $response
     * @return \StructType\CampaignResponseResponses
     */
    public function setResponse($response = null)
    {
        // validation for constraint: string
        if (!is_null($response) && !is_string($response)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($response, true), gettype($response)), __LINE__);
        }
        $this->response = $response;
        return $this;
    }
    /**
     * Get responseDate value
     * @return string|null
     */
    public function getResponseDate()
    {
        return $this->responseDate;
    }
    /**
     * Set responseDate value
     * @param string $responseDate
     * @return \StructType\CampaignResponseResponses
     */
    public function setResponseDate($responseDate = null)
    {
        // validation for constraint: string
        if (!is_null($responseDate) && !is_string($responseDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($responseDate, true), gettype($responseDate)), __LINE__);
        }
        $this->responseDate = $responseDate;
        return $this;
    }
    /**
     * Get author value
     * @return string|null
     */
    public function getAuthor()
    {
        return $this->author;
    }
    /**
     * Set author value
     * @param string $author
     * @return \StructType\CampaignResponseResponses
     */
    public function setAuthor($author = null)
    {
        // validation for constraint: string
        if (!is_null($author) && !is_string($author)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($author, true), gettype($author)), __LINE__);
        }
        $this->author = $author;
        return $this;
    }
    /**
     * Get note value
     * @return string|null
     */
    public function getNote()
    {
        return $this->note;
    }
    /**
     * Set note value
     * @param string $note
     * @return \StructType\CampaignResponseResponses
     */
    public function setNote($note = null)
    {
        // validation for constraint: string
        if (!is_null($note) && !is_string($note)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($note, true), gettype($note)), __LINE__);
        }
        $this->note = $note;
        return $this;
    }
}
