<?php

namespace dgsoft\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for IndCoverageReqsTypeLuggageItem StructType
 * @package Dg
 * @subpackage Structs
 */
class DgIndCoverageReqsTypeLuggageItem extends AbstractStructBase
{
    /**
     * The LuggageDescription
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgFreeTextType
     */
    public $LuggageDescription;
    /**
     * The ItemDeclaredValue
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemItemDeclaredValue
     */
    public $ItemDeclaredValue;
    /**
     * The LuggagePremium
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemLuggagePremium
     */
    public $LuggagePremium;
    /**
     * The LuggageType
     * @var string
     */
    public $LuggageType;
    /**
     * Constructor method for IndCoverageReqsTypeLuggageItem
     * @uses DgIndCoverageReqsTypeLuggageItem::setLuggageDescription()
     * @uses DgIndCoverageReqsTypeLuggageItem::setItemDeclaredValue()
     * @uses DgIndCoverageReqsTypeLuggageItem::setLuggagePremium()
     * @uses DgIndCoverageReqsTypeLuggageItem::setLuggageType()
     * @param \dgsoft\StructType\DgFreeTextType $luggageDescription
     * @param \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemItemDeclaredValue $itemDeclaredValue
     * @param \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemLuggagePremium $luggagePremium
     * @param string $luggageType
     */
    public function __construct(\dgsoft\StructType\DgFreeTextType $luggageDescription = null, \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemItemDeclaredValue $itemDeclaredValue = null, \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemLuggagePremium $luggagePremium = null, $luggageType = null)
    {
        $this
            ->setLuggageDescription($luggageDescription)
            ->setItemDeclaredValue($itemDeclaredValue)
            ->setLuggagePremium($luggagePremium)
            ->setLuggageType($luggageType);
    }
    /**
     * Get LuggageDescription value
     * @return \dgsoft\StructType\DgFreeTextType|null
     */
    public function getLuggageDescription()
    {
        return $this->LuggageDescription;
    }
    /**
     * Set LuggageDescription value
     * @param \dgsoft\StructType\DgFreeTextType $luggageDescription
     * @return \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItem
     */
    public function setLuggageDescription(\dgsoft\StructType\DgFreeTextType $luggageDescription = null)
    {
        $this->LuggageDescription = $luggageDescription;
        return $this;
    }
    /**
     * Get ItemDeclaredValue value
     * @return \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemItemDeclaredValue|null
     */
    public function getItemDeclaredValue()
    {
        return $this->ItemDeclaredValue;
    }
    /**
     * Set ItemDeclaredValue value
     * @param \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemItemDeclaredValue $itemDeclaredValue
     * @return \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItem
     */
    public function setItemDeclaredValue(\dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemItemDeclaredValue $itemDeclaredValue = null)
    {
        $this->ItemDeclaredValue = $itemDeclaredValue;
        return $this;
    }
    /**
     * Get LuggagePremium value
     * @return \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemLuggagePremium|null
     */
    public function getLuggagePremium()
    {
        return $this->LuggagePremium;
    }
    /**
     * Set LuggagePremium value
     * @param \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemLuggagePremium $luggagePremium
     * @return \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItem
     */
    public function setLuggagePremium(\dgsoft\StructType\DgIndCoverageReqsTypeLuggageItemLuggagePremium $luggagePremium = null)
    {
        $this->LuggagePremium = $luggagePremium;
        return $this;
    }
    /**
     * Get LuggageType value
     * @return string|null
     */
    public function getLuggageType()
    {
        return $this->LuggageType;
    }
    /**
     * Set LuggageType value
     * @param string $luggageType
     * @return \dgsoft\StructType\DgIndCoverageReqsTypeLuggageItem
     */
    public function setLuggageType($luggageType = null)
    {
        // validation for constraint: string
        if (!is_null($luggageType) && !is_string($luggageType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($luggageType)), __LINE__);
        }
        $this->LuggageType = $luggageType;
        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\DgIndCoverageReqsTypeLuggageItem
     */
    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__;
    }
}
