<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for SessionServiceConfigurationDto StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:SessionServiceConfigurationDto
 * @subpackage Structs
 */
class SessionServiceConfigurationDto extends AbstractStructBase
{
    /**
     * The Content
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Content;
    /**
     * The Description
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Description;
    /**
     * The HasDedicatedUi
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $HasDedicatedUi;
    /**
     * The Id
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Id;
    /**
     * The IsExpress
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $IsExpress;
    /**
     * The JwtToken
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $JwtToken;
    /**
     * The MainType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $MainType;
    /**
     * The Name
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Name;
    /**
     * The PaymentTypes
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfPaymentType
     */
    public $PaymentTypes;
    /**
     * The ProviderId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ProviderId;
    /**
     * Constructor method for SessionServiceConfigurationDto
     * @uses SessionServiceConfigurationDto::setContent()
     * @uses SessionServiceConfigurationDto::setDescription()
     * @uses SessionServiceConfigurationDto::setHasDedicatedUi()
     * @uses SessionServiceConfigurationDto::setId()
     * @uses SessionServiceConfigurationDto::setIsExpress()
     * @uses SessionServiceConfigurationDto::setJwtToken()
     * @uses SessionServiceConfigurationDto::setMainType()
     * @uses SessionServiceConfigurationDto::setName()
     * @uses SessionServiceConfigurationDto::setPaymentTypes()
     * @uses SessionServiceConfigurationDto::setProviderId()
     * @param string $content
     * @param string $description
     * @param bool $hasDedicatedUi
     * @param string $id
     * @param bool $isExpress
     * @param string $jwtToken
     * @param string $mainType
     * @param string $name
     * @param \patest\ArrayType\ArrayOfPaymentType $paymentTypes
     * @param string $providerId
     */
    public function __construct($content = null, $description = null, $hasDedicatedUi = null, $id = null, $isExpress = null, $jwtToken = null, $mainType = null, $name = null, \patest\ArrayType\ArrayOfPaymentType $paymentTypes = null, $providerId = null)
    {
        $this
            ->setContent($content)
            ->setDescription($description)
            ->setHasDedicatedUi($hasDedicatedUi)
            ->setId($id)
            ->setIsExpress($isExpress)
            ->setJwtToken($jwtToken)
            ->setMainType($mainType)
            ->setName($name)
            ->setPaymentTypes($paymentTypes)
            ->setProviderId($providerId);
    }
    /**
     * 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 string|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 string $content
     * @return \patest\StructType\SessionServiceConfigurationDto
     */
    public function setContent($content = null)
    {
        // validation for constraint: string
        if (!is_null($content) && !is_string($content)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %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 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 string|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 string $description
     * @return \patest\StructType\SessionServiceConfigurationDto
     */
    public function setDescription($description = null)
    {
        // validation for constraint: string
        if (!is_null($description) && !is_string($description)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($description, true), gettype($description)), __LINE__);
        }
        if (is_null($description) || (is_array($description) && empty($description))) {
            unset($this->Description);
        } else {
            $this->Description = $description;
        }
        return $this;
    }
    /**
     * Get HasDedicatedUi value
     * @return bool|null
     */
    public function getHasDedicatedUi()
    {
        return $this->HasDedicatedUi;
    }
    /**
     * Set HasDedicatedUi value
     * @param bool $hasDedicatedUi
     * @return \patest\StructType\SessionServiceConfigurationDto
     */
    public function setHasDedicatedUi($hasDedicatedUi = null)
    {
        // validation for constraint: boolean
        if (!is_null($hasDedicatedUi) && !is_bool($hasDedicatedUi)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($hasDedicatedUi, true), gettype($hasDedicatedUi)), __LINE__);
        }
        $this->HasDedicatedUi = $hasDedicatedUi;
        return $this;
    }
    /**
     * Get Id 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 getId()
    {
        return isset($this->Id) ? $this->Id : null;
    }
    /**
     * Set Id 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 $id
     * @return \patest\StructType\SessionServiceConfigurationDto
     */
    public function setId($id = null)
    {
        // validation for constraint: string
        if (!is_null($id) && !is_string($id)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($id, true), gettype($id)), __LINE__);
        }
        if (is_null($id) || (is_array($id) && empty($id))) {
            unset($this->Id);
        } else {
            $this->Id = $id;
        }
        return $this;
    }
    /**
     * Get IsExpress value
     * @return bool|null
     */
    public function getIsExpress()
    {
        return $this->IsExpress;
    }
    /**
     * Set IsExpress value
     * @param bool $isExpress
     * @return \patest\StructType\SessionServiceConfigurationDto
     */
    public function setIsExpress($isExpress = null)
    {
        // validation for constraint: boolean
        if (!is_null($isExpress) && !is_bool($isExpress)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isExpress, true), gettype($isExpress)), __LINE__);
        }
        $this->IsExpress = $isExpress;
        return $this;
    }
    /**
     * Get JwtToken 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 getJwtToken()
    {
        return isset($this->JwtToken) ? $this->JwtToken : null;
    }
    /**
     * Set JwtToken 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 $jwtToken
     * @return \patest\StructType\SessionServiceConfigurationDto
     */
    public function setJwtToken($jwtToken = null)
    {
        // validation for constraint: string
        if (!is_null($jwtToken) && !is_string($jwtToken)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($jwtToken, true), gettype($jwtToken)), __LINE__);
        }
        if (is_null($jwtToken) || (is_array($jwtToken) && empty($jwtToken))) {
            unset($this->JwtToken);
        } else {
            $this->JwtToken = $jwtToken;
        }
        return $this;
    }
    /**
     * Get MainType 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 getMainType()
    {
        return isset($this->MainType) ? $this->MainType : null;
    }
    /**
     * Set MainType 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 $mainType
     * @return \patest\StructType\SessionServiceConfigurationDto
     */
    public function setMainType($mainType = null)
    {
        // validation for constraint: string
        if (!is_null($mainType) && !is_string($mainType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($mainType, true), gettype($mainType)), __LINE__);
        }
        if (is_null($mainType) || (is_array($mainType) && empty($mainType))) {
            unset($this->MainType);
        } else {
            $this->MainType = $mainType;
        }
        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 string|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 string $name
     * @return \patest\StructType\SessionServiceConfigurationDto
     */
    public function setName($name = null)
    {
        // validation for constraint: string
        if (!is_null($name) && !is_string($name)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($name, true), gettype($name)), __LINE__);
        }
        if (is_null($name) || (is_array($name) && empty($name))) {
            unset($this->Name);
        } else {
            $this->Name = $name;
        }
        return $this;
    }
    /**
     * Get PaymentTypes 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\ArrayType\ArrayOfPaymentType|null
     */
    public function getPaymentTypes()
    {
        return isset($this->PaymentTypes) ? $this->PaymentTypes : null;
    }
    /**
     * Set PaymentTypes 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\ArrayType\ArrayOfPaymentType $paymentTypes
     * @return \patest\StructType\SessionServiceConfigurationDto
     */
    public function setPaymentTypes(\patest\ArrayType\ArrayOfPaymentType $paymentTypes = null)
    {
        if (is_null($paymentTypes) || (is_array($paymentTypes) && empty($paymentTypes))) {
            unset($this->PaymentTypes);
        } else {
            $this->PaymentTypes = $paymentTypes;
        }
        return $this;
    }
    /**
     * Get ProviderId 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 getProviderId()
    {
        return isset($this->ProviderId) ? $this->ProviderId : null;
    }
    /**
     * Set ProviderId 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 $providerId
     * @return \patest\StructType\SessionServiceConfigurationDto
     */
    public function setProviderId($providerId = null)
    {
        // validation for constraint: string
        if (!is_null($providerId) && !is_string($providerId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($providerId, true), gettype($providerId)), __LINE__);
        }
        if (is_null($providerId) || (is_array($providerId) && empty($providerId))) {
            unset($this->ProviderId);
        } else {
            $this->ProviderId = $providerId;
        }
        return $this;
    }
}
