<?php

namespace GlsApi\Struct;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for GLSAddress Struct
 * @subpackage Structs
 */
class GLSAddress extends AbstractStructBase
{
    /**
     * The Name1
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $Name1;
    /**
     * The Name2
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $Name2;
    /**
     * The Name3
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $Name3;
    /**
     * The ContactName
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $ContactName;
    /**
     * The Street1
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $Street1;
    /**
     * The BlockNo1
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $BlockNo1;
    /**
     * The Street2
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $Street2;
    /**
     * The BlockNo2
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $BlockNo2;
    /**
     * The ZipCode
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $ZipCode;
    /**
     * The City
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $City;
    /**
     * The Province
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $Province;
    /**
     * The Country
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $Country;
    /**
     * Constructor method for GLSAddress
     * @uses GLSAddress::setName1()
     * @uses GLSAddress::setName2()
     * @uses GLSAddress::setName3()
     * @uses GLSAddress::setContactName()
     * @uses GLSAddress::setStreet1()
     * @uses GLSAddress::setBlockNo1()
     * @uses GLSAddress::setStreet2()
     * @uses GLSAddress::setBlockNo2()
     * @uses GLSAddress::setZipCode()
     * @uses GLSAddress::setCity()
     * @uses GLSAddress::setProvince()
     * @uses GLSAddress::setCountry()
     * @param string $name1
     * @param string $name2
     * @param string $name3
     * @param string $contactName
     * @param string $street1
     * @param string $blockNo1
     * @param string $street2
     * @param string $blockNo2
     * @param string $zipCode
     * @param string $city
     * @param string $province
     * @param string $country
     */
    public function __construct($name1 = null, $name2 = null, $name3 = null, $contactName = null, $street1 = null, $blockNo1 = null, $street2 = null, $blockNo2 = null, $zipCode = null, $city = null, $province = null, $country = null)
    {
        $this
            ->setName1($name1)
            ->setName2($name2)
            ->setName3($name3)
            ->setContactName($contactName)
            ->setStreet1($street1)
            ->setBlockNo1($blockNo1)
            ->setStreet2($street2)
            ->setBlockNo2($blockNo2)
            ->setZipCode($zipCode)
            ->setCity($city)
            ->setProvince($province)
            ->setCountry($country);
    }
    /**
     * Get Name1 value
     * @return string
     */
    public function getName1()
    {
        return $this->Name1;
    }
    /**
     * Set Name1 value
     * @param string $name1
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setName1($name1 = null)
    {
        // validation for constraint: string
        if (!is_null($name1) && !is_string($name1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($name1, true), gettype($name1)), __LINE__);
        }
        $this->Name1 = $name1;
        return $this;
    }
    /**
     * Get Name2 value
     * @return string
     */
    public function getName2()
    {
        return $this->Name2;
    }
    /**
     * Set Name2 value
     * @param string $name2
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setName2($name2 = null)
    {
        // validation for constraint: string
        if (!is_null($name2) && !is_string($name2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($name2, true), gettype($name2)), __LINE__);
        }
        $this->Name2 = $name2;
        return $this;
    }
    /**
     * Get Name3 value
     * @return string
     */
    public function getName3()
    {
        return $this->Name3;
    }
    /**
     * Set Name3 value
     * @param string $name3
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setName3($name3 = null)
    {
        // validation for constraint: string
        if (!is_null($name3) && !is_string($name3)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($name3, true), gettype($name3)), __LINE__);
        }
        $this->Name3 = $name3;
        return $this;
    }
    /**
     * Get ContactName value
     * @return string
     */
    public function getContactName()
    {
        return $this->ContactName;
    }
    /**
     * Set ContactName value
     * @param string $contactName
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setContactName($contactName = null)
    {
        // validation for constraint: string
        if (!is_null($contactName) && !is_string($contactName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($contactName, true), gettype($contactName)), __LINE__);
        }
        $this->ContactName = $contactName;
        return $this;
    }
    /**
     * Get Street1 value
     * @return string
     */
    public function getStreet1()
    {
        return $this->Street1;
    }
    /**
     * Set Street1 value
     * @param string $street1
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setStreet1($street1 = null)
    {
        // validation for constraint: string
        if (!is_null($street1) && !is_string($street1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($street1, true), gettype($street1)), __LINE__);
        }
        $this->Street1 = $street1;
        return $this;
    }
    /**
     * Get BlockNo1 value
     * @return string
     */
    public function getBlockNo1()
    {
        return $this->BlockNo1;
    }
    /**
     * Set BlockNo1 value
     * @param string $blockNo1
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setBlockNo1($blockNo1 = null)
    {
        // validation for constraint: string
        if (!is_null($blockNo1) && !is_string($blockNo1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($blockNo1, true), gettype($blockNo1)), __LINE__);
        }
        $this->BlockNo1 = $blockNo1;
        return $this;
    }
    /**
     * Get Street2 value
     * @return string
     */
    public function getStreet2()
    {
        return $this->Street2;
    }
    /**
     * Set Street2 value
     * @param string $street2
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setStreet2($street2 = null)
    {
        // validation for constraint: string
        if (!is_null($street2) && !is_string($street2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($street2, true), gettype($street2)), __LINE__);
        }
        $this->Street2 = $street2;
        return $this;
    }
    /**
     * Get BlockNo2 value
     * @return string
     */
    public function getBlockNo2()
    {
        return $this->BlockNo2;
    }
    /**
     * Set BlockNo2 value
     * @param string $blockNo2
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setBlockNo2($blockNo2 = null)
    {
        // validation for constraint: string
        if (!is_null($blockNo2) && !is_string($blockNo2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($blockNo2, true), gettype($blockNo2)), __LINE__);
        }
        $this->BlockNo2 = $blockNo2;
        return $this;
    }
    /**
     * Get ZipCode value
     * @return string
     */
    public function getZipCode()
    {
        return $this->ZipCode;
    }
    /**
     * Set ZipCode value
     * @param string $zipCode
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setZipCode($zipCode = null)
    {
        // validation for constraint: string
        if (!is_null($zipCode) && !is_string($zipCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($zipCode, true), gettype($zipCode)), __LINE__);
        }
        $this->ZipCode = $zipCode;
        return $this;
    }
    /**
     * Get City value
     * @return string
     */
    public function getCity()
    {
        return $this->City;
    }
    /**
     * Set City value
     * @param string $city
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setCity($city = null)
    {
        // validation for constraint: string
        if (!is_null($city) && !is_string($city)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($city, true), gettype($city)), __LINE__);
        }
        $this->City = $city;
        return $this;
    }
    /**
     * Get Province value
     * @return string
     */
    public function getProvince()
    {
        return $this->Province;
    }
    /**
     * Set Province value
     * @param string $province
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setProvince($province = null)
    {
        // validation for constraint: string
        if (!is_null($province) && !is_string($province)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($province, true), gettype($province)), __LINE__);
        }
        $this->Province = $province;
        return $this;
    }
    /**
     * Get Country value
     * @return string
     */
    public function getCountry()
    {
        return $this->Country;
    }
    /**
     * Set Country value
     * @param string $country
     * @return \GlsApi\Struct\GLSAddress
     */
    public function setCountry($country = null)
    {
        // validation for constraint: string
        if (!is_null($country) && !is_string($country)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($country, true), gettype($country)), __LINE__);
        }
        $this->Country = $country;
        return $this;
    }
}
