<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for BizAction.Security.BulkEditProfiles.Request StructType
 * @subpackage Structs
 */
class BizAction_Security_BulkEditProfiles_Request extends AnyEntity
{
    /**
     * The PermissionsParameterChanges
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange
     */
    public $PermissionsParameterChanges;
    /**
     * The ProfileIds
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\ProfileIds
     */
    public $ProfileIds;
    /**
     * The SalesOptionsParameterChanges
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange
     */
    public $SalesOptionsParameterChanges;
    /**
     * Constructor method for BizAction.Security.BulkEditProfiles.Request
     * @uses BizAction_Security_BulkEditProfiles_Request::setPermissionsParameterChanges()
     * @uses BizAction_Security_BulkEditProfiles_Request::setProfileIds()
     * @uses BizAction_Security_BulkEditProfiles_Request::setSalesOptionsParameterChanges()
     * @param \patest\StructType\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange $permissionsParameterChanges
     * @param \patest\StructType\ProfileIds $profileIds
     * @param \patest\StructType\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange $salesOptionsParameterChanges
     */
    public function __construct(\patest\StructType\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange $permissionsParameterChanges = null, \patest\StructType\ProfileIds $profileIds = null, \patest\StructType\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange $salesOptionsParameterChanges = null)
    {
        $this
            ->setPermissionsParameterChanges($permissionsParameterChanges)
            ->setProfileIds($profileIds)
            ->setSalesOptionsParameterChanges($salesOptionsParameterChanges);
    }
    /**
     * Get PermissionsParameterChanges 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\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange|null
     */
    public function getPermissionsParameterChanges()
    {
        return isset($this->PermissionsParameterChanges) ? $this->PermissionsParameterChanges : null;
    }
    /**
     * Set PermissionsParameterChanges 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\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange $permissionsParameterChanges
     * @return \patest\StructType\BizAction_Security_BulkEditProfiles_Request
     */
    public function setPermissionsParameterChanges(\patest\StructType\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange $permissionsParameterChanges = null)
    {
        if (is_null($permissionsParameterChanges) || (is_array($permissionsParameterChanges) && empty($permissionsParameterChanges))) {
            unset($this->PermissionsParameterChanges);
        } else {
            $this->PermissionsParameterChanges = $permissionsParameterChanges;
        }
        return $this;
    }
    /**
     * Get ProfileIds 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\ProfileIds|null
     */
    public function getProfileIds()
    {
        return isset($this->ProfileIds) ? $this->ProfileIds : null;
    }
    /**
     * Set ProfileIds 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\ProfileIds $profileIds
     * @return \patest\StructType\BizAction_Security_BulkEditProfiles_Request
     */
    public function setProfileIds(\patest\StructType\ProfileIds $profileIds = null)
    {
        if (is_null($profileIds) || (is_array($profileIds) && empty($profileIds))) {
            unset($this->ProfileIds);
        } else {
            $this->ProfileIds = $profileIds;
        }
        return $this;
    }
    /**
     * Get SalesOptionsParameterChanges 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\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange|null
     */
    public function getSalesOptionsParameterChanges()
    {
        return isset($this->SalesOptionsParameterChanges) ? $this->SalesOptionsParameterChanges : null;
    }
    /**
     * Set SalesOptionsParameterChanges 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\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange $salesOptionsParameterChanges
     * @return \patest\StructType\BizAction_Security_BulkEditProfiles_Request
     */
    public function setSalesOptionsParameterChanges(\patest\StructType\RecordSetOfBizAction_Security_BulkEditProfiles_ParameterChange $salesOptionsParameterChanges = null)
    {
        if (is_null($salesOptionsParameterChanges) || (is_array($salesOptionsParameterChanges) && empty($salesOptionsParameterChanges))) {
            unset($this->SalesOptionsParameterChanges);
        } else {
            $this->SalesOptionsParameterChanges = $salesOptionsParameterChanges;
        }
        return $this;
    }
}
