<?php

namespace dgsoft\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for RuleInfoType StructType
 * @package Dg
 * @subpackage Structs
 */
class DgRuleInfoType extends AbstractStructBase
{
    /**
     * The ResTicketingRules
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgResTicketingRules
     */
    public $ResTicketingRules;
    /**
     * The LengthOfStayRules
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgStayRestrictionsType
     */
    public $LengthOfStayRules;
    /**
     * The ChargesRules
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgChargesRules
     */
    public $ChargesRules;
    /**
     * Constructor method for RuleInfoType
     * @uses DgRuleInfoType::setResTicketingRules()
     * @uses DgRuleInfoType::setLengthOfStayRules()
     * @uses DgRuleInfoType::setChargesRules()
     * @param \dgsoft\StructType\DgResTicketingRules $resTicketingRules
     * @param \dgsoft\StructType\DgStayRestrictionsType $lengthOfStayRules
     * @param \dgsoft\StructType\DgChargesRules $chargesRules
     */
    public function __construct(\dgsoft\StructType\DgResTicketingRules $resTicketingRules = null, \dgsoft\StructType\DgStayRestrictionsType $lengthOfStayRules = null, \dgsoft\StructType\DgChargesRules $chargesRules = null)
    {
        $this
            ->setResTicketingRules($resTicketingRules)
            ->setLengthOfStayRules($lengthOfStayRules)
            ->setChargesRules($chargesRules);
    }
    /**
     * Get ResTicketingRules value
     * @return \dgsoft\StructType\DgResTicketingRules|null
     */
    public function getResTicketingRules()
    {
        return $this->ResTicketingRules;
    }
    /**
     * Set ResTicketingRules value
     * @param \dgsoft\StructType\DgResTicketingRules $resTicketingRules
     * @return \dgsoft\StructType\DgRuleInfoType
     */
    public function setResTicketingRules(\dgsoft\StructType\DgResTicketingRules $resTicketingRules = null)
    {
        $this->ResTicketingRules = $resTicketingRules;
        return $this;
    }
    /**
     * Get LengthOfStayRules value
     * @return \dgsoft\StructType\DgStayRestrictionsType|null
     */
    public function getLengthOfStayRules()
    {
        return $this->LengthOfStayRules;
    }
    /**
     * Set LengthOfStayRules value
     * @param \dgsoft\StructType\DgStayRestrictionsType $lengthOfStayRules
     * @return \dgsoft\StructType\DgRuleInfoType
     */
    public function setLengthOfStayRules(\dgsoft\StructType\DgStayRestrictionsType $lengthOfStayRules = null)
    {
        $this->LengthOfStayRules = $lengthOfStayRules;
        return $this;
    }
    /**
     * Get ChargesRules value
     * @return \dgsoft\StructType\DgChargesRules|null
     */
    public function getChargesRules()
    {
        return $this->ChargesRules;
    }
    /**
     * Set ChargesRules value
     * @param \dgsoft\StructType\DgChargesRules $chargesRules
     * @return \dgsoft\StructType\DgRuleInfoType
     */
    public function setChargesRules(\dgsoft\StructType\DgChargesRules $chargesRules = null)
    {
        $this->ChargesRules = $chargesRules;
        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\DgRuleInfoType
     */
    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__;
    }
}
