<?php

namespace dgsoft\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for InsuranceType StructType
 * @package Dg
 * @subpackage Structs
 */
class DgInsuranceType extends AbstractStructBase
{
    /**
     * The InsuredName
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgPersonNameType
     */
    public $InsuredName;
    /**
     * The InsuranceCompany
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgCompanyNameType
     */
    public $InsuranceCompany;
    /**
     * The Underwriter
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \dgsoft\StructType\DgCompanyNameType
     */
    public $Underwriter;
    /**
     * The ShareSynchInd
     * @var string
     */
    public $ShareSynchInd;
    /**
     * The ShareMarketInd
     * @var string
     */
    public $ShareMarketInd;
    /**
     * The InsuranceType
     * @var string
     */
    public $InsuranceType;
    /**
     * The PolicyNumber
     * @var string
     */
    public $PolicyNumber;
    /**
     * The EffectiveDate
     * @var string
     */
    public $EffectiveDate;
    /**
     * The ExpireDate
     * @var string
     */
    public $ExpireDate;
    /**
     * The RPH
     * @var string
     */
    public $RPH;
    /**
     * Constructor method for InsuranceType
     * @uses DgInsuranceType::setInsuredName()
     * @uses DgInsuranceType::setInsuranceCompany()
     * @uses DgInsuranceType::setUnderwriter()
     * @uses DgInsuranceType::setShareSynchInd()
     * @uses DgInsuranceType::setShareMarketInd()
     * @uses DgInsuranceType::setInsuranceType()
     * @uses DgInsuranceType::setPolicyNumber()
     * @uses DgInsuranceType::setEffectiveDate()
     * @uses DgInsuranceType::setExpireDate()
     * @uses DgInsuranceType::setRPH()
     * @param \dgsoft\StructType\DgPersonNameType $insuredName
     * @param \dgsoft\StructType\DgCompanyNameType $insuranceCompany
     * @param \dgsoft\StructType\DgCompanyNameType $underwriter
     * @param string $shareSynchInd
     * @param string $shareMarketInd
     * @param string $insuranceType
     * @param string $policyNumber
     * @param string $effectiveDate
     * @param string $expireDate
     * @param string $rPH
     */
    public function __construct(\dgsoft\StructType\DgPersonNameType $insuredName = null, \dgsoft\StructType\DgCompanyNameType $insuranceCompany = null, \dgsoft\StructType\DgCompanyNameType $underwriter = null, $shareSynchInd = null, $shareMarketInd = null, $insuranceType = null, $policyNumber = null, $effectiveDate = null, $expireDate = null, $rPH = null)
    {
        $this
            ->setInsuredName($insuredName)
            ->setInsuranceCompany($insuranceCompany)
            ->setUnderwriter($underwriter)
            ->setShareSynchInd($shareSynchInd)
            ->setShareMarketInd($shareMarketInd)
            ->setInsuranceType($insuranceType)
            ->setPolicyNumber($policyNumber)
            ->setEffectiveDate($effectiveDate)
            ->setExpireDate($expireDate)
            ->setRPH($rPH);
    }
    /**
     * Get InsuredName value
     * @return \dgsoft\StructType\DgPersonNameType|null
     */
    public function getInsuredName()
    {
        return $this->InsuredName;
    }
    /**
     * Set InsuredName value
     * @param \dgsoft\StructType\DgPersonNameType $insuredName
     * @return \dgsoft\StructType\DgInsuranceType
     */
    public function setInsuredName(\dgsoft\StructType\DgPersonNameType $insuredName = null)
    {
        $this->InsuredName = $insuredName;
        return $this;
    }
    /**
     * Get InsuranceCompany value
     * @return \dgsoft\StructType\DgCompanyNameType|null
     */
    public function getInsuranceCompany()
    {
        return $this->InsuranceCompany;
    }
    /**
     * Set InsuranceCompany value
     * @param \dgsoft\StructType\DgCompanyNameType $insuranceCompany
     * @return \dgsoft\StructType\DgInsuranceType
     */
    public function setInsuranceCompany(\dgsoft\StructType\DgCompanyNameType $insuranceCompany = null)
    {
        $this->InsuranceCompany = $insuranceCompany;
        return $this;
    }
    /**
     * Get Underwriter value
     * @return \dgsoft\StructType\DgCompanyNameType|null
     */
    public function getUnderwriter()
    {
        return $this->Underwriter;
    }
    /**
     * Set Underwriter value
     * @param \dgsoft\StructType\DgCompanyNameType $underwriter
     * @return \dgsoft\StructType\DgInsuranceType
     */
    public function setUnderwriter(\dgsoft\StructType\DgCompanyNameType $underwriter = null)
    {
        $this->Underwriter = $underwriter;
        return $this;
    }
    /**
     * Get ShareSynchInd value
     * @return string|null
     */
    public function getShareSynchInd()
    {
        return $this->ShareSynchInd;
    }
    /**
     * Set ShareSynchInd value
     * @param string $shareSynchInd
     * @return \dgsoft\StructType\DgInsuranceType
     */
    public function setShareSynchInd($shareSynchInd = null)
    {
        // validation for constraint: string
        if (!is_null($shareSynchInd) && !is_string($shareSynchInd)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($shareSynchInd)), __LINE__);
        }
        $this->ShareSynchInd = $shareSynchInd;
        return $this;
    }
    /**
     * Get ShareMarketInd value
     * @return string|null
     */
    public function getShareMarketInd()
    {
        return $this->ShareMarketInd;
    }
    /**
     * Set ShareMarketInd value
     * @param string $shareMarketInd
     * @return \dgsoft\StructType\DgInsuranceType
     */
    public function setShareMarketInd($shareMarketInd = null)
    {
        // validation for constraint: string
        if (!is_null($shareMarketInd) && !is_string($shareMarketInd)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($shareMarketInd)), __LINE__);
        }
        $this->ShareMarketInd = $shareMarketInd;
        return $this;
    }
    /**
     * Get InsuranceType value
     * @return string|null
     */
    public function getInsuranceType()
    {
        return $this->InsuranceType;
    }
    /**
     * Set InsuranceType value
     * @param string $insuranceType
     * @return \dgsoft\StructType\DgInsuranceType
     */
    public function setInsuranceType($insuranceType = null)
    {
        // validation for constraint: string
        if (!is_null($insuranceType) && !is_string($insuranceType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($insuranceType)), __LINE__);
        }
        $this->InsuranceType = $insuranceType;
        return $this;
    }
    /**
     * Get PolicyNumber value
     * @return string|null
     */
    public function getPolicyNumber()
    {
        return $this->PolicyNumber;
    }
    /**
     * Set PolicyNumber value
     * @param string $policyNumber
     * @return \dgsoft\StructType\DgInsuranceType
     */
    public function setPolicyNumber($policyNumber = null)
    {
        // validation for constraint: string
        if (!is_null($policyNumber) && !is_string($policyNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($policyNumber)), __LINE__);
        }
        $this->PolicyNumber = $policyNumber;
        return $this;
    }
    /**
     * Get EffectiveDate value
     * @return string|null
     */
    public function getEffectiveDate()
    {
        return $this->EffectiveDate;
    }
    /**
     * Set EffectiveDate value
     * @param string $effectiveDate
     * @return \dgsoft\StructType\DgInsuranceType
     */
    public function setEffectiveDate($effectiveDate = null)
    {
        // validation for constraint: string
        if (!is_null($effectiveDate) && !is_string($effectiveDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($effectiveDate)), __LINE__);
        }
        $this->EffectiveDate = $effectiveDate;
        return $this;
    }
    /**
     * Get ExpireDate value
     * @return string|null
     */
    public function getExpireDate()
    {
        return $this->ExpireDate;
    }
    /**
     * Set ExpireDate value
     * @param string $expireDate
     * @return \dgsoft\StructType\DgInsuranceType
     */
    public function setExpireDate($expireDate = null)
    {
        // validation for constraint: string
        if (!is_null($expireDate) && !is_string($expireDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($expireDate)), __LINE__);
        }
        $this->ExpireDate = $expireDate;
        return $this;
    }
    /**
     * Get RPH value
     * @return string|null
     */
    public function getRPH()
    {
        return $this->RPH;
    }
    /**
     * Set RPH value
     * @param string $rPH
     * @return \dgsoft\StructType\DgInsuranceType
     */
    public function setRPH($rPH = null)
    {
        // validation for constraint: string
        if (!is_null($rPH) && !is_string($rPH)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($rPH)), __LINE__);
        }
        $this->RPH = $rPH;
        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\DgInsuranceType
     */
    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__;
    }
}
