<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for BizAction.Reporting.Report.SaveAs.Request StructType
 * @subpackage Structs
 */
class BizAction_Reporting_Report_SaveAs_Request extends Reporting_ReportProperties
{
    /**
     * The CanBeNewInstance
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $CanBeNewInstance;
    /**
     * The CanBeSystem
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $CanBeSystem;
    /**
     * The CreateAsSystem
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $CreateAsSystem;
    /**
     * The CreateNewReportInstance
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $CreateNewReportInstance;
    /**
     * The FilteredCategories
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\FilteredCategories
     */
    public $FilteredCategories;
    /**
     * The OriginalReport
     * Meta information extracted from the WSDL
     * - documentation: Calculated.
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Reporting_InternalReportDefinition
     */
    public $OriginalReport;
    /**
     * The RequestEntityData
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $RequestEntityData;
    /**
     * Constructor method for BizAction.Reporting.Report.SaveAs.Request
     * @uses BizAction_Reporting_Report_SaveAs_Request::setCanBeNewInstance()
     * @uses BizAction_Reporting_Report_SaveAs_Request::setCanBeSystem()
     * @uses BizAction_Reporting_Report_SaveAs_Request::setCreateAsSystem()
     * @uses BizAction_Reporting_Report_SaveAs_Request::setCreateNewReportInstance()
     * @uses BizAction_Reporting_Report_SaveAs_Request::setFilteredCategories()
     * @uses BizAction_Reporting_Report_SaveAs_Request::setOriginalReport()
     * @uses BizAction_Reporting_Report_SaveAs_Request::setRequestEntityData()
     * @param bool $canBeNewInstance
     * @param bool $canBeSystem
     * @param bool $createAsSystem
     * @param bool $createNewReportInstance
     * @param \patest\StructType\FilteredCategories $filteredCategories
     * @param \patest\StructType\Reporting_InternalReportDefinition $originalReport
     * @param string $requestEntityData
     */
    public function __construct($canBeNewInstance = null, $canBeSystem = null, $createAsSystem = null, $createNewReportInstance = null, \patest\StructType\FilteredCategories $filteredCategories = null, \patest\StructType\Reporting_InternalReportDefinition $originalReport = null, $requestEntityData = null)
    {
        $this
            ->setCanBeNewInstance($canBeNewInstance)
            ->setCanBeSystem($canBeSystem)
            ->setCreateAsSystem($createAsSystem)
            ->setCreateNewReportInstance($createNewReportInstance)
            ->setFilteredCategories($filteredCategories)
            ->setOriginalReport($originalReport)
            ->setRequestEntityData($requestEntityData);
    }
    /**
     * Get CanBeNewInstance 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 bool|null
     */
    public function getCanBeNewInstance()
    {
        return isset($this->CanBeNewInstance) ? $this->CanBeNewInstance : null;
    }
    /**
     * Set CanBeNewInstance 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 bool $canBeNewInstance
     * @return \patest\StructType\BizAction_Reporting_Report_SaveAs_Request
     */
    public function setCanBeNewInstance($canBeNewInstance = null)
    {
        // validation for constraint: boolean
        if (!is_null($canBeNewInstance) && !is_bool($canBeNewInstance)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($canBeNewInstance, true), gettype($canBeNewInstance)), __LINE__);
        }
        if (is_null($canBeNewInstance) || (is_array($canBeNewInstance) && empty($canBeNewInstance))) {
            unset($this->CanBeNewInstance);
        } else {
            $this->CanBeNewInstance = $canBeNewInstance;
        }
        return $this;
    }
    /**
     * Get CanBeSystem 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 bool|null
     */
    public function getCanBeSystem()
    {
        return isset($this->CanBeSystem) ? $this->CanBeSystem : null;
    }
    /**
     * Set CanBeSystem 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 bool $canBeSystem
     * @return \patest\StructType\BizAction_Reporting_Report_SaveAs_Request
     */
    public function setCanBeSystem($canBeSystem = null)
    {
        // validation for constraint: boolean
        if (!is_null($canBeSystem) && !is_bool($canBeSystem)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($canBeSystem, true), gettype($canBeSystem)), __LINE__);
        }
        if (is_null($canBeSystem) || (is_array($canBeSystem) && empty($canBeSystem))) {
            unset($this->CanBeSystem);
        } else {
            $this->CanBeSystem = $canBeSystem;
        }
        return $this;
    }
    /**
     * Get CreateAsSystem 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 bool|null
     */
    public function getCreateAsSystem()
    {
        return isset($this->CreateAsSystem) ? $this->CreateAsSystem : null;
    }
    /**
     * Set CreateAsSystem 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 bool $createAsSystem
     * @return \patest\StructType\BizAction_Reporting_Report_SaveAs_Request
     */
    public function setCreateAsSystem($createAsSystem = null)
    {
        // validation for constraint: boolean
        if (!is_null($createAsSystem) && !is_bool($createAsSystem)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($createAsSystem, true), gettype($createAsSystem)), __LINE__);
        }
        if (is_null($createAsSystem) || (is_array($createAsSystem) && empty($createAsSystem))) {
            unset($this->CreateAsSystem);
        } else {
            $this->CreateAsSystem = $createAsSystem;
        }
        return $this;
    }
    /**
     * Get CreateNewReportInstance 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 bool|null
     */
    public function getCreateNewReportInstance()
    {
        return isset($this->CreateNewReportInstance) ? $this->CreateNewReportInstance : null;
    }
    /**
     * Set CreateNewReportInstance 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 bool $createNewReportInstance
     * @return \patest\StructType\BizAction_Reporting_Report_SaveAs_Request
     */
    public function setCreateNewReportInstance($createNewReportInstance = null)
    {
        // validation for constraint: boolean
        if (!is_null($createNewReportInstance) && !is_bool($createNewReportInstance)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($createNewReportInstance, true), gettype($createNewReportInstance)), __LINE__);
        }
        if (is_null($createNewReportInstance) || (is_array($createNewReportInstance) && empty($createNewReportInstance))) {
            unset($this->CreateNewReportInstance);
        } else {
            $this->CreateNewReportInstance = $createNewReportInstance;
        }
        return $this;
    }
    /**
     * Get FilteredCategories 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\FilteredCategories|null
     */
    public function getFilteredCategories()
    {
        return isset($this->FilteredCategories) ? $this->FilteredCategories : null;
    }
    /**
     * Set FilteredCategories 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\FilteredCategories $filteredCategories
     * @return \patest\StructType\BizAction_Reporting_Report_SaveAs_Request
     */
    public function setFilteredCategories(\patest\StructType\FilteredCategories $filteredCategories = null)
    {
        if (is_null($filteredCategories) || (is_array($filteredCategories) && empty($filteredCategories))) {
            unset($this->FilteredCategories);
        } else {
            $this->FilteredCategories = $filteredCategories;
        }
        return $this;
    }
    /**
     * Get OriginalReport 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\Reporting_InternalReportDefinition|null
     */
    public function getOriginalReport()
    {
        return isset($this->OriginalReport) ? $this->OriginalReport : null;
    }
    /**
     * Set OriginalReport 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\Reporting_InternalReportDefinition $originalReport
     * @return \patest\StructType\BizAction_Reporting_Report_SaveAs_Request
     */
    public function setOriginalReport(\patest\StructType\Reporting_InternalReportDefinition $originalReport = null)
    {
        if (is_null($originalReport) || (is_array($originalReport) && empty($originalReport))) {
            unset($this->OriginalReport);
        } else {
            $this->OriginalReport = $originalReport;
        }
        return $this;
    }
    /**
     * Get RequestEntityData 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 getRequestEntityData()
    {
        return isset($this->RequestEntityData) ? $this->RequestEntityData : null;
    }
    /**
     * Set RequestEntityData 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 $requestEntityData
     * @return \patest\StructType\BizAction_Reporting_Report_SaveAs_Request
     */
    public function setRequestEntityData($requestEntityData = null)
    {
        // validation for constraint: string
        if (!is_null($requestEntityData) && !is_string($requestEntityData)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($requestEntityData, true), gettype($requestEntityData)), __LINE__);
        }
        if (is_null($requestEntityData) || (is_array($requestEntityData) && empty($requestEntityData))) {
            unset($this->RequestEntityData);
        } else {
            $this->RequestEntityData = $requestEntityData;
        }
        return $this;
    }
}
