<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Security.UserJournalCurrentActivityFilter StructType
 * @subpackage Structs
 */
class Security_UserJournalCurrentActivityFilter extends FilterEntity
{
    /**
     * The Session
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Session;
    /**
     * The StartDateFrom
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StartDateFrom;
    /**
     * The StartDateTo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StartDateTo;
    /**
     * Constructor method for Security.UserJournalCurrentActivityFilter
     * @uses Security_UserJournalCurrentActivityFilter::setSession()
     * @uses Security_UserJournalCurrentActivityFilter::setStartDateFrom()
     * @uses Security_UserJournalCurrentActivityFilter::setStartDateTo()
     * @param string $session
     * @param string $startDateFrom
     * @param string $startDateTo
     */
    public function __construct($session = null, $startDateFrom = null, $startDateTo = null)
    {
        $this
            ->setSession($session)
            ->setStartDateFrom($startDateFrom)
            ->setStartDateTo($startDateTo);
    }
    /**
     * Get Session 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 getSession()
    {
        return isset($this->Session) ? $this->Session : null;
    }
    /**
     * Set Session 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 $session
     * @return \patest\StructType\Security_UserJournalCurrentActivityFilter
     */
    public function setSession($session = null)
    {
        // validation for constraint: string
        if (!is_null($session) && !is_string($session)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($session, true), gettype($session)), __LINE__);
        }
        if (is_null($session) || (is_array($session) && empty($session))) {
            unset($this->Session);
        } else {
            $this->Session = $session;
        }
        return $this;
    }
    /**
     * Get StartDateFrom 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 getStartDateFrom()
    {
        return isset($this->StartDateFrom) ? $this->StartDateFrom : null;
    }
    /**
     * Set StartDateFrom 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 $startDateFrom
     * @return \patest\StructType\Security_UserJournalCurrentActivityFilter
     */
    public function setStartDateFrom($startDateFrom = null)
    {
        // validation for constraint: string
        if (!is_null($startDateFrom) && !is_string($startDateFrom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($startDateFrom, true), gettype($startDateFrom)), __LINE__);
        }
        if (is_null($startDateFrom) || (is_array($startDateFrom) && empty($startDateFrom))) {
            unset($this->StartDateFrom);
        } else {
            $this->StartDateFrom = $startDateFrom;
        }
        return $this;
    }
    /**
     * Get StartDateTo 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 getStartDateTo()
    {
        return isset($this->StartDateTo) ? $this->StartDateTo : null;
    }
    /**
     * Set StartDateTo 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 $startDateTo
     * @return \patest\StructType\Security_UserJournalCurrentActivityFilter
     */
    public function setStartDateTo($startDateTo = null)
    {
        // validation for constraint: string
        if (!is_null($startDateTo) && !is_string($startDateTo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($startDateTo, true), gettype($startDateTo)), __LINE__);
        }
        if (is_null($startDateTo) || (is_array($startDateTo) && empty($startDateTo))) {
            unset($this->StartDateTo);
        } else {
            $this->StartDateTo = $startDateTo;
        }
        return $this;
    }
}
