<?php

namespace SGCIS\Struct;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for TOU Struct
 * @subpackage Structs
 */
class TOU extends BaseDTO
{
    /**
     * The TOUID
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $TOUID;
    /**
     * The TOUChargeScheduleID
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $TOUChargeScheduleID;
    /**
     * The Sun
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $Sun;
    /**
     * The Mon
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $Mon;
    /**
     * The Tue
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $Tue;
    /**
     * The Wed
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $Wed;
    /**
     * The Thu
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $Thu;
    /**
     * The Fri
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $Fri;
    /**
     * The Sat
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $Sat;
    /**
     * The FromTime
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $FromTime;
    /**
     * The ToTime
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $ToTime;
    /**
     * The SpecificChargeDate
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $SpecificChargeDate;
    /**
     * The StartMon
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartMon;
    /**
     * The EndMon
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndMon;
    /**
     * The StartTue
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartTue;
    /**
     * The EndTue
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndTue;
    /**
     * The StartWed
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartWed;
    /**
     * The EndWed
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndWed;
    /**
     * The StartThu
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartThu;
    /**
     * The EndThu
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndThu;
    /**
     * The StartFri
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartFri;
    /**
     * The EndFri
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndFri;
    /**
     * The StartSat
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartSat;
    /**
     * The EndSat
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndSat;
    /**
     * The StartSun
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartSun;
    /**
     * The EndSun
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndSun;
    /**
     * The StartMon2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartMon2;
    /**
     * The EndMon2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndMon2;
    /**
     * The StartTue2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartTue2;
    /**
     * The EndTue2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndTue2;
    /**
     * The StartWed2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartWed2;
    /**
     * The EndWed2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndWed2;
    /**
     * The StartThu2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartThu2;
    /**
     * The EndThu2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndThu2;
    /**
     * The StartFri2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartFri2;
    /**
     * The EndFri2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndFri2;
    /**
     * The StartSat2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartSat2;
    /**
     * The EndSat2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndSat2;
    /**
     * The StartSun2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $StartSun2;
    /**
     * The EndSun2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $EndSun2;
    /**
     * The Holidays
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \SGCIS\Array\ArrayOfDateTime
     */
    public $Holidays;
    /**
     * The TOUChargeSchedules
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \SGCIS\Array\ArrayOfTOUChargeSchedule
     */
    public $TOUChargeSchedules;
    /**
     * The Name
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Name;
    /**
     * The Description
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Description;
    /**
     * Constructor method for TOU
     * @uses TOU::setTOUID()
     * @uses TOU::setTOUChargeScheduleID()
     * @uses TOU::setSun()
     * @uses TOU::setMon()
     * @uses TOU::setTue()
     * @uses TOU::setWed()
     * @uses TOU::setThu()
     * @uses TOU::setFri()
     * @uses TOU::setSat()
     * @uses TOU::setFromTime()
     * @uses TOU::setToTime()
     * @uses TOU::setSpecificChargeDate()
     * @uses TOU::setStartMon()
     * @uses TOU::setEndMon()
     * @uses TOU::setStartTue()
     * @uses TOU::setEndTue()
     * @uses TOU::setStartWed()
     * @uses TOU::setEndWed()
     * @uses TOU::setStartThu()
     * @uses TOU::setEndThu()
     * @uses TOU::setStartFri()
     * @uses TOU::setEndFri()
     * @uses TOU::setStartSat()
     * @uses TOU::setEndSat()
     * @uses TOU::setStartSun()
     * @uses TOU::setEndSun()
     * @uses TOU::setStartMon2()
     * @uses TOU::setEndMon2()
     * @uses TOU::setStartTue2()
     * @uses TOU::setEndTue2()
     * @uses TOU::setStartWed2()
     * @uses TOU::setEndWed2()
     * @uses TOU::setStartThu2()
     * @uses TOU::setEndThu2()
     * @uses TOU::setStartFri2()
     * @uses TOU::setEndFri2()
     * @uses TOU::setStartSat2()
     * @uses TOU::setEndSat2()
     * @uses TOU::setStartSun2()
     * @uses TOU::setEndSun2()
     * @uses TOU::setHolidays()
     * @uses TOU::setTOUChargeSchedules()
     * @uses TOU::setName()
     * @uses TOU::setDescription()
     * @param int $tOUID
     * @param int $tOUChargeScheduleID
     * @param bool $sun
     * @param bool $mon
     * @param bool $tue
     * @param bool $wed
     * @param bool $thu
     * @param bool $fri
     * @param bool $sat
     * @param string $fromTime
     * @param string $toTime
     * @param string $specificChargeDate
     * @param string $startMon
     * @param string $endMon
     * @param string $startTue
     * @param string $endTue
     * @param string $startWed
     * @param string $endWed
     * @param string $startThu
     * @param string $endThu
     * @param string $startFri
     * @param string $endFri
     * @param string $startSat
     * @param string $endSat
     * @param string $startSun
     * @param string $endSun
     * @param string $startMon2
     * @param string $endMon2
     * @param string $startTue2
     * @param string $endTue2
     * @param string $startWed2
     * @param string $endWed2
     * @param string $startThu2
     * @param string $endThu2
     * @param string $startFri2
     * @param string $endFri2
     * @param string $startSat2
     * @param string $endSat2
     * @param string $startSun2
     * @param string $endSun2
     * @param \SGCIS\Array\ArrayOfDateTime $holidays
     * @param \SGCIS\Array\ArrayOfTOUChargeSchedule $tOUChargeSchedules
     * @param string $name
     * @param string $description
     */
    public function __construct($tOUID = null, $tOUChargeScheduleID = null, $sun = null, $mon = null, $tue = null, $wed = null, $thu = null, $fri = null, $sat = null, $fromTime = null, $toTime = null, $specificChargeDate = null, $startMon = null, $endMon = null, $startTue = null, $endTue = null, $startWed = null, $endWed = null, $startThu = null, $endThu = null, $startFri = null, $endFri = null, $startSat = null, $endSat = null, $startSun = null, $endSun = null, $startMon2 = null, $endMon2 = null, $startTue2 = null, $endTue2 = null, $startWed2 = null, $endWed2 = null, $startThu2 = null, $endThu2 = null, $startFri2 = null, $endFri2 = null, $startSat2 = null, $endSat2 = null, $startSun2 = null, $endSun2 = null, \SGCIS\Array\ArrayOfDateTime $holidays = null, \SGCIS\Array\ArrayOfTOUChargeSchedule $tOUChargeSchedules = null, $name = null, $description = null)
    {
        $this
            ->setTOUID($tOUID)
            ->setTOUChargeScheduleID($tOUChargeScheduleID)
            ->setSun($sun)
            ->setMon($mon)
            ->setTue($tue)
            ->setWed($wed)
            ->setThu($thu)
            ->setFri($fri)
            ->setSat($sat)
            ->setFromTime($fromTime)
            ->setToTime($toTime)
            ->setSpecificChargeDate($specificChargeDate)
            ->setStartMon($startMon)
            ->setEndMon($endMon)
            ->setStartTue($startTue)
            ->setEndTue($endTue)
            ->setStartWed($startWed)
            ->setEndWed($endWed)
            ->setStartThu($startThu)
            ->setEndThu($endThu)
            ->setStartFri($startFri)
            ->setEndFri($endFri)
            ->setStartSat($startSat)
            ->setEndSat($endSat)
            ->setStartSun($startSun)
            ->setEndSun($endSun)
            ->setStartMon2($startMon2)
            ->setEndMon2($endMon2)
            ->setStartTue2($startTue2)
            ->setEndTue2($endTue2)
            ->setStartWed2($startWed2)
            ->setEndWed2($endWed2)
            ->setStartThu2($startThu2)
            ->setEndThu2($endThu2)
            ->setStartFri2($startFri2)
            ->setEndFri2($endFri2)
            ->setStartSat2($startSat2)
            ->setEndSat2($endSat2)
            ->setStartSun2($startSun2)
            ->setEndSun2($endSun2)
            ->setHolidays($holidays)
            ->setTOUChargeSchedules($tOUChargeSchedules)
            ->setName($name)
            ->setDescription($description);
    }
    /**
     * Get TOUID value
     * @return int
     */
    public function getTOUID()
    {
        return $this->TOUID;
    }
    /**
     * Set TOUID value
     * @param int $tOUID
     * @return \SGCIS\Struct\TOU
     */
    public function setTOUID($tOUID = null)
    {
        // validation for constraint: int
        if (!is_null($tOUID) && !is_numeric($tOUID)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($tOUID)), __LINE__);
        }
        $this->TOUID = $tOUID;
        return $this;
    }
    /**
     * Get TOUChargeScheduleID value
     * @return int
     */
    public function getTOUChargeScheduleID()
    {
        return $this->TOUChargeScheduleID;
    }
    /**
     * Set TOUChargeScheduleID value
     * @param int $tOUChargeScheduleID
     * @return \SGCIS\Struct\TOU
     */
    public function setTOUChargeScheduleID($tOUChargeScheduleID = null)
    {
        // validation for constraint: int
        if (!is_null($tOUChargeScheduleID) && !is_numeric($tOUChargeScheduleID)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($tOUChargeScheduleID)), __LINE__);
        }
        $this->TOUChargeScheduleID = $tOUChargeScheduleID;
        return $this;
    }
    /**
     * Get Sun value
     * @return bool
     */
    public function getSun()
    {
        return $this->Sun;
    }
    /**
     * Set Sun value
     * @param bool $sun
     * @return \SGCIS\Struct\TOU
     */
    public function setSun($sun = null)
    {
        // validation for constraint: boolean
        if (!is_null($sun) && !is_bool($sun)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($sun)), __LINE__);
        }
        $this->Sun = $sun;
        return $this;
    }
    /**
     * Get Mon value
     * @return bool
     */
    public function getMon()
    {
        return $this->Mon;
    }
    /**
     * Set Mon value
     * @param bool $mon
     * @return \SGCIS\Struct\TOU
     */
    public function setMon($mon = null)
    {
        // validation for constraint: boolean
        if (!is_null($mon) && !is_bool($mon)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($mon)), __LINE__);
        }
        $this->Mon = $mon;
        return $this;
    }
    /**
     * Get Tue value
     * @return bool
     */
    public function getTue()
    {
        return $this->Tue;
    }
    /**
     * Set Tue value
     * @param bool $tue
     * @return \SGCIS\Struct\TOU
     */
    public function setTue($tue = null)
    {
        // validation for constraint: boolean
        if (!is_null($tue) && !is_bool($tue)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($tue)), __LINE__);
        }
        $this->Tue = $tue;
        return $this;
    }
    /**
     * Get Wed value
     * @return bool
     */
    public function getWed()
    {
        return $this->Wed;
    }
    /**
     * Set Wed value
     * @param bool $wed
     * @return \SGCIS\Struct\TOU
     */
    public function setWed($wed = null)
    {
        // validation for constraint: boolean
        if (!is_null($wed) && !is_bool($wed)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($wed)), __LINE__);
        }
        $this->Wed = $wed;
        return $this;
    }
    /**
     * Get Thu value
     * @return bool
     */
    public function getThu()
    {
        return $this->Thu;
    }
    /**
     * Set Thu value
     * @param bool $thu
     * @return \SGCIS\Struct\TOU
     */
    public function setThu($thu = null)
    {
        // validation for constraint: boolean
        if (!is_null($thu) && !is_bool($thu)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($thu)), __LINE__);
        }
        $this->Thu = $thu;
        return $this;
    }
    /**
     * Get Fri value
     * @return bool
     */
    public function getFri()
    {
        return $this->Fri;
    }
    /**
     * Set Fri value
     * @param bool $fri
     * @return \SGCIS\Struct\TOU
     */
    public function setFri($fri = null)
    {
        // validation for constraint: boolean
        if (!is_null($fri) && !is_bool($fri)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($fri)), __LINE__);
        }
        $this->Fri = $fri;
        return $this;
    }
    /**
     * Get Sat value
     * @return bool
     */
    public function getSat()
    {
        return $this->Sat;
    }
    /**
     * Set Sat value
     * @param bool $sat
     * @return \SGCIS\Struct\TOU
     */
    public function setSat($sat = null)
    {
        // validation for constraint: boolean
        if (!is_null($sat) && !is_bool($sat)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($sat)), __LINE__);
        }
        $this->Sat = $sat;
        return $this;
    }
    /**
     * Get FromTime value
     * @return string
     */
    public function getFromTime()
    {
        return $this->FromTime;
    }
    /**
     * Set FromTime value
     * @param string $fromTime
     * @return \SGCIS\Struct\TOU
     */
    public function setFromTime($fromTime = null)
    {
        // validation for constraint: string
        if (!is_null($fromTime) && !is_string($fromTime)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($fromTime)), __LINE__);
        }
        $this->FromTime = $fromTime;
        return $this;
    }
    /**
     * Get ToTime value
     * @return string
     */
    public function getToTime()
    {
        return $this->ToTime;
    }
    /**
     * Set ToTime value
     * @param string $toTime
     * @return \SGCIS\Struct\TOU
     */
    public function setToTime($toTime = null)
    {
        // validation for constraint: string
        if (!is_null($toTime) && !is_string($toTime)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($toTime)), __LINE__);
        }
        $this->ToTime = $toTime;
        return $this;
    }
    /**
     * Get SpecificChargeDate value
     * @return string
     */
    public function getSpecificChargeDate()
    {
        return $this->SpecificChargeDate;
    }
    /**
     * Set SpecificChargeDate value
     * @param string $specificChargeDate
     * @return \SGCIS\Struct\TOU
     */
    public function setSpecificChargeDate($specificChargeDate = null)
    {
        // validation for constraint: string
        if (!is_null($specificChargeDate) && !is_string($specificChargeDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($specificChargeDate)), __LINE__);
        }
        $this->SpecificChargeDate = $specificChargeDate;
        return $this;
    }
    /**
     * Get StartMon value
     * @return string
     */
    public function getStartMon()
    {
        return $this->StartMon;
    }
    /**
     * Set StartMon value
     * @param string $startMon
     * @return \SGCIS\Struct\TOU
     */
    public function setStartMon($startMon = null)
    {
        // validation for constraint: string
        if (!is_null($startMon) && !is_string($startMon)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startMon)), __LINE__);
        }
        $this->StartMon = $startMon;
        return $this;
    }
    /**
     * Get EndMon value
     * @return string
     */
    public function getEndMon()
    {
        return $this->EndMon;
    }
    /**
     * Set EndMon value
     * @param string $endMon
     * @return \SGCIS\Struct\TOU
     */
    public function setEndMon($endMon = null)
    {
        // validation for constraint: string
        if (!is_null($endMon) && !is_string($endMon)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endMon)), __LINE__);
        }
        $this->EndMon = $endMon;
        return $this;
    }
    /**
     * Get StartTue value
     * @return string
     */
    public function getStartTue()
    {
        return $this->StartTue;
    }
    /**
     * Set StartTue value
     * @param string $startTue
     * @return \SGCIS\Struct\TOU
     */
    public function setStartTue($startTue = null)
    {
        // validation for constraint: string
        if (!is_null($startTue) && !is_string($startTue)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startTue)), __LINE__);
        }
        $this->StartTue = $startTue;
        return $this;
    }
    /**
     * Get EndTue value
     * @return string
     */
    public function getEndTue()
    {
        return $this->EndTue;
    }
    /**
     * Set EndTue value
     * @param string $endTue
     * @return \SGCIS\Struct\TOU
     */
    public function setEndTue($endTue = null)
    {
        // validation for constraint: string
        if (!is_null($endTue) && !is_string($endTue)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endTue)), __LINE__);
        }
        $this->EndTue = $endTue;
        return $this;
    }
    /**
     * Get StartWed value
     * @return string
     */
    public function getStartWed()
    {
        return $this->StartWed;
    }
    /**
     * Set StartWed value
     * @param string $startWed
     * @return \SGCIS\Struct\TOU
     */
    public function setStartWed($startWed = null)
    {
        // validation for constraint: string
        if (!is_null($startWed) && !is_string($startWed)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startWed)), __LINE__);
        }
        $this->StartWed = $startWed;
        return $this;
    }
    /**
     * Get EndWed value
     * @return string
     */
    public function getEndWed()
    {
        return $this->EndWed;
    }
    /**
     * Set EndWed value
     * @param string $endWed
     * @return \SGCIS\Struct\TOU
     */
    public function setEndWed($endWed = null)
    {
        // validation for constraint: string
        if (!is_null($endWed) && !is_string($endWed)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endWed)), __LINE__);
        }
        $this->EndWed = $endWed;
        return $this;
    }
    /**
     * Get StartThu value
     * @return string
     */
    public function getStartThu()
    {
        return $this->StartThu;
    }
    /**
     * Set StartThu value
     * @param string $startThu
     * @return \SGCIS\Struct\TOU
     */
    public function setStartThu($startThu = null)
    {
        // validation for constraint: string
        if (!is_null($startThu) && !is_string($startThu)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startThu)), __LINE__);
        }
        $this->StartThu = $startThu;
        return $this;
    }
    /**
     * Get EndThu value
     * @return string
     */
    public function getEndThu()
    {
        return $this->EndThu;
    }
    /**
     * Set EndThu value
     * @param string $endThu
     * @return \SGCIS\Struct\TOU
     */
    public function setEndThu($endThu = null)
    {
        // validation for constraint: string
        if (!is_null($endThu) && !is_string($endThu)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endThu)), __LINE__);
        }
        $this->EndThu = $endThu;
        return $this;
    }
    /**
     * Get StartFri value
     * @return string
     */
    public function getStartFri()
    {
        return $this->StartFri;
    }
    /**
     * Set StartFri value
     * @param string $startFri
     * @return \SGCIS\Struct\TOU
     */
    public function setStartFri($startFri = null)
    {
        // validation for constraint: string
        if (!is_null($startFri) && !is_string($startFri)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startFri)), __LINE__);
        }
        $this->StartFri = $startFri;
        return $this;
    }
    /**
     * Get EndFri value
     * @return string
     */
    public function getEndFri()
    {
        return $this->EndFri;
    }
    /**
     * Set EndFri value
     * @param string $endFri
     * @return \SGCIS\Struct\TOU
     */
    public function setEndFri($endFri = null)
    {
        // validation for constraint: string
        if (!is_null($endFri) && !is_string($endFri)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endFri)), __LINE__);
        }
        $this->EndFri = $endFri;
        return $this;
    }
    /**
     * Get StartSat value
     * @return string
     */
    public function getStartSat()
    {
        return $this->StartSat;
    }
    /**
     * Set StartSat value
     * @param string $startSat
     * @return \SGCIS\Struct\TOU
     */
    public function setStartSat($startSat = null)
    {
        // validation for constraint: string
        if (!is_null($startSat) && !is_string($startSat)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startSat)), __LINE__);
        }
        $this->StartSat = $startSat;
        return $this;
    }
    /**
     * Get EndSat value
     * @return string
     */
    public function getEndSat()
    {
        return $this->EndSat;
    }
    /**
     * Set EndSat value
     * @param string $endSat
     * @return \SGCIS\Struct\TOU
     */
    public function setEndSat($endSat = null)
    {
        // validation for constraint: string
        if (!is_null($endSat) && !is_string($endSat)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endSat)), __LINE__);
        }
        $this->EndSat = $endSat;
        return $this;
    }
    /**
     * Get StartSun value
     * @return string
     */
    public function getStartSun()
    {
        return $this->StartSun;
    }
    /**
     * Set StartSun value
     * @param string $startSun
     * @return \SGCIS\Struct\TOU
     */
    public function setStartSun($startSun = null)
    {
        // validation for constraint: string
        if (!is_null($startSun) && !is_string($startSun)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startSun)), __LINE__);
        }
        $this->StartSun = $startSun;
        return $this;
    }
    /**
     * Get EndSun value
     * @return string
     */
    public function getEndSun()
    {
        return $this->EndSun;
    }
    /**
     * Set EndSun value
     * @param string $endSun
     * @return \SGCIS\Struct\TOU
     */
    public function setEndSun($endSun = null)
    {
        // validation for constraint: string
        if (!is_null($endSun) && !is_string($endSun)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endSun)), __LINE__);
        }
        $this->EndSun = $endSun;
        return $this;
    }
    /**
     * Get StartMon2 value
     * @return string
     */
    public function getStartMon2()
    {
        return $this->StartMon2;
    }
    /**
     * Set StartMon2 value
     * @param string $startMon2
     * @return \SGCIS\Struct\TOU
     */
    public function setStartMon2($startMon2 = null)
    {
        // validation for constraint: string
        if (!is_null($startMon2) && !is_string($startMon2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startMon2)), __LINE__);
        }
        $this->StartMon2 = $startMon2;
        return $this;
    }
    /**
     * Get EndMon2 value
     * @return string
     */
    public function getEndMon2()
    {
        return $this->EndMon2;
    }
    /**
     * Set EndMon2 value
     * @param string $endMon2
     * @return \SGCIS\Struct\TOU
     */
    public function setEndMon2($endMon2 = null)
    {
        // validation for constraint: string
        if (!is_null($endMon2) && !is_string($endMon2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endMon2)), __LINE__);
        }
        $this->EndMon2 = $endMon2;
        return $this;
    }
    /**
     * Get StartTue2 value
     * @return string
     */
    public function getStartTue2()
    {
        return $this->StartTue2;
    }
    /**
     * Set StartTue2 value
     * @param string $startTue2
     * @return \SGCIS\Struct\TOU
     */
    public function setStartTue2($startTue2 = null)
    {
        // validation for constraint: string
        if (!is_null($startTue2) && !is_string($startTue2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startTue2)), __LINE__);
        }
        $this->StartTue2 = $startTue2;
        return $this;
    }
    /**
     * Get EndTue2 value
     * @return string
     */
    public function getEndTue2()
    {
        return $this->EndTue2;
    }
    /**
     * Set EndTue2 value
     * @param string $endTue2
     * @return \SGCIS\Struct\TOU
     */
    public function setEndTue2($endTue2 = null)
    {
        // validation for constraint: string
        if (!is_null($endTue2) && !is_string($endTue2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endTue2)), __LINE__);
        }
        $this->EndTue2 = $endTue2;
        return $this;
    }
    /**
     * Get StartWed2 value
     * @return string
     */
    public function getStartWed2()
    {
        return $this->StartWed2;
    }
    /**
     * Set StartWed2 value
     * @param string $startWed2
     * @return \SGCIS\Struct\TOU
     */
    public function setStartWed2($startWed2 = null)
    {
        // validation for constraint: string
        if (!is_null($startWed2) && !is_string($startWed2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startWed2)), __LINE__);
        }
        $this->StartWed2 = $startWed2;
        return $this;
    }
    /**
     * Get EndWed2 value
     * @return string
     */
    public function getEndWed2()
    {
        return $this->EndWed2;
    }
    /**
     * Set EndWed2 value
     * @param string $endWed2
     * @return \SGCIS\Struct\TOU
     */
    public function setEndWed2($endWed2 = null)
    {
        // validation for constraint: string
        if (!is_null($endWed2) && !is_string($endWed2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endWed2)), __LINE__);
        }
        $this->EndWed2 = $endWed2;
        return $this;
    }
    /**
     * Get StartThu2 value
     * @return string
     */
    public function getStartThu2()
    {
        return $this->StartThu2;
    }
    /**
     * Set StartThu2 value
     * @param string $startThu2
     * @return \SGCIS\Struct\TOU
     */
    public function setStartThu2($startThu2 = null)
    {
        // validation for constraint: string
        if (!is_null($startThu2) && !is_string($startThu2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startThu2)), __LINE__);
        }
        $this->StartThu2 = $startThu2;
        return $this;
    }
    /**
     * Get EndThu2 value
     * @return string
     */
    public function getEndThu2()
    {
        return $this->EndThu2;
    }
    /**
     * Set EndThu2 value
     * @param string $endThu2
     * @return \SGCIS\Struct\TOU
     */
    public function setEndThu2($endThu2 = null)
    {
        // validation for constraint: string
        if (!is_null($endThu2) && !is_string($endThu2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endThu2)), __LINE__);
        }
        $this->EndThu2 = $endThu2;
        return $this;
    }
    /**
     * Get StartFri2 value
     * @return string
     */
    public function getStartFri2()
    {
        return $this->StartFri2;
    }
    /**
     * Set StartFri2 value
     * @param string $startFri2
     * @return \SGCIS\Struct\TOU
     */
    public function setStartFri2($startFri2 = null)
    {
        // validation for constraint: string
        if (!is_null($startFri2) && !is_string($startFri2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startFri2)), __LINE__);
        }
        $this->StartFri2 = $startFri2;
        return $this;
    }
    /**
     * Get EndFri2 value
     * @return string
     */
    public function getEndFri2()
    {
        return $this->EndFri2;
    }
    /**
     * Set EndFri2 value
     * @param string $endFri2
     * @return \SGCIS\Struct\TOU
     */
    public function setEndFri2($endFri2 = null)
    {
        // validation for constraint: string
        if (!is_null($endFri2) && !is_string($endFri2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endFri2)), __LINE__);
        }
        $this->EndFri2 = $endFri2;
        return $this;
    }
    /**
     * Get StartSat2 value
     * @return string
     */
    public function getStartSat2()
    {
        return $this->StartSat2;
    }
    /**
     * Set StartSat2 value
     * @param string $startSat2
     * @return \SGCIS\Struct\TOU
     */
    public function setStartSat2($startSat2 = null)
    {
        // validation for constraint: string
        if (!is_null($startSat2) && !is_string($startSat2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startSat2)), __LINE__);
        }
        $this->StartSat2 = $startSat2;
        return $this;
    }
    /**
     * Get EndSat2 value
     * @return string
     */
    public function getEndSat2()
    {
        return $this->EndSat2;
    }
    /**
     * Set EndSat2 value
     * @param string $endSat2
     * @return \SGCIS\Struct\TOU
     */
    public function setEndSat2($endSat2 = null)
    {
        // validation for constraint: string
        if (!is_null($endSat2) && !is_string($endSat2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endSat2)), __LINE__);
        }
        $this->EndSat2 = $endSat2;
        return $this;
    }
    /**
     * Get StartSun2 value
     * @return string
     */
    public function getStartSun2()
    {
        return $this->StartSun2;
    }
    /**
     * Set StartSun2 value
     * @param string $startSun2
     * @return \SGCIS\Struct\TOU
     */
    public function setStartSun2($startSun2 = null)
    {
        // validation for constraint: string
        if (!is_null($startSun2) && !is_string($startSun2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($startSun2)), __LINE__);
        }
        $this->StartSun2 = $startSun2;
        return $this;
    }
    /**
     * Get EndSun2 value
     * @return string
     */
    public function getEndSun2()
    {
        return $this->EndSun2;
    }
    /**
     * Set EndSun2 value
     * @param string $endSun2
     * @return \SGCIS\Struct\TOU
     */
    public function setEndSun2($endSun2 = null)
    {
        // validation for constraint: string
        if (!is_null($endSun2) && !is_string($endSun2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($endSun2)), __LINE__);
        }
        $this->EndSun2 = $endSun2;
        return $this;
    }
    /**
     * Get Holidays value
     * @return \SGCIS\Array\ArrayOfDateTime|null
     */
    public function getHolidays()
    {
        return $this->Holidays;
    }
    /**
     * Set Holidays value
     * @param \SGCIS\Array\ArrayOfDateTime $holidays
     * @return \SGCIS\Struct\TOU
     */
    public function setHolidays(\SGCIS\Array\ArrayOfDateTime $holidays = null)
    {
        $this->Holidays = $holidays;
        return $this;
    }
    /**
     * Get TOUChargeSchedules value
     * @return \SGCIS\Array\ArrayOfTOUChargeSchedule|null
     */
    public function getTOUChargeSchedules()
    {
        return $this->TOUChargeSchedules;
    }
    /**
     * Set TOUChargeSchedules value
     * @param \SGCIS\Array\ArrayOfTOUChargeSchedule $tOUChargeSchedules
     * @return \SGCIS\Struct\TOU
     */
    public function setTOUChargeSchedules(\SGCIS\Array\ArrayOfTOUChargeSchedule $tOUChargeSchedules = null)
    {
        $this->TOUChargeSchedules = $tOUChargeSchedules;
        return $this;
    }
    /**
     * Get Name value
     * @return string|null
     */
    public function getName()
    {
        return $this->Name;
    }
    /**
     * Set Name value
     * @param string $name
     * @return \SGCIS\Struct\TOU
     */
    public function setName($name = null)
    {
        // validation for constraint: string
        if (!is_null($name) && !is_string($name)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($name)), __LINE__);
        }
        $this->Name = $name;
        return $this;
    }
    /**
     * Get Description value
     * @return string|null
     */
    public function getDescription()
    {
        return $this->Description;
    }
    /**
     * Set Description value
     * @param string $description
     * @return \SGCIS\Struct\TOU
     */
    public function setDescription($description = null)
    {
        // validation for constraint: string
        if (!is_null($description) && !is_string($description)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($description)), __LINE__);
        }
        $this->Description = $description;
        return $this;
    }
    /**
     * Method called when an object has been exported with var_export() functions
     * It allows to return an object instantiated with the values
     * @see AbstractStructBase::__set_state()
     * @uses AbstractStructBase::__set_state()
     * @param array $array the exported values
     * @return \SGCIS\Struct\TOU
     */
    public static function __set_state(array $array)
    {
        return parent::__set_state($array);
    }
    /**
     * Method returning the class name
     * @return string __CLASS__
     */
    public function __toString()
    {
        return __CLASS__;
    }
}
