<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for BizAction.Security.DeprecatePortalModules.Request
 * StructType
 * @subpackage Structs
 */
class BizAction_Security_DeprecatePortalModules_Request extends AnyEntity
{
    /**
     * The Admin
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $Admin;
    /**
     * The aSRO
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $aSRO;
    /**
     * The Content
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $Content;
    /**
     * The CRM
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $CRM;
    /**
     * The ExcludeProfileIds
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\ExcludeProfileIds
     */
    public $ExcludeProfileIds;
    /**
     * The Groups
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $Groups;
    /**
     * The Home
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $Home;
    /**
     * The Marketing
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $Marketing;
    /**
     * The Reports
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $Reports;
    /**
     * The Sales
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $Sales;
    /**
     * The ServiceRequests
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $ServiceRequests;
    /**
     * The Tasks
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $Tasks;
    /**
     * Constructor method for BizAction.Security.DeprecatePortalModules.Request
     * @uses BizAction_Security_DeprecatePortalModules_Request::setAdmin()
     * @uses BizAction_Security_DeprecatePortalModules_Request::setASRO()
     * @uses BizAction_Security_DeprecatePortalModules_Request::setContent()
     * @uses BizAction_Security_DeprecatePortalModules_Request::setCRM()
     * @uses BizAction_Security_DeprecatePortalModules_Request::setExcludeProfileIds()
     * @uses BizAction_Security_DeprecatePortalModules_Request::setGroups()
     * @uses BizAction_Security_DeprecatePortalModules_Request::setHome()
     * @uses BizAction_Security_DeprecatePortalModules_Request::setMarketing()
     * @uses BizAction_Security_DeprecatePortalModules_Request::setReports()
     * @uses BizAction_Security_DeprecatePortalModules_Request::setSales()
     * @uses BizAction_Security_DeprecatePortalModules_Request::setServiceRequests()
     * @uses BizAction_Security_DeprecatePortalModules_Request::setTasks()
     * @param bool $admin
     * @param bool $aSRO
     * @param bool $content
     * @param bool $cRM
     * @param \patest\StructType\ExcludeProfileIds $excludeProfileIds
     * @param bool $groups
     * @param bool $home
     * @param bool $marketing
     * @param bool $reports
     * @param bool $sales
     * @param bool $serviceRequests
     * @param bool $tasks
     */
    public function __construct($admin = null, $aSRO = null, $content = null, $cRM = null, \patest\StructType\ExcludeProfileIds $excludeProfileIds = null, $groups = null, $home = null, $marketing = null, $reports = null, $sales = null, $serviceRequests = null, $tasks = null)
    {
        $this
            ->setAdmin($admin)
            ->setASRO($aSRO)
            ->setContent($content)
            ->setCRM($cRM)
            ->setExcludeProfileIds($excludeProfileIds)
            ->setGroups($groups)
            ->setHome($home)
            ->setMarketing($marketing)
            ->setReports($reports)
            ->setSales($sales)
            ->setServiceRequests($serviceRequests)
            ->setTasks($tasks);
    }
    /**
     * Get Admin 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 getAdmin()
    {
        return isset($this->Admin) ? $this->Admin : null;
    }
    /**
     * Set Admin 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 $admin
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setAdmin($admin = null)
    {
        // validation for constraint: boolean
        if (!is_null($admin) && !is_bool($admin)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($admin, true), gettype($admin)), __LINE__);
        }
        if (is_null($admin) || (is_array($admin) && empty($admin))) {
            unset($this->Admin);
        } else {
            $this->Admin = $admin;
        }
        return $this;
    }
    /**
     * Get aSRO 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 getASRO()
    {
        return isset($this->aSRO) ? $this->aSRO : null;
    }
    /**
     * Set aSRO 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 $aSRO
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setASRO($aSRO = null)
    {
        // validation for constraint: boolean
        if (!is_null($aSRO) && !is_bool($aSRO)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($aSRO, true), gettype($aSRO)), __LINE__);
        }
        if (is_null($aSRO) || (is_array($aSRO) && empty($aSRO))) {
            unset($this->aSRO);
        } else {
            $this->aSRO = $aSRO;
        }
        return $this;
    }
    /**
     * Get Content 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 getContent()
    {
        return isset($this->Content) ? $this->Content : null;
    }
    /**
     * Set Content 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 $content
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setContent($content = null)
    {
        // validation for constraint: boolean
        if (!is_null($content) && !is_bool($content)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($content, true), gettype($content)), __LINE__);
        }
        if (is_null($content) || (is_array($content) && empty($content))) {
            unset($this->Content);
        } else {
            $this->Content = $content;
        }
        return $this;
    }
    /**
     * Get CRM 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 getCRM()
    {
        return isset($this->CRM) ? $this->CRM : null;
    }
    /**
     * Set CRM 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 $cRM
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setCRM($cRM = null)
    {
        // validation for constraint: boolean
        if (!is_null($cRM) && !is_bool($cRM)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($cRM, true), gettype($cRM)), __LINE__);
        }
        if (is_null($cRM) || (is_array($cRM) && empty($cRM))) {
            unset($this->CRM);
        } else {
            $this->CRM = $cRM;
        }
        return $this;
    }
    /**
     * Get ExcludeProfileIds 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\ExcludeProfileIds|null
     */
    public function getExcludeProfileIds()
    {
        return isset($this->ExcludeProfileIds) ? $this->ExcludeProfileIds : null;
    }
    /**
     * Set ExcludeProfileIds 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\ExcludeProfileIds $excludeProfileIds
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setExcludeProfileIds(\patest\StructType\ExcludeProfileIds $excludeProfileIds = null)
    {
        if (is_null($excludeProfileIds) || (is_array($excludeProfileIds) && empty($excludeProfileIds))) {
            unset($this->ExcludeProfileIds);
        } else {
            $this->ExcludeProfileIds = $excludeProfileIds;
        }
        return $this;
    }
    /**
     * Get Groups 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 getGroups()
    {
        return isset($this->Groups) ? $this->Groups : null;
    }
    /**
     * Set Groups 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 $groups
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setGroups($groups = null)
    {
        // validation for constraint: boolean
        if (!is_null($groups) && !is_bool($groups)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($groups, true), gettype($groups)), __LINE__);
        }
        if (is_null($groups) || (is_array($groups) && empty($groups))) {
            unset($this->Groups);
        } else {
            $this->Groups = $groups;
        }
        return $this;
    }
    /**
     * Get Home 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 getHome()
    {
        return isset($this->Home) ? $this->Home : null;
    }
    /**
     * Set Home 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 $home
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setHome($home = null)
    {
        // validation for constraint: boolean
        if (!is_null($home) && !is_bool($home)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($home, true), gettype($home)), __LINE__);
        }
        if (is_null($home) || (is_array($home) && empty($home))) {
            unset($this->Home);
        } else {
            $this->Home = $home;
        }
        return $this;
    }
    /**
     * Get Marketing 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 getMarketing()
    {
        return isset($this->Marketing) ? $this->Marketing : null;
    }
    /**
     * Set Marketing 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 $marketing
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setMarketing($marketing = null)
    {
        // validation for constraint: boolean
        if (!is_null($marketing) && !is_bool($marketing)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($marketing, true), gettype($marketing)), __LINE__);
        }
        if (is_null($marketing) || (is_array($marketing) && empty($marketing))) {
            unset($this->Marketing);
        } else {
            $this->Marketing = $marketing;
        }
        return $this;
    }
    /**
     * Get Reports 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 getReports()
    {
        return isset($this->Reports) ? $this->Reports : null;
    }
    /**
     * Set Reports 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 $reports
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setReports($reports = null)
    {
        // validation for constraint: boolean
        if (!is_null($reports) && !is_bool($reports)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($reports, true), gettype($reports)), __LINE__);
        }
        if (is_null($reports) || (is_array($reports) && empty($reports))) {
            unset($this->Reports);
        } else {
            $this->Reports = $reports;
        }
        return $this;
    }
    /**
     * Get Sales 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 getSales()
    {
        return isset($this->Sales) ? $this->Sales : null;
    }
    /**
     * Set Sales 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 $sales
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setSales($sales = null)
    {
        // validation for constraint: boolean
        if (!is_null($sales) && !is_bool($sales)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($sales, true), gettype($sales)), __LINE__);
        }
        if (is_null($sales) || (is_array($sales) && empty($sales))) {
            unset($this->Sales);
        } else {
            $this->Sales = $sales;
        }
        return $this;
    }
    /**
     * Get ServiceRequests 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 getServiceRequests()
    {
        return isset($this->ServiceRequests) ? $this->ServiceRequests : null;
    }
    /**
     * Set ServiceRequests 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 $serviceRequests
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setServiceRequests($serviceRequests = null)
    {
        // validation for constraint: boolean
        if (!is_null($serviceRequests) && !is_bool($serviceRequests)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($serviceRequests, true), gettype($serviceRequests)), __LINE__);
        }
        if (is_null($serviceRequests) || (is_array($serviceRequests) && empty($serviceRequests))) {
            unset($this->ServiceRequests);
        } else {
            $this->ServiceRequests = $serviceRequests;
        }
        return $this;
    }
    /**
     * Get Tasks 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 getTasks()
    {
        return isset($this->Tasks) ? $this->Tasks : null;
    }
    /**
     * Set Tasks 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 $tasks
     * @return \patest\StructType\BizAction_Security_DeprecatePortalModules_Request
     */
    public function setTasks($tasks = null)
    {
        // validation for constraint: boolean
        if (!is_null($tasks) && !is_bool($tasks)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($tasks, true), gettype($tasks)), __LINE__);
        }
        if (is_null($tasks) || (is_array($tasks) && empty($tasks))) {
            unset($this->Tasks);
        } else {
            $this->Tasks = $tasks;
        }
        return $this;
    }
}
