<?php

namespace NineDotMedia\viapost-php\Struct;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CreateMailPack Struct
 * @subpackage Structs
 */
class CreateMailPack extends AbstractStructBase
{
    /**
     * The letterID
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $letterID;
    /**
     * The letterheadID
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $letterheadID;
    /**
     * The applyLetterhead
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $applyLetterhead;
    /**
     * The applyToFirstPageOnly
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $applyToFirstPageOnly;
    /**
     * The colour
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $colour;
    /**
     * The simplex
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $simplex;
    /**
     * The shareMailPackWithGroup
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $shareMailPackWithGroup;
    /**
     * The mailPackID
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $mailPackID;
    /**
     * The loginToken
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $loginToken;
    /**
     * The name
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $name;
    /**
     * The description
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $description;
    /**
     * The attachmentIDs
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \NineDotMedia\viapost-php\Array\ArrayOfLong
     */
    public $attachmentIDs;
    /**
     * The applyToOddPagesStr
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $applyToOddPagesStr;
    /**
     * The applyToEvenPagesStr
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $applyToEvenPagesStr;
    /**
     * The applyToAdditionalPagesStr
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $applyToAdditionalPagesStr;
    /**
     * The returnMessage
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $returnMessage;
    /**
     * Constructor method for CreateMailPack
     * @uses CreateMailPack::setLetterID()
     * @uses CreateMailPack::setLetterheadID()
     * @uses CreateMailPack::setApplyLetterhead()
     * @uses CreateMailPack::setApplyToFirstPageOnly()
     * @uses CreateMailPack::setColour()
     * @uses CreateMailPack::setSimplex()
     * @uses CreateMailPack::setShareMailPackWithGroup()
     * @uses CreateMailPack::setMailPackID()
     * @uses CreateMailPack::setLoginToken()
     * @uses CreateMailPack::setName()
     * @uses CreateMailPack::setDescription()
     * @uses CreateMailPack::setAttachmentIDs()
     * @uses CreateMailPack::setApplyToOddPagesStr()
     * @uses CreateMailPack::setApplyToEvenPagesStr()
     * @uses CreateMailPack::setApplyToAdditionalPagesStr()
     * @uses CreateMailPack::setReturnMessage()
     * @param int $letterID
     * @param int $letterheadID
     * @param bool $applyLetterhead
     * @param bool $applyToFirstPageOnly
     * @param bool $colour
     * @param bool $simplex
     * @param bool $shareMailPackWithGroup
     * @param int $mailPackID
     * @param string $loginToken
     * @param string $name
     * @param string $description
     * @param \NineDotMedia\viapost-php\Array\ArrayOfLong $attachmentIDs
     * @param string $applyToOddPagesStr
     * @param string $applyToEvenPagesStr
     * @param string $applyToAdditionalPagesStr
     * @param string $returnMessage
     */
    public function __construct($letterID = null, $letterheadID = null, $applyLetterhead = null, $applyToFirstPageOnly = null, $colour = null, $simplex = null, $shareMailPackWithGroup = null, $mailPackID = null, $loginToken = null, $name = null, $description = null, \NineDotMedia\viapost-php\Array\ArrayOfLong $attachmentIDs = null, $applyToOddPagesStr = null, $applyToEvenPagesStr = null, $applyToAdditionalPagesStr = null, $returnMessage = null)
    {
        $this
            ->setLetterID($letterID)
            ->setLetterheadID($letterheadID)
            ->setApplyLetterhead($applyLetterhead)
            ->setApplyToFirstPageOnly($applyToFirstPageOnly)
            ->setColour($colour)
            ->setSimplex($simplex)
            ->setShareMailPackWithGroup($shareMailPackWithGroup)
            ->setMailPackID($mailPackID)
            ->setLoginToken($loginToken)
            ->setName($name)
            ->setDescription($description)
            ->setAttachmentIDs($attachmentIDs)
            ->setApplyToOddPagesStr($applyToOddPagesStr)
            ->setApplyToEvenPagesStr($applyToEvenPagesStr)
            ->setApplyToAdditionalPagesStr($applyToAdditionalPagesStr)
            ->setReturnMessage($returnMessage);
    }
    /**
     * Get letterID value
     * @return int
     */
    public function getLetterID()
    {
        return $this->letterID;
    }
    /**
     * Set letterID value
     * @param int $letterID
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setLetterID($letterID = null)
    {
        // validation for constraint: int
        if (!is_null($letterID) && !(is_int($letterID) || ctype_digit($letterID))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($letterID, true), gettype($letterID)), __LINE__);
        }
        $this->letterID = $letterID;
        return $this;
    }
    /**
     * Get letterheadID value
     * @return int
     */
    public function getLetterheadID()
    {
        return $this->letterheadID;
    }
    /**
     * Set letterheadID value
     * @param int $letterheadID
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setLetterheadID($letterheadID = null)
    {
        // validation for constraint: int
        if (!is_null($letterheadID) && !(is_int($letterheadID) || ctype_digit($letterheadID))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($letterheadID, true), gettype($letterheadID)), __LINE__);
        }
        $this->letterheadID = $letterheadID;
        return $this;
    }
    /**
     * Get applyLetterhead value
     * @return bool
     */
    public function getApplyLetterhead()
    {
        return $this->applyLetterhead;
    }
    /**
     * Set applyLetterhead value
     * @param bool $applyLetterhead
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setApplyLetterhead($applyLetterhead = null)
    {
        // validation for constraint: boolean
        if (!is_null($applyLetterhead) && !is_bool($applyLetterhead)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($applyLetterhead, true), gettype($applyLetterhead)), __LINE__);
        }
        $this->applyLetterhead = $applyLetterhead;
        return $this;
    }
    /**
     * Get applyToFirstPageOnly value
     * @return bool
     */
    public function getApplyToFirstPageOnly()
    {
        return $this->applyToFirstPageOnly;
    }
    /**
     * Set applyToFirstPageOnly value
     * @param bool $applyToFirstPageOnly
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setApplyToFirstPageOnly($applyToFirstPageOnly = null)
    {
        // validation for constraint: boolean
        if (!is_null($applyToFirstPageOnly) && !is_bool($applyToFirstPageOnly)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($applyToFirstPageOnly, true), gettype($applyToFirstPageOnly)), __LINE__);
        }
        $this->applyToFirstPageOnly = $applyToFirstPageOnly;
        return $this;
    }
    /**
     * Get colour value
     * @return bool
     */
    public function getColour()
    {
        return $this->colour;
    }
    /**
     * Set colour value
     * @param bool $colour
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setColour($colour = null)
    {
        // validation for constraint: boolean
        if (!is_null($colour) && !is_bool($colour)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($colour, true), gettype($colour)), __LINE__);
        }
        $this->colour = $colour;
        return $this;
    }
    /**
     * Get simplex value
     * @return bool
     */
    public function getSimplex()
    {
        return $this->simplex;
    }
    /**
     * Set simplex value
     * @param bool $simplex
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setSimplex($simplex = null)
    {
        // validation for constraint: boolean
        if (!is_null($simplex) && !is_bool($simplex)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($simplex, true), gettype($simplex)), __LINE__);
        }
        $this->simplex = $simplex;
        return $this;
    }
    /**
     * Get shareMailPackWithGroup value
     * @return bool
     */
    public function getShareMailPackWithGroup()
    {
        return $this->shareMailPackWithGroup;
    }
    /**
     * Set shareMailPackWithGroup value
     * @param bool $shareMailPackWithGroup
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setShareMailPackWithGroup($shareMailPackWithGroup = null)
    {
        // validation for constraint: boolean
        if (!is_null($shareMailPackWithGroup) && !is_bool($shareMailPackWithGroup)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($shareMailPackWithGroup, true), gettype($shareMailPackWithGroup)), __LINE__);
        }
        $this->shareMailPackWithGroup = $shareMailPackWithGroup;
        return $this;
    }
    /**
     * Get mailPackID value
     * @return int
     */
    public function getMailPackID()
    {
        return $this->mailPackID;
    }
    /**
     * Set mailPackID value
     * @param int $mailPackID
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setMailPackID($mailPackID = null)
    {
        // validation for constraint: int
        if (!is_null($mailPackID) && !(is_int($mailPackID) || ctype_digit($mailPackID))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($mailPackID, true), gettype($mailPackID)), __LINE__);
        }
        $this->mailPackID = $mailPackID;
        return $this;
    }
    /**
     * Get loginToken value
     * @return string|null
     */
    public function getLoginToken()
    {
        return $this->loginToken;
    }
    /**
     * Set loginToken value
     * @param string $loginToken
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setLoginToken($loginToken = null)
    {
        // validation for constraint: string
        if (!is_null($loginToken) && !is_string($loginToken)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($loginToken, true), gettype($loginToken)), __LINE__);
        }
        $this->loginToken = $loginToken;
        return $this;
    }
    /**
     * Get name value
     * @return string|null
     */
    public function getName()
    {
        return $this->name;
    }
    /**
     * Set name value
     * @param string $name
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setName($name = null)
    {
        // validation for constraint: string
        if (!is_null($name) && !is_string($name)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($name, true), gettype($name)), __LINE__);
        }
        $this->name = $name;
        return $this;
    }
    /**
     * Get description value
     * @return string|null
     */
    public function getDescription()
    {
        return $this->description;
    }
    /**
     * Set description value
     * @param string $description
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setDescription($description = null)
    {
        // validation for constraint: string
        if (!is_null($description) && !is_string($description)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($description, true), gettype($description)), __LINE__);
        }
        $this->description = $description;
        return $this;
    }
    /**
     * Get attachmentIDs value
     * @return \NineDotMedia\viapost-php\Array\ArrayOfLong|null
     */
    public function getAttachmentIDs()
    {
        return $this->attachmentIDs;
    }
    /**
     * Set attachmentIDs value
     * @param \NineDotMedia\viapost-php\Array\ArrayOfLong $attachmentIDs
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setAttachmentIDs(\NineDotMedia\viapost-php\Array\ArrayOfLong $attachmentIDs = null)
    {
        $this->attachmentIDs = $attachmentIDs;
        return $this;
    }
    /**
     * Get applyToOddPagesStr value
     * @return string|null
     */
    public function getApplyToOddPagesStr()
    {
        return $this->applyToOddPagesStr;
    }
    /**
     * Set applyToOddPagesStr value
     * @param string $applyToOddPagesStr
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setApplyToOddPagesStr($applyToOddPagesStr = null)
    {
        // validation for constraint: string
        if (!is_null($applyToOddPagesStr) && !is_string($applyToOddPagesStr)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($applyToOddPagesStr, true), gettype($applyToOddPagesStr)), __LINE__);
        }
        $this->applyToOddPagesStr = $applyToOddPagesStr;
        return $this;
    }
    /**
     * Get applyToEvenPagesStr value
     * @return string|null
     */
    public function getApplyToEvenPagesStr()
    {
        return $this->applyToEvenPagesStr;
    }
    /**
     * Set applyToEvenPagesStr value
     * @param string $applyToEvenPagesStr
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setApplyToEvenPagesStr($applyToEvenPagesStr = null)
    {
        // validation for constraint: string
        if (!is_null($applyToEvenPagesStr) && !is_string($applyToEvenPagesStr)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($applyToEvenPagesStr, true), gettype($applyToEvenPagesStr)), __LINE__);
        }
        $this->applyToEvenPagesStr = $applyToEvenPagesStr;
        return $this;
    }
    /**
     * Get applyToAdditionalPagesStr value
     * @return string|null
     */
    public function getApplyToAdditionalPagesStr()
    {
        return $this->applyToAdditionalPagesStr;
    }
    /**
     * Set applyToAdditionalPagesStr value
     * @param string $applyToAdditionalPagesStr
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setApplyToAdditionalPagesStr($applyToAdditionalPagesStr = null)
    {
        // validation for constraint: string
        if (!is_null($applyToAdditionalPagesStr) && !is_string($applyToAdditionalPagesStr)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($applyToAdditionalPagesStr, true), gettype($applyToAdditionalPagesStr)), __LINE__);
        }
        $this->applyToAdditionalPagesStr = $applyToAdditionalPagesStr;
        return $this;
    }
    /**
     * Get returnMessage value
     * @return string|null
     */
    public function getReturnMessage()
    {
        return $this->returnMessage;
    }
    /**
     * Set returnMessage value
     * @param string $returnMessage
     * @return \NineDotMedia\viapost-php\Struct\CreateMailPack
     */
    public function setReturnMessage($returnMessage = null)
    {
        // validation for constraint: string
        if (!is_null($returnMessage) && !is_string($returnMessage)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($returnMessage, true), gettype($returnMessage)), __LINE__);
        }
        $this->returnMessage = $returnMessage;
        return $this;
    }
}
