<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Printing.PrintableItem.InsurancePolicy StructType
 * @subpackage Structs
 */
class Printing_PrintableItem_InsurancePolicy extends Printing_PrintableItem_Base
{
    /**
     * The AppliesTo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $AppliesTo;
    /**
     * The Description
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $Description;
    /**
     * The MaxItemPriceToInsure
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $MaxItemPriceToInsure;
    /**
     * The MaxItemsToInsure
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $MaxItemsToInsure;
    /**
     * The Media_BriefOverview
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $Media_BriefOverview;
    /**
     * The Media_DetailOverview
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $Media_DetailOverview;
    /**
     * The Media_ReviewUrl
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $Media_ReviewUrl;
    /**
     * The Name
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $Name;
    /**
     * Constructor method for Printing.PrintableItem.InsurancePolicy
     * @uses Printing_PrintableItem_InsurancePolicy::setAppliesTo()
     * @uses Printing_PrintableItem_InsurancePolicy::setDescription()
     * @uses Printing_PrintableItem_InsurancePolicy::setMaxItemPriceToInsure()
     * @uses Printing_PrintableItem_InsurancePolicy::setMaxItemsToInsure()
     * @uses Printing_PrintableItem_InsurancePolicy::setMedia_BriefOverview()
     * @uses Printing_PrintableItem_InsurancePolicy::setMedia_DetailOverview()
     * @uses Printing_PrintableItem_InsurancePolicy::setMedia_ReviewUrl()
     * @uses Printing_PrintableItem_InsurancePolicy::setName()
     * @param \patest\StructType\GlobalString $appliesTo
     * @param \patest\StructType\GlobalString $description
     * @param \patest\StructType\Money $maxItemPriceToInsure
     * @param int $maxItemsToInsure
     * @param \patest\StructType\GlobalString $media_BriefOverview
     * @param \patest\StructType\GlobalString $media_DetailOverview
     * @param \patest\StructType\GlobalString $media_ReviewUrl
     * @param \patest\StructType\GlobalString $name
     */
    public function __construct(\patest\StructType\GlobalString $appliesTo = null, \patest\StructType\GlobalString $description = null, \patest\StructType\Money $maxItemPriceToInsure = null, $maxItemsToInsure = null, \patest\StructType\GlobalString $media_BriefOverview = null, \patest\StructType\GlobalString $media_DetailOverview = null, \patest\StructType\GlobalString $media_ReviewUrl = null, \patest\StructType\GlobalString $name = null)
    {
        $this
            ->setAppliesTo($appliesTo)
            ->setDescription($description)
            ->setMaxItemPriceToInsure($maxItemPriceToInsure)
            ->setMaxItemsToInsure($maxItemsToInsure)
            ->setMedia_BriefOverview($media_BriefOverview)
            ->setMedia_DetailOverview($media_DetailOverview)
            ->setMedia_ReviewUrl($media_ReviewUrl)
            ->setName($name);
    }
    /**
     * Get AppliesTo 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 getAppliesTo()
    {
        return isset($this->AppliesTo) ? $this->AppliesTo : null;
    }
    /**
     * Set AppliesTo 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 $appliesTo
     * @return \patest\StructType\Printing_PrintableItem_InsurancePolicy
     */
    public function setAppliesTo(\patest\StructType\GlobalString $appliesTo = null)
    {
        if (is_null($appliesTo) || (is_array($appliesTo) && empty($appliesTo))) {
            unset($this->AppliesTo);
        } else {
            $this->AppliesTo = $appliesTo;
        }
        return $this;
    }
    /**
     * Get Description 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 getDescription()
    {
        return isset($this->Description) ? $this->Description : null;
    }
    /**
     * Set Description 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 $description
     * @return \patest\StructType\Printing_PrintableItem_InsurancePolicy
     */
    public function setDescription(\patest\StructType\GlobalString $description = null)
    {
        if (is_null($description) || (is_array($description) && empty($description))) {
            unset($this->Description);
        } else {
            $this->Description = $description;
        }
        return $this;
    }
    /**
     * Get MaxItemPriceToInsure 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\Money|null
     */
    public function getMaxItemPriceToInsure()
    {
        return isset($this->MaxItemPriceToInsure) ? $this->MaxItemPriceToInsure : null;
    }
    /**
     * Set MaxItemPriceToInsure 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\Money $maxItemPriceToInsure
     * @return \patest\StructType\Printing_PrintableItem_InsurancePolicy
     */
    public function setMaxItemPriceToInsure(\patest\StructType\Money $maxItemPriceToInsure = null)
    {
        if (is_null($maxItemPriceToInsure) || (is_array($maxItemPriceToInsure) && empty($maxItemPriceToInsure))) {
            unset($this->MaxItemPriceToInsure);
        } else {
            $this->MaxItemPriceToInsure = $maxItemPriceToInsure;
        }
        return $this;
    }
    /**
     * Get MaxItemsToInsure 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 getMaxItemsToInsure()
    {
        return isset($this->MaxItemsToInsure) ? $this->MaxItemsToInsure : null;
    }
    /**
     * Set MaxItemsToInsure 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 $maxItemsToInsure
     * @return \patest\StructType\Printing_PrintableItem_InsurancePolicy
     */
    public function setMaxItemsToInsure($maxItemsToInsure = null)
    {
        // validation for constraint: int
        if (!is_null($maxItemsToInsure) && !(is_int($maxItemsToInsure) || ctype_digit($maxItemsToInsure))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($maxItemsToInsure, true), gettype($maxItemsToInsure)), __LINE__);
        }
        if (is_null($maxItemsToInsure) || (is_array($maxItemsToInsure) && empty($maxItemsToInsure))) {
            unset($this->MaxItemsToInsure);
        } else {
            $this->MaxItemsToInsure = $maxItemsToInsure;
        }
        return $this;
    }
    /**
     * Get Media_BriefOverview 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 getMedia_BriefOverview()
    {
        return isset($this->Media_BriefOverview) ? $this->Media_BriefOverview : null;
    }
    /**
     * Set Media_BriefOverview 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 $media_BriefOverview
     * @return \patest\StructType\Printing_PrintableItem_InsurancePolicy
     */
    public function setMedia_BriefOverview(\patest\StructType\GlobalString $media_BriefOverview = null)
    {
        if (is_null($media_BriefOverview) || (is_array($media_BriefOverview) && empty($media_BriefOverview))) {
            unset($this->Media_BriefOverview);
        } else {
            $this->Media_BriefOverview = $media_BriefOverview;
        }
        return $this;
    }
    /**
     * Get Media_DetailOverview 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 getMedia_DetailOverview()
    {
        return isset($this->Media_DetailOverview) ? $this->Media_DetailOverview : null;
    }
    /**
     * Set Media_DetailOverview 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 $media_DetailOverview
     * @return \patest\StructType\Printing_PrintableItem_InsurancePolicy
     */
    public function setMedia_DetailOverview(\patest\StructType\GlobalString $media_DetailOverview = null)
    {
        if (is_null($media_DetailOverview) || (is_array($media_DetailOverview) && empty($media_DetailOverview))) {
            unset($this->Media_DetailOverview);
        } else {
            $this->Media_DetailOverview = $media_DetailOverview;
        }
        return $this;
    }
    /**
     * Get Media_ReviewUrl 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 getMedia_ReviewUrl()
    {
        return isset($this->Media_ReviewUrl) ? $this->Media_ReviewUrl : null;
    }
    /**
     * Set Media_ReviewUrl 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 $media_ReviewUrl
     * @return \patest\StructType\Printing_PrintableItem_InsurancePolicy
     */
    public function setMedia_ReviewUrl(\patest\StructType\GlobalString $media_ReviewUrl = null)
    {
        if (is_null($media_ReviewUrl) || (is_array($media_ReviewUrl) && empty($media_ReviewUrl))) {
            unset($this->Media_ReviewUrl);
        } else {
            $this->Media_ReviewUrl = $media_ReviewUrl;
        }
        return $this;
    }
    /**
     * Get Name 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 getName()
    {
        return isset($this->Name) ? $this->Name : null;
    }
    /**
     * Set Name 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 $name
     * @return \patest\StructType\Printing_PrintableItem_InsurancePolicy
     */
    public function setName(\patest\StructType\GlobalString $name = null)
    {
        if (is_null($name) || (is_array($name) && empty($name))) {
            unset($this->Name);
        } else {
            $this->Name = $name;
        }
        return $this;
    }
}
