<?php

namespace SGCIS\Struct;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ServiceProviderWorkingDays Struct
 * @subpackage Structs
 */
class ServiceProviderWorkingDays extends BaseDTO
{
    /**
     * The ServiceProviderWorkingDaysId
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $ServiceProviderWorkingDaysId;
    /**
     * The DistributionServiceProviderId
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $DistributionServiceProviderId;
    /**
     * 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 Sun
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $Sun;
    /**
     * Constructor method for ServiceProviderWorkingDays
     * @uses ServiceProviderWorkingDays::setServiceProviderWorkingDaysId()
     * @uses ServiceProviderWorkingDays::setDistributionServiceProviderId()
     * @uses ServiceProviderWorkingDays::setMon()
     * @uses ServiceProviderWorkingDays::setTue()
     * @uses ServiceProviderWorkingDays::setWed()
     * @uses ServiceProviderWorkingDays::setThu()
     * @uses ServiceProviderWorkingDays::setFri()
     * @uses ServiceProviderWorkingDays::setSat()
     * @uses ServiceProviderWorkingDays::setSun()
     * @param int $serviceProviderWorkingDaysId
     * @param int $distributionServiceProviderId
     * @param bool $mon
     * @param bool $tue
     * @param bool $wed
     * @param bool $thu
     * @param bool $fri
     * @param bool $sat
     * @param bool $sun
     */
    public function __construct($serviceProviderWorkingDaysId = null, $distributionServiceProviderId = null, $mon = null, $tue = null, $wed = null, $thu = null, $fri = null, $sat = null, $sun = null)
    {
        $this
            ->setServiceProviderWorkingDaysId($serviceProviderWorkingDaysId)
            ->setDistributionServiceProviderId($distributionServiceProviderId)
            ->setMon($mon)
            ->setTue($tue)
            ->setWed($wed)
            ->setThu($thu)
            ->setFri($fri)
            ->setSat($sat)
            ->setSun($sun);
    }
    /**
     * Get ServiceProviderWorkingDaysId value
     * @return int
     */
    public function getServiceProviderWorkingDaysId()
    {
        return $this->ServiceProviderWorkingDaysId;
    }
    /**
     * Set ServiceProviderWorkingDaysId value
     * @param int $serviceProviderWorkingDaysId
     * @return \SGCIS\Struct\ServiceProviderWorkingDays
     */
    public function setServiceProviderWorkingDaysId($serviceProviderWorkingDaysId = null)
    {
        // validation for constraint: int
        if (!is_null($serviceProviderWorkingDaysId) && !is_numeric($serviceProviderWorkingDaysId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($serviceProviderWorkingDaysId)), __LINE__);
        }
        $this->ServiceProviderWorkingDaysId = $serviceProviderWorkingDaysId;
        return $this;
    }
    /**
     * Get DistributionServiceProviderId value
     * @return int
     */
    public function getDistributionServiceProviderId()
    {
        return $this->DistributionServiceProviderId;
    }
    /**
     * Set DistributionServiceProviderId value
     * @param int $distributionServiceProviderId
     * @return \SGCIS\Struct\ServiceProviderWorkingDays
     */
    public function setDistributionServiceProviderId($distributionServiceProviderId = null)
    {
        // validation for constraint: int
        if (!is_null($distributionServiceProviderId) && !is_numeric($distributionServiceProviderId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($distributionServiceProviderId)), __LINE__);
        }
        $this->DistributionServiceProviderId = $distributionServiceProviderId;
        return $this;
    }
    /**
     * Get Mon value
     * @return bool
     */
    public function getMon()
    {
        return $this->Mon;
    }
    /**
     * Set Mon value
     * @param bool $mon
     * @return \SGCIS\Struct\ServiceProviderWorkingDays
     */
    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\ServiceProviderWorkingDays
     */
    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\ServiceProviderWorkingDays
     */
    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\ServiceProviderWorkingDays
     */
    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\ServiceProviderWorkingDays
     */
    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\ServiceProviderWorkingDays
     */
    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 Sun value
     * @return bool
     */
    public function getSun()
    {
        return $this->Sun;
    }
    /**
     * Set Sun value
     * @param bool $sun
     * @return \SGCIS\Struct\ServiceProviderWorkingDays
     */
    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;
    }
    /**
     * 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\ServiceProviderWorkingDays
     */
    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__;
    }
}
