<?php

namespace \Losc\CucmBundle\Model\Webservice\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for UpdateSoftKeySetReq StructType
 * @subpackage Structs
 */
class UpdateSoftKeySetReq extends NameAndGUIDRequest
{
    /**
     * The removeCallStates
     * Meta information extracted from the WSDL
     * - choice: removeCallStates | addCallStates | callStates
     * - choiceMaxOccurs: 1
     * - choiceMinOccurs: 0
     * - minOccurs: 0
     * @var \\Losc\CucmBundle\Model\Webservice\StructType\RemoveCallStates
     */
    public $removeCallStates;
    /**
     * The addCallStates
     * Meta information extracted from the WSDL
     * - choice: removeCallStates | addCallStates | callStates
     * - choiceMaxOccurs: 1
     * - choiceMinOccurs: 0
     * - minOccurs: 0
     * @var \\Losc\CucmBundle\Model\Webservice\StructType\AddCallStates
     */
    public $addCallStates;
    /**
     * The callStates
     * Meta information extracted from the WSDL
     * - choice: removeCallStates | addCallStates | callStates
     * - choiceMaxOccurs: 1
     * - choiceMinOccurs: 0
     * - minOccurs: 0
     * @var \\Losc\CucmBundle\Model\Webservice\StructType\CallStates
     */
    public $callStates;
    /**
     * Constructor method for UpdateSoftKeySetReq
     * @uses UpdateSoftKeySetReq::setRemoveCallStates()
     * @uses UpdateSoftKeySetReq::setAddCallStates()
     * @uses UpdateSoftKeySetReq::setCallStates()
     * @param \\Losc\CucmBundle\Model\Webservice\StructType\RemoveCallStates $removeCallStates
     * @param \\Losc\CucmBundle\Model\Webservice\StructType\AddCallStates $addCallStates
     * @param \\Losc\CucmBundle\Model\Webservice\StructType\CallStates $callStates
     */
    public function __construct(\\Losc\CucmBundle\Model\Webservice\StructType\RemoveCallStates $removeCallStates = null, \\Losc\CucmBundle\Model\Webservice\StructType\AddCallStates $addCallStates = null, \\Losc\CucmBundle\Model\Webservice\StructType\CallStates $callStates = null)
    {
        $this
            ->setRemoveCallStates($removeCallStates)
            ->setAddCallStates($addCallStates)
            ->setCallStates($callStates);
    }
    /**
     * Get removeCallStates value
     * @return \\Losc\CucmBundle\Model\Webservice\StructType\RemoveCallStates|null
     */
    public function getRemoveCallStates()
    {
        return isset($this->removeCallStates) ? $this->removeCallStates : null;
    }
    /**
     * Set removeCallStates value
     * This property belongs to a choice that allows only one property to exist. It is
     * therefore removable from the request, consequently if the value assigned to this
     * property is null, the property is removed from this object
     * @param \\Losc\CucmBundle\Model\Webservice\StructType\RemoveCallStates $removeCallStates
     * @return \\Losc\CucmBundle\Model\Webservice\StructType\UpdateSoftKeySetReq
     */
    public function setRemoveCallStates(\\Losc\CucmBundle\Model\Webservice\StructType\RemoveCallStates $removeCallStates = null)
    {
        if (is_null($removeCallStates) || (is_array($removeCallStates) && empty($removeCallStates))) {
            unset($this->removeCallStates);
        } else {
            $this->removeCallStates = $removeCallStates;
        }
        return $this;
    }
    /**
     * Get addCallStates value
     * @return \\Losc\CucmBundle\Model\Webservice\StructType\AddCallStates|null
     */
    public function getAddCallStates()
    {
        return isset($this->addCallStates) ? $this->addCallStates : null;
    }
    /**
     * Set addCallStates value
     * This property belongs to a choice that allows only one property to exist. It is
     * therefore removable from the request, consequently if the value assigned to this
     * property is null, the property is removed from this object
     * @param \\Losc\CucmBundle\Model\Webservice\StructType\AddCallStates $addCallStates
     * @return \\Losc\CucmBundle\Model\Webservice\StructType\UpdateSoftKeySetReq
     */
    public function setAddCallStates(\\Losc\CucmBundle\Model\Webservice\StructType\AddCallStates $addCallStates = null)
    {
        if (is_null($addCallStates) || (is_array($addCallStates) && empty($addCallStates))) {
            unset($this->addCallStates);
        } else {
            $this->addCallStates = $addCallStates;
        }
        return $this;
    }
    /**
     * Get callStates value
     * @return \\Losc\CucmBundle\Model\Webservice\StructType\CallStates|null
     */
    public function getCallStates()
    {
        return isset($this->callStates) ? $this->callStates : null;
    }
    /**
     * Set callStates value
     * This property belongs to a choice that allows only one property to exist. It is
     * therefore removable from the request, consequently if the value assigned to this
     * property is null, the property is removed from this object
     * @param \\Losc\CucmBundle\Model\Webservice\StructType\CallStates $callStates
     * @return \\Losc\CucmBundle\Model\Webservice\StructType\UpdateSoftKeySetReq
     */
    public function setCallStates(\\Losc\CucmBundle\Model\Webservice\StructType\CallStates $callStates = null)
    {
        if (is_null($callStates) || (is_array($callStates) && empty($callStates))) {
            unset($this->callStates);
        } else {
            $this->callStates = $callStates;
        }
        return $this;
    }
}
