<?php

namespace dgsoft\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for DOW_RestrictionsType StructType
 * @package Dg
 * @subpackage Structs
 */
class DgDOW_RestrictionsType extends AbstractStructBase
{
    /**
     * The AvailableDaysOfWeek
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgAvailableDaysOfWeek
     */
    public $AvailableDaysOfWeek;
    /**
     * The ArrivalDaysOfWeek
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgArrivalDaysOfWeek
     */
    public $ArrivalDaysOfWeek;
    /**
     * The DepartureDaysOfWeek
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgDepartureDaysOfWeek
     */
    public $DepartureDaysOfWeek;
    /**
     * The RequiredDaysOfWeek
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgRequiredDaysOfWeek
     */
    public $RequiredDaysOfWeek;
    /**
     * Constructor method for DOW_RestrictionsType
     * @uses DgDOW_RestrictionsType::setAvailableDaysOfWeek()
     * @uses DgDOW_RestrictionsType::setArrivalDaysOfWeek()
     * @uses DgDOW_RestrictionsType::setDepartureDaysOfWeek()
     * @uses DgDOW_RestrictionsType::setRequiredDaysOfWeek()
     * @param \dgsoft\StructType\DgAvailableDaysOfWeek $availableDaysOfWeek
     * @param \dgsoft\StructType\DgArrivalDaysOfWeek $arrivalDaysOfWeek
     * @param \dgsoft\StructType\DgDepartureDaysOfWeek $departureDaysOfWeek
     * @param \dgsoft\StructType\DgRequiredDaysOfWeek $requiredDaysOfWeek
     */
    public function __construct(\dgsoft\StructType\DgAvailableDaysOfWeek $availableDaysOfWeek = null, \dgsoft\StructType\DgArrivalDaysOfWeek $arrivalDaysOfWeek = null, \dgsoft\StructType\DgDepartureDaysOfWeek $departureDaysOfWeek = null, \dgsoft\StructType\DgRequiredDaysOfWeek $requiredDaysOfWeek = null)
    {
        $this
            ->setAvailableDaysOfWeek($availableDaysOfWeek)
            ->setArrivalDaysOfWeek($arrivalDaysOfWeek)
            ->setDepartureDaysOfWeek($departureDaysOfWeek)
            ->setRequiredDaysOfWeek($requiredDaysOfWeek);
    }
    /**
     * Get AvailableDaysOfWeek value
     * @return \dgsoft\StructType\DgAvailableDaysOfWeek|null
     */
    public function getAvailableDaysOfWeek()
    {
        return $this->AvailableDaysOfWeek;
    }
    /**
     * Set AvailableDaysOfWeek value
     * @param \dgsoft\StructType\DgAvailableDaysOfWeek $availableDaysOfWeek
     * @return \dgsoft\StructType\DgDOW_RestrictionsType
     */
    public function setAvailableDaysOfWeek(\dgsoft\StructType\DgAvailableDaysOfWeek $availableDaysOfWeek = null)
    {
        $this->AvailableDaysOfWeek = $availableDaysOfWeek;
        return $this;
    }
    /**
     * Get ArrivalDaysOfWeek value
     * @return \dgsoft\StructType\DgArrivalDaysOfWeek|null
     */
    public function getArrivalDaysOfWeek()
    {
        return $this->ArrivalDaysOfWeek;
    }
    /**
     * Set ArrivalDaysOfWeek value
     * @param \dgsoft\StructType\DgArrivalDaysOfWeek $arrivalDaysOfWeek
     * @return \dgsoft\StructType\DgDOW_RestrictionsType
     */
    public function setArrivalDaysOfWeek(\dgsoft\StructType\DgArrivalDaysOfWeek $arrivalDaysOfWeek = null)
    {
        $this->ArrivalDaysOfWeek = $arrivalDaysOfWeek;
        return $this;
    }
    /**
     * Get DepartureDaysOfWeek value
     * @return \dgsoft\StructType\DgDepartureDaysOfWeek|null
     */
    public function getDepartureDaysOfWeek()
    {
        return $this->DepartureDaysOfWeek;
    }
    /**
     * Set DepartureDaysOfWeek value
     * @param \dgsoft\StructType\DgDepartureDaysOfWeek $departureDaysOfWeek
     * @return \dgsoft\StructType\DgDOW_RestrictionsType
     */
    public function setDepartureDaysOfWeek(\dgsoft\StructType\DgDepartureDaysOfWeek $departureDaysOfWeek = null)
    {
        $this->DepartureDaysOfWeek = $departureDaysOfWeek;
        return $this;
    }
    /**
     * Get RequiredDaysOfWeek value
     * @return \dgsoft\StructType\DgRequiredDaysOfWeek|null
     */
    public function getRequiredDaysOfWeek()
    {
        return $this->RequiredDaysOfWeek;
    }
    /**
     * Set RequiredDaysOfWeek value
     * @param \dgsoft\StructType\DgRequiredDaysOfWeek $requiredDaysOfWeek
     * @return \dgsoft\StructType\DgDOW_RestrictionsType
     */
    public function setRequiredDaysOfWeek(\dgsoft\StructType\DgRequiredDaysOfWeek $requiredDaysOfWeek = null)
    {
        $this->RequiredDaysOfWeek = $requiredDaysOfWeek;
        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 \dgsoft\StructType\DgDOW_RestrictionsType
     */
    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__;
    }
}
