<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Foundation.JournalEntryFilter StructType
 * @subpackage Structs
 */
class Foundation_JournalEntryFilter extends FilterEntity
{
    /**
     * The FromDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $FromDate;
    /**
     * The IsShowAudits
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $IsShowAudits;
    /**
     * The IsShowErrors
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $IsShowErrors;
    /**
     * The IsShowInfos
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $IsShowInfos;
    /**
     * The IsShowWarnings
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $IsShowWarnings;
    /**
     * The ToDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ToDate;
    /**
     * Constructor method for Foundation.JournalEntryFilter
     * @uses Foundation_JournalEntryFilter::setFromDate()
     * @uses Foundation_JournalEntryFilter::setIsShowAudits()
     * @uses Foundation_JournalEntryFilter::setIsShowErrors()
     * @uses Foundation_JournalEntryFilter::setIsShowInfos()
     * @uses Foundation_JournalEntryFilter::setIsShowWarnings()
     * @uses Foundation_JournalEntryFilter::setToDate()
     * @param string $fromDate
     * @param bool $isShowAudits
     * @param bool $isShowErrors
     * @param bool $isShowInfos
     * @param bool $isShowWarnings
     * @param string $toDate
     */
    public function __construct($fromDate = null, $isShowAudits = null, $isShowErrors = null, $isShowInfos = null, $isShowWarnings = null, $toDate = null)
    {
        $this
            ->setFromDate($fromDate)
            ->setIsShowAudits($isShowAudits)
            ->setIsShowErrors($isShowErrors)
            ->setIsShowInfos($isShowInfos)
            ->setIsShowWarnings($isShowWarnings)
            ->setToDate($toDate);
    }
    /**
     * Get FromDate 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 getFromDate()
    {
        return isset($this->FromDate) ? $this->FromDate : null;
    }
    /**
     * Set FromDate 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 $fromDate
     * @return \patest\StructType\Foundation_JournalEntryFilter
     */
    public function setFromDate($fromDate = null)
    {
        // validation for constraint: string
        if (!is_null($fromDate) && !is_string($fromDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($fromDate, true), gettype($fromDate)), __LINE__);
        }
        if (is_null($fromDate) || (is_array($fromDate) && empty($fromDate))) {
            unset($this->FromDate);
        } else {
            $this->FromDate = $fromDate;
        }
        return $this;
    }
    /**
     * Get IsShowAudits 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 getIsShowAudits()
    {
        return isset($this->IsShowAudits) ? $this->IsShowAudits : null;
    }
    /**
     * Set IsShowAudits 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 $isShowAudits
     * @return \patest\StructType\Foundation_JournalEntryFilter
     */
    public function setIsShowAudits($isShowAudits = null)
    {
        // validation for constraint: boolean
        if (!is_null($isShowAudits) && !is_bool($isShowAudits)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isShowAudits, true), gettype($isShowAudits)), __LINE__);
        }
        if (is_null($isShowAudits) || (is_array($isShowAudits) && empty($isShowAudits))) {
            unset($this->IsShowAudits);
        } else {
            $this->IsShowAudits = $isShowAudits;
        }
        return $this;
    }
    /**
     * Get IsShowErrors 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 getIsShowErrors()
    {
        return isset($this->IsShowErrors) ? $this->IsShowErrors : null;
    }
    /**
     * Set IsShowErrors 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 $isShowErrors
     * @return \patest\StructType\Foundation_JournalEntryFilter
     */
    public function setIsShowErrors($isShowErrors = null)
    {
        // validation for constraint: boolean
        if (!is_null($isShowErrors) && !is_bool($isShowErrors)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isShowErrors, true), gettype($isShowErrors)), __LINE__);
        }
        if (is_null($isShowErrors) || (is_array($isShowErrors) && empty($isShowErrors))) {
            unset($this->IsShowErrors);
        } else {
            $this->IsShowErrors = $isShowErrors;
        }
        return $this;
    }
    /**
     * Get IsShowInfos 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 getIsShowInfos()
    {
        return isset($this->IsShowInfos) ? $this->IsShowInfos : null;
    }
    /**
     * Set IsShowInfos 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 $isShowInfos
     * @return \patest\StructType\Foundation_JournalEntryFilter
     */
    public function setIsShowInfos($isShowInfos = null)
    {
        // validation for constraint: boolean
        if (!is_null($isShowInfos) && !is_bool($isShowInfos)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isShowInfos, true), gettype($isShowInfos)), __LINE__);
        }
        if (is_null($isShowInfos) || (is_array($isShowInfos) && empty($isShowInfos))) {
            unset($this->IsShowInfos);
        } else {
            $this->IsShowInfos = $isShowInfos;
        }
        return $this;
    }
    /**
     * Get IsShowWarnings 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 getIsShowWarnings()
    {
        return isset($this->IsShowWarnings) ? $this->IsShowWarnings : null;
    }
    /**
     * Set IsShowWarnings 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 $isShowWarnings
     * @return \patest\StructType\Foundation_JournalEntryFilter
     */
    public function setIsShowWarnings($isShowWarnings = null)
    {
        // validation for constraint: boolean
        if (!is_null($isShowWarnings) && !is_bool($isShowWarnings)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isShowWarnings, true), gettype($isShowWarnings)), __LINE__);
        }
        if (is_null($isShowWarnings) || (is_array($isShowWarnings) && empty($isShowWarnings))) {
            unset($this->IsShowWarnings);
        } else {
            $this->IsShowWarnings = $isShowWarnings;
        }
        return $this;
    }
    /**
     * Get ToDate 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 getToDate()
    {
        return isset($this->ToDate) ? $this->ToDate : null;
    }
    /**
     * Set ToDate 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 $toDate
     * @return \patest\StructType\Foundation_JournalEntryFilter
     */
    public function setToDate($toDate = null)
    {
        // validation for constraint: string
        if (!is_null($toDate) && !is_string($toDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($toDate, true), gettype($toDate)), __LINE__);
        }
        if (is_null($toDate) || (is_array($toDate) && empty($toDate))) {
            unset($this->ToDate);
        } else {
            $this->ToDate = $toDate;
        }
        return $this;
    }
}
