<?php

namespace NineDotMedia\viapost-php\Struct;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CreateAccountNonUK Struct
 * @subpackage Structs
 */
class CreateAccountNonUK extends AbstractStructBase
{
    /**
     * The iCountryID
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $iCountryID;
    /**
     * The iLettersPerMonth
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $iLettersPerMonth;
    /**
     * The bAgreeTerms
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $bAgreeTerms;
    /**
     * The bSendWelcomeEmail
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $bSendWelcomeEmail;
    /**
     * The iSalesPerson
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $iSalesPerson;
    /**
     * The sForeName
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sForeName;
    /**
     * The sSurname
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sSurname;
    /**
     * The sCompany
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sCompany;
    /**
     * The sAdd1
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sAdd1;
    /**
     * The sAdd2
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sAdd2;
    /**
     * The sAdd3
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sAdd3;
    /**
     * The sPostCode
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sPostCode;
    /**
     * The sPhoneNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sPhoneNumber;
    /**
     * The sEmail
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sEmail;
    /**
     * The sPassword
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sPassword;
    /**
     * The sWhereDidYouHear
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sWhereDidYouHear;
    /**
     * The sAffiliateGUID
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sAffiliateGUID;
    /**
     * The sReturnMessage
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sReturnMessage;
    /**
     * Constructor method for CreateAccountNonUK
     * @uses CreateAccountNonUK::setICountryID()
     * @uses CreateAccountNonUK::setILettersPerMonth()
     * @uses CreateAccountNonUK::setBAgreeTerms()
     * @uses CreateAccountNonUK::setBSendWelcomeEmail()
     * @uses CreateAccountNonUK::setISalesPerson()
     * @uses CreateAccountNonUK::setSForeName()
     * @uses CreateAccountNonUK::setSSurname()
     * @uses CreateAccountNonUK::setSCompany()
     * @uses CreateAccountNonUK::setSAdd1()
     * @uses CreateAccountNonUK::setSAdd2()
     * @uses CreateAccountNonUK::setSAdd3()
     * @uses CreateAccountNonUK::setSPostCode()
     * @uses CreateAccountNonUK::setSPhoneNumber()
     * @uses CreateAccountNonUK::setSEmail()
     * @uses CreateAccountNonUK::setSPassword()
     * @uses CreateAccountNonUK::setSWhereDidYouHear()
     * @uses CreateAccountNonUK::setSAffiliateGUID()
     * @uses CreateAccountNonUK::setSReturnMessage()
     * @param int $iCountryID
     * @param int $iLettersPerMonth
     * @param bool $bAgreeTerms
     * @param bool $bSendWelcomeEmail
     * @param int $iSalesPerson
     * @param string $sForeName
     * @param string $sSurname
     * @param string $sCompany
     * @param string $sAdd1
     * @param string $sAdd2
     * @param string $sAdd3
     * @param string $sPostCode
     * @param string $sPhoneNumber
     * @param string $sEmail
     * @param string $sPassword
     * @param string $sWhereDidYouHear
     * @param string $sAffiliateGUID
     * @param string $sReturnMessage
     */
    public function __construct($iCountryID = null, $iLettersPerMonth = null, $bAgreeTerms = null, $bSendWelcomeEmail = null, $iSalesPerson = null, $sForeName = null, $sSurname = null, $sCompany = null, $sAdd1 = null, $sAdd2 = null, $sAdd3 = null, $sPostCode = null, $sPhoneNumber = null, $sEmail = null, $sPassword = null, $sWhereDidYouHear = null, $sAffiliateGUID = null, $sReturnMessage = null)
    {
        $this
            ->setICountryID($iCountryID)
            ->setILettersPerMonth($iLettersPerMonth)
            ->setBAgreeTerms($bAgreeTerms)
            ->setBSendWelcomeEmail($bSendWelcomeEmail)
            ->setISalesPerson($iSalesPerson)
            ->setSForeName($sForeName)
            ->setSSurname($sSurname)
            ->setSCompany($sCompany)
            ->setSAdd1($sAdd1)
            ->setSAdd2($sAdd2)
            ->setSAdd3($sAdd3)
            ->setSPostCode($sPostCode)
            ->setSPhoneNumber($sPhoneNumber)
            ->setSEmail($sEmail)
            ->setSPassword($sPassword)
            ->setSWhereDidYouHear($sWhereDidYouHear)
            ->setSAffiliateGUID($sAffiliateGUID)
            ->setSReturnMessage($sReturnMessage);
    }
    /**
     * Get iCountryID value
     * @return int
     */
    public function getICountryID()
    {
        return $this->iCountryID;
    }
    /**
     * Set iCountryID value
     * @param int $iCountryID
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setICountryID($iCountryID = null)
    {
        // validation for constraint: int
        if (!is_null($iCountryID) && !(is_int($iCountryID) || ctype_digit($iCountryID))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iCountryID, true), gettype($iCountryID)), __LINE__);
        }
        $this->iCountryID = $iCountryID;
        return $this;
    }
    /**
     * Get iLettersPerMonth value
     * @return int
     */
    public function getILettersPerMonth()
    {
        return $this->iLettersPerMonth;
    }
    /**
     * Set iLettersPerMonth value
     * @param int $iLettersPerMonth
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setILettersPerMonth($iLettersPerMonth = null)
    {
        // validation for constraint: int
        if (!is_null($iLettersPerMonth) && !(is_int($iLettersPerMonth) || ctype_digit($iLettersPerMonth))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iLettersPerMonth, true), gettype($iLettersPerMonth)), __LINE__);
        }
        $this->iLettersPerMonth = $iLettersPerMonth;
        return $this;
    }
    /**
     * Get bAgreeTerms value
     * @return bool
     */
    public function getBAgreeTerms()
    {
        return $this->bAgreeTerms;
    }
    /**
     * Set bAgreeTerms value
     * @param bool $bAgreeTerms
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setBAgreeTerms($bAgreeTerms = null)
    {
        // validation for constraint: boolean
        if (!is_null($bAgreeTerms) && !is_bool($bAgreeTerms)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($bAgreeTerms, true), gettype($bAgreeTerms)), __LINE__);
        }
        $this->bAgreeTerms = $bAgreeTerms;
        return $this;
    }
    /**
     * Get bSendWelcomeEmail value
     * @return bool
     */
    public function getBSendWelcomeEmail()
    {
        return $this->bSendWelcomeEmail;
    }
    /**
     * Set bSendWelcomeEmail value
     * @param bool $bSendWelcomeEmail
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setBSendWelcomeEmail($bSendWelcomeEmail = null)
    {
        // validation for constraint: boolean
        if (!is_null($bSendWelcomeEmail) && !is_bool($bSendWelcomeEmail)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($bSendWelcomeEmail, true), gettype($bSendWelcomeEmail)), __LINE__);
        }
        $this->bSendWelcomeEmail = $bSendWelcomeEmail;
        return $this;
    }
    /**
     * Get iSalesPerson value
     * @return int
     */
    public function getISalesPerson()
    {
        return $this->iSalesPerson;
    }
    /**
     * Set iSalesPerson value
     * @param int $iSalesPerson
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setISalesPerson($iSalesPerson = null)
    {
        // validation for constraint: int
        if (!is_null($iSalesPerson) && !(is_int($iSalesPerson) || ctype_digit($iSalesPerson))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iSalesPerson, true), gettype($iSalesPerson)), __LINE__);
        }
        $this->iSalesPerson = $iSalesPerson;
        return $this;
    }
    /**
     * Get sForeName value
     * @return string|null
     */
    public function getSForeName()
    {
        return $this->sForeName;
    }
    /**
     * Set sForeName value
     * @param string $sForeName
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSForeName($sForeName = null)
    {
        // validation for constraint: string
        if (!is_null($sForeName) && !is_string($sForeName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sForeName, true), gettype($sForeName)), __LINE__);
        }
        $this->sForeName = $sForeName;
        return $this;
    }
    /**
     * Get sSurname value
     * @return string|null
     */
    public function getSSurname()
    {
        return $this->sSurname;
    }
    /**
     * Set sSurname value
     * @param string $sSurname
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSSurname($sSurname = null)
    {
        // validation for constraint: string
        if (!is_null($sSurname) && !is_string($sSurname)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sSurname, true), gettype($sSurname)), __LINE__);
        }
        $this->sSurname = $sSurname;
        return $this;
    }
    /**
     * Get sCompany value
     * @return string|null
     */
    public function getSCompany()
    {
        return $this->sCompany;
    }
    /**
     * Set sCompany value
     * @param string $sCompany
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSCompany($sCompany = null)
    {
        // validation for constraint: string
        if (!is_null($sCompany) && !is_string($sCompany)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sCompany, true), gettype($sCompany)), __LINE__);
        }
        $this->sCompany = $sCompany;
        return $this;
    }
    /**
     * Get sAdd1 value
     * @return string|null
     */
    public function getSAdd1()
    {
        return $this->sAdd1;
    }
    /**
     * Set sAdd1 value
     * @param string $sAdd1
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSAdd1($sAdd1 = null)
    {
        // validation for constraint: string
        if (!is_null($sAdd1) && !is_string($sAdd1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sAdd1, true), gettype($sAdd1)), __LINE__);
        }
        $this->sAdd1 = $sAdd1;
        return $this;
    }
    /**
     * Get sAdd2 value
     * @return string|null
     */
    public function getSAdd2()
    {
        return $this->sAdd2;
    }
    /**
     * Set sAdd2 value
     * @param string $sAdd2
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSAdd2($sAdd2 = null)
    {
        // validation for constraint: string
        if (!is_null($sAdd2) && !is_string($sAdd2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sAdd2, true), gettype($sAdd2)), __LINE__);
        }
        $this->sAdd2 = $sAdd2;
        return $this;
    }
    /**
     * Get sAdd3 value
     * @return string|null
     */
    public function getSAdd3()
    {
        return $this->sAdd3;
    }
    /**
     * Set sAdd3 value
     * @param string $sAdd3
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSAdd3($sAdd3 = null)
    {
        // validation for constraint: string
        if (!is_null($sAdd3) && !is_string($sAdd3)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sAdd3, true), gettype($sAdd3)), __LINE__);
        }
        $this->sAdd3 = $sAdd3;
        return $this;
    }
    /**
     * Get sPostCode value
     * @return string|null
     */
    public function getSPostCode()
    {
        return $this->sPostCode;
    }
    /**
     * Set sPostCode value
     * @param string $sPostCode
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSPostCode($sPostCode = null)
    {
        // validation for constraint: string
        if (!is_null($sPostCode) && !is_string($sPostCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sPostCode, true), gettype($sPostCode)), __LINE__);
        }
        $this->sPostCode = $sPostCode;
        return $this;
    }
    /**
     * Get sPhoneNumber value
     * @return string|null
     */
    public function getSPhoneNumber()
    {
        return $this->sPhoneNumber;
    }
    /**
     * Set sPhoneNumber value
     * @param string $sPhoneNumber
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSPhoneNumber($sPhoneNumber = null)
    {
        // validation for constraint: string
        if (!is_null($sPhoneNumber) && !is_string($sPhoneNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sPhoneNumber, true), gettype($sPhoneNumber)), __LINE__);
        }
        $this->sPhoneNumber = $sPhoneNumber;
        return $this;
    }
    /**
     * Get sEmail value
     * @return string|null
     */
    public function getSEmail()
    {
        return $this->sEmail;
    }
    /**
     * Set sEmail value
     * @param string $sEmail
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSEmail($sEmail = null)
    {
        // validation for constraint: string
        if (!is_null($sEmail) && !is_string($sEmail)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sEmail, true), gettype($sEmail)), __LINE__);
        }
        $this->sEmail = $sEmail;
        return $this;
    }
    /**
     * Get sPassword value
     * @return string|null
     */
    public function getSPassword()
    {
        return $this->sPassword;
    }
    /**
     * Set sPassword value
     * @param string $sPassword
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSPassword($sPassword = null)
    {
        // validation for constraint: string
        if (!is_null($sPassword) && !is_string($sPassword)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sPassword, true), gettype($sPassword)), __LINE__);
        }
        $this->sPassword = $sPassword;
        return $this;
    }
    /**
     * Get sWhereDidYouHear value
     * @return string|null
     */
    public function getSWhereDidYouHear()
    {
        return $this->sWhereDidYouHear;
    }
    /**
     * Set sWhereDidYouHear value
     * @param string $sWhereDidYouHear
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSWhereDidYouHear($sWhereDidYouHear = null)
    {
        // validation for constraint: string
        if (!is_null($sWhereDidYouHear) && !is_string($sWhereDidYouHear)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sWhereDidYouHear, true), gettype($sWhereDidYouHear)), __LINE__);
        }
        $this->sWhereDidYouHear = $sWhereDidYouHear;
        return $this;
    }
    /**
     * Get sAffiliateGUID value
     * @return string|null
     */
    public function getSAffiliateGUID()
    {
        return $this->sAffiliateGUID;
    }
    /**
     * Set sAffiliateGUID value
     * @param string $sAffiliateGUID
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSAffiliateGUID($sAffiliateGUID = null)
    {
        // validation for constraint: string
        if (!is_null($sAffiliateGUID) && !is_string($sAffiliateGUID)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sAffiliateGUID, true), gettype($sAffiliateGUID)), __LINE__);
        }
        $this->sAffiliateGUID = $sAffiliateGUID;
        return $this;
    }
    /**
     * Get sReturnMessage value
     * @return string|null
     */
    public function getSReturnMessage()
    {
        return $this->sReturnMessage;
    }
    /**
     * Set sReturnMessage value
     * @param string $sReturnMessage
     * @return \NineDotMedia\viapost-php\Struct\CreateAccountNonUK
     */
    public function setSReturnMessage($sReturnMessage = null)
    {
        // validation for constraint: string
        if (!is_null($sReturnMessage) && !is_string($sReturnMessage)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sReturnMessage, true), gettype($sReturnMessage)), __LINE__);
        }
        $this->sReturnMessage = $sReturnMessage;
        return $this;
    }
}
