<?php

namespace \NineDotMedia\viapost-php;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Mapping StructType
 * @subpackage Structs
 */
class Mapping extends AbstractStructBase
{
    /**
     * The MappingId
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $MappingId;
    /**
     * The HeaderRow
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $HeaderRow;
    /**
     * The NameColumn
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $NameColumn;
    /**
     * The OrganisationColumn
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $OrganisationColumn;
    /**
     * The Street1Column
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $Street1Column;
    /**
     * The Street2Column
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $Street2Column;
    /**
     * The Street3Column
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $Street3Column;
    /**
     * The PostTownColumn
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $PostTownColumn;
    /**
     * The PostCodeColumn
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $PostCodeColumn;
    /**
     * The Description
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Description;
    /**
     * The Variables
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \\NineDotMedia\viapost-php\ArrayOfString
     */
    public $Variables;
    /**
     * The DefaultName
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $DefaultName;
    /**
     * The MergeFields
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \\NineDotMedia\viapost-php\ArrayOfMergeField
     */
    public $MergeFields;
    /**
     * Constructor method for Mapping
     * @uses Mapping::setMappingId()
     * @uses Mapping::setHeaderRow()
     * @uses Mapping::setNameColumn()
     * @uses Mapping::setOrganisationColumn()
     * @uses Mapping::setStreet1Column()
     * @uses Mapping::setStreet2Column()
     * @uses Mapping::setStreet3Column()
     * @uses Mapping::setPostTownColumn()
     * @uses Mapping::setPostCodeColumn()
     * @uses Mapping::setDescription()
     * @uses Mapping::setVariables()
     * @uses Mapping::setDefaultName()
     * @uses Mapping::setMergeFields()
     * @param int $mappingId
     * @param bool $headerRow
     * @param int $nameColumn
     * @param int $organisationColumn
     * @param int $street1Column
     * @param int $street2Column
     * @param int $street3Column
     * @param int $postTownColumn
     * @param int $postCodeColumn
     * @param string $description
     * @param \\NineDotMedia\viapost-php\ArrayOfString $variables
     * @param string $defaultName
     * @param \\NineDotMedia\viapost-php\ArrayOfMergeField $mergeFields
     */
    public function __construct($mappingId = null, $headerRow = null, $nameColumn = null, $organisationColumn = null, $street1Column = null, $street2Column = null, $street3Column = null, $postTownColumn = null, $postCodeColumn = null, $description = null, \\NineDotMedia\viapost-php\ArrayOfString $variables = null, $defaultName = null, \\NineDotMedia\viapost-php\ArrayOfMergeField $mergeFields = null)
    {
        $this
            ->setMappingId($mappingId)
            ->setHeaderRow($headerRow)
            ->setNameColumn($nameColumn)
            ->setOrganisationColumn($organisationColumn)
            ->setStreet1Column($street1Column)
            ->setStreet2Column($street2Column)
            ->setStreet3Column($street3Column)
            ->setPostTownColumn($postTownColumn)
            ->setPostCodeColumn($postCodeColumn)
            ->setDescription($description)
            ->setVariables($variables)
            ->setDefaultName($defaultName)
            ->setMergeFields($mergeFields);
    }
    /**
     * Get MappingId value
     * @return int
     */
    public function getMappingId()
    {
        return $this->MappingId;
    }
    /**
     * Set MappingId value
     * @param int $mappingId
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setMappingId($mappingId = null)
    {
        // validation for constraint: int
        if (!is_null($mappingId) && !(is_int($mappingId) || ctype_digit($mappingId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($mappingId, true), gettype($mappingId)), __LINE__);
        }
        $this->MappingId = $mappingId;
        return $this;
    }
    /**
     * Get HeaderRow value
     * @return bool
     */
    public function getHeaderRow()
    {
        return $this->HeaderRow;
    }
    /**
     * Set HeaderRow value
     * @param bool $headerRow
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setHeaderRow($headerRow = null)
    {
        // validation for constraint: boolean
        if (!is_null($headerRow) && !is_bool($headerRow)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($headerRow, true), gettype($headerRow)), __LINE__);
        }
        $this->HeaderRow = $headerRow;
        return $this;
    }
    /**
     * Get NameColumn value
     * @return int
     */
    public function getNameColumn()
    {
        return $this->NameColumn;
    }
    /**
     * Set NameColumn value
     * @param int $nameColumn
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setNameColumn($nameColumn = null)
    {
        // validation for constraint: int
        if (!is_null($nameColumn) && !(is_int($nameColumn) || ctype_digit($nameColumn))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($nameColumn, true), gettype($nameColumn)), __LINE__);
        }
        $this->NameColumn = $nameColumn;
        return $this;
    }
    /**
     * Get OrganisationColumn value
     * @return int
     */
    public function getOrganisationColumn()
    {
        return $this->OrganisationColumn;
    }
    /**
     * Set OrganisationColumn value
     * @param int $organisationColumn
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setOrganisationColumn($organisationColumn = null)
    {
        // validation for constraint: int
        if (!is_null($organisationColumn) && !(is_int($organisationColumn) || ctype_digit($organisationColumn))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($organisationColumn, true), gettype($organisationColumn)), __LINE__);
        }
        $this->OrganisationColumn = $organisationColumn;
        return $this;
    }
    /**
     * Get Street1Column value
     * @return int
     */
    public function getStreet1Column()
    {
        return $this->Street1Column;
    }
    /**
     * Set Street1Column value
     * @param int $street1Column
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setStreet1Column($street1Column = null)
    {
        // validation for constraint: int
        if (!is_null($street1Column) && !(is_int($street1Column) || ctype_digit($street1Column))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($street1Column, true), gettype($street1Column)), __LINE__);
        }
        $this->Street1Column = $street1Column;
        return $this;
    }
    /**
     * Get Street2Column value
     * @return int
     */
    public function getStreet2Column()
    {
        return $this->Street2Column;
    }
    /**
     * Set Street2Column value
     * @param int $street2Column
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setStreet2Column($street2Column = null)
    {
        // validation for constraint: int
        if (!is_null($street2Column) && !(is_int($street2Column) || ctype_digit($street2Column))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($street2Column, true), gettype($street2Column)), __LINE__);
        }
        $this->Street2Column = $street2Column;
        return $this;
    }
    /**
     * Get Street3Column value
     * @return int
     */
    public function getStreet3Column()
    {
        return $this->Street3Column;
    }
    /**
     * Set Street3Column value
     * @param int $street3Column
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setStreet3Column($street3Column = null)
    {
        // validation for constraint: int
        if (!is_null($street3Column) && !(is_int($street3Column) || ctype_digit($street3Column))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($street3Column, true), gettype($street3Column)), __LINE__);
        }
        $this->Street3Column = $street3Column;
        return $this;
    }
    /**
     * Get PostTownColumn value
     * @return int
     */
    public function getPostTownColumn()
    {
        return $this->PostTownColumn;
    }
    /**
     * Set PostTownColumn value
     * @param int $postTownColumn
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setPostTownColumn($postTownColumn = null)
    {
        // validation for constraint: int
        if (!is_null($postTownColumn) && !(is_int($postTownColumn) || ctype_digit($postTownColumn))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($postTownColumn, true), gettype($postTownColumn)), __LINE__);
        }
        $this->PostTownColumn = $postTownColumn;
        return $this;
    }
    /**
     * Get PostCodeColumn value
     * @return int
     */
    public function getPostCodeColumn()
    {
        return $this->PostCodeColumn;
    }
    /**
     * Set PostCodeColumn value
     * @param int $postCodeColumn
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setPostCodeColumn($postCodeColumn = null)
    {
        // validation for constraint: int
        if (!is_null($postCodeColumn) && !(is_int($postCodeColumn) || ctype_digit($postCodeColumn))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($postCodeColumn, true), gettype($postCodeColumn)), __LINE__);
        }
        $this->PostCodeColumn = $postCodeColumn;
        return $this;
    }
    /**
     * Get Description value
     * @return string|null
     */
    public function getDescription()
    {
        return $this->Description;
    }
    /**
     * Set Description value
     * @param string $description
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    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 Variables value
     * @return \\NineDotMedia\viapost-php\ArrayOfString|null
     */
    public function getVariables()
    {
        return $this->Variables;
    }
    /**
     * Set Variables value
     * @param \\NineDotMedia\viapost-php\ArrayOfString $variables
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setVariables(\\NineDotMedia\viapost-php\ArrayOfString $variables = null)
    {
        $this->Variables = $variables;
        return $this;
    }
    /**
     * Get DefaultName value
     * @return string|null
     */
    public function getDefaultName()
    {
        return $this->DefaultName;
    }
    /**
     * Set DefaultName value
     * @param string $defaultName
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setDefaultName($defaultName = null)
    {
        // validation for constraint: string
        if (!is_null($defaultName) && !is_string($defaultName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($defaultName, true), gettype($defaultName)), __LINE__);
        }
        $this->DefaultName = $defaultName;
        return $this;
    }
    /**
     * Get MergeFields value
     * @return \\NineDotMedia\viapost-php\ArrayOfMergeField|null
     */
    public function getMergeFields()
    {
        return $this->MergeFields;
    }
    /**
     * Set MergeFields value
     * @param \\NineDotMedia\viapost-php\ArrayOfMergeField $mergeFields
     * @return \\NineDotMedia\viapost-php\Mapping
     */
    public function setMergeFields(\\NineDotMedia\viapost-php\ArrayOfMergeField $mergeFields = null)
    {
        $this->MergeFields = $mergeFields;
        return $this;
    }
}
