<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for
 * Printing.AuxDataItem.TransactionSeatsSummaryByRows.SummaryItem StructType
 * @subpackage Structs
 */
class Printing_AuxDataItem_TransactionSeatsSummaryByRows_SummaryItem extends Printing_AuxDataItem_TransactionSeatsSummary_BaseSummaryItem
{
    /**
     * The AreaName
     * Meta information extracted from the WSDL
     * - documentation: Calculated.
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $AreaName;
    /**
     * The RowName
     * Meta information extracted from the WSDL
     * - documentation: Calculated.
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $RowName;
    /**
     * The RowOrdinal
     * Meta information extracted from the WSDL
     * - documentation: Calculated.
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $RowOrdinal;
    /**
     * The SeatsSummary
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $SeatsSummary;
    /**
     * The SectorName
     * Meta information extracted from the WSDL
     * - documentation: Calculated.
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $SectorName;
    /**
     * Constructor method for
     * Printing.AuxDataItem.TransactionSeatsSummaryByRows.SummaryItem
     * @uses Printing_AuxDataItem_TransactionSeatsSummaryByRows_SummaryItem::setAreaName()
     * @uses Printing_AuxDataItem_TransactionSeatsSummaryByRows_SummaryItem::setRowName()
     * @uses Printing_AuxDataItem_TransactionSeatsSummaryByRows_SummaryItem::setRowOrdinal()
     * @uses Printing_AuxDataItem_TransactionSeatsSummaryByRows_SummaryItem::setSeatsSummary()
     * @uses Printing_AuxDataItem_TransactionSeatsSummaryByRows_SummaryItem::setSectorName()
     * @param \patest\StructType\GlobalString $areaName
     * @param string $rowName
     * @param int $rowOrdinal
     * @param string $seatsSummary
     * @param \patest\StructType\GlobalString $sectorName
     */
    public function __construct(\patest\StructType\GlobalString $areaName = null, $rowName = null, $rowOrdinal = null, $seatsSummary = null, \patest\StructType\GlobalString $sectorName = null)
    {
        $this
            ->setAreaName($areaName)
            ->setRowName($rowName)
            ->setRowOrdinal($rowOrdinal)
            ->setSeatsSummary($seatsSummary)
            ->setSectorName($sectorName);
    }
    /**
     * Get AreaName value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\GlobalString|null
     */
    public function getAreaName()
    {
        return isset($this->AreaName) ? $this->AreaName : null;
    }
    /**
     * Set AreaName value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\GlobalString $areaName
     * @return \patest\StructType\Printing_AuxDataItem_TransactionSeatsSummaryByRows_SummaryItem
     */
    public function setAreaName(\patest\StructType\GlobalString $areaName = null)
    {
        if (is_null($areaName) || (is_array($areaName) && empty($areaName))) {
            unset($this->AreaName);
        } else {
            $this->AreaName = $areaName;
        }
        return $this;
    }
    /**
     * Get RowName value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getRowName()
    {
        return isset($this->RowName) ? $this->RowName : null;
    }
    /**
     * Set RowName value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $rowName
     * @return \patest\StructType\Printing_AuxDataItem_TransactionSeatsSummaryByRows_SummaryItem
     */
    public function setRowName($rowName = null)
    {
        // validation for constraint: string
        if (!is_null($rowName) && !is_string($rowName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($rowName, true), gettype($rowName)), __LINE__);
        }
        if (is_null($rowName) || (is_array($rowName) && empty($rowName))) {
            unset($this->RowName);
        } else {
            $this->RowName = $rowName;
        }
        return $this;
    }
    /**
     * Get RowOrdinal value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return int|null
     */
    public function getRowOrdinal()
    {
        return isset($this->RowOrdinal) ? $this->RowOrdinal : null;
    }
    /**
     * Set RowOrdinal value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param int $rowOrdinal
     * @return \patest\StructType\Printing_AuxDataItem_TransactionSeatsSummaryByRows_SummaryItem
     */
    public function setRowOrdinal($rowOrdinal = null)
    {
        // validation for constraint: int
        if (!is_null($rowOrdinal) && !(is_int($rowOrdinal) || ctype_digit($rowOrdinal))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($rowOrdinal, true), gettype($rowOrdinal)), __LINE__);
        }
        if (is_null($rowOrdinal) || (is_array($rowOrdinal) && empty($rowOrdinal))) {
            unset($this->RowOrdinal);
        } else {
            $this->RowOrdinal = $rowOrdinal;
        }
        return $this;
    }
    /**
     * Get SeatsSummary value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getSeatsSummary()
    {
        return isset($this->SeatsSummary) ? $this->SeatsSummary : null;
    }
    /**
     * Set SeatsSummary value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $seatsSummary
     * @return \patest\StructType\Printing_AuxDataItem_TransactionSeatsSummaryByRows_SummaryItem
     */
    public function setSeatsSummary($seatsSummary = null)
    {
        // validation for constraint: string
        if (!is_null($seatsSummary) && !is_string($seatsSummary)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($seatsSummary, true), gettype($seatsSummary)), __LINE__);
        }
        if (is_null($seatsSummary) || (is_array($seatsSummary) && empty($seatsSummary))) {
            unset($this->SeatsSummary);
        } else {
            $this->SeatsSummary = $seatsSummary;
        }
        return $this;
    }
    /**
     * Get SectorName value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\GlobalString|null
     */
    public function getSectorName()
    {
        return isset($this->SectorName) ? $this->SectorName : null;
    }
    /**
     * Set SectorName value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\GlobalString $sectorName
     * @return \patest\StructType\Printing_AuxDataItem_TransactionSeatsSummaryByRows_SummaryItem
     */
    public function setSectorName(\patest\StructType\GlobalString $sectorName = null)
    {
        if (is_null($sectorName) || (is_array($sectorName) && empty($sectorName))) {
            unset($this->SectorName);
        } else {
            $this->SectorName = $sectorName;
        }
        return $this;
    }
}
