<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for AddUpdateRequiredCompetency StructType
 * @subpackage Structs
 */
class AddUpdateRequiredCompetency extends AbstractStructBase
{
    /**
     * The toUsrId
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $toUsrId;
    /**
     * The requiredCompId
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $requiredCompId;
    /**
     * The prtyId
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $prtyId;
    /**
     * The notes
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $notes;
    /**
     * Constructor method for AddUpdateRequiredCompetency
     * @uses AddUpdateRequiredCompetency::setToUsrId()
     * @uses AddUpdateRequiredCompetency::setRequiredCompId()
     * @uses AddUpdateRequiredCompetency::setPrtyId()
     * @uses AddUpdateRequiredCompetency::setNotes()
     * @param string $toUsrId
     * @param string $requiredCompId
     * @param string $prtyId
     * @param string $notes
     */
    public function __construct($toUsrId = null, $requiredCompId = null, $prtyId = null, $notes = null)
    {
        $this
            ->setToUsrId($toUsrId)
            ->setRequiredCompId($requiredCompId)
            ->setPrtyId($prtyId)
            ->setNotes($notes);
    }
    /**
     * Get toUsrId value
     * @return string|null
     */
    public function getToUsrId()
    {
        return $this->toUsrId;
    }
    /**
     * Set toUsrId value
     * @param string $toUsrId
     * @return AddUpdateRequiredCompetency
     */
    public function setToUsrId($toUsrId = null)
    {
        // validation for constraint: string
        if (!is_null($toUsrId) && !is_string($toUsrId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($toUsrId)), __LINE__);
        }
        $this->toUsrId = $toUsrId;
        return $this;
    }
    /**
     * Get requiredCompId value
     * @return string|null
     */
    public function getRequiredCompId()
    {
        return $this->requiredCompId;
    }
    /**
     * Set requiredCompId value
     * @param string $requiredCompId
     * @return AddUpdateRequiredCompetency
     */
    public function setRequiredCompId($requiredCompId = null)
    {
        // validation for constraint: string
        if (!is_null($requiredCompId) && !is_string($requiredCompId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($requiredCompId)), __LINE__);
        }
        $this->requiredCompId = $requiredCompId;
        return $this;
    }
    /**
     * Get prtyId value
     * @return string|null
     */
    public function getPrtyId()
    {
        return $this->prtyId;
    }
    /**
     * Set prtyId value
     * @param string $prtyId
     * @return AddUpdateRequiredCompetency
     */
    public function setPrtyId($prtyId = null)
    {
        // validation for constraint: string
        if (!is_null($prtyId) && !is_string($prtyId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($prtyId)), __LINE__);
        }
        $this->prtyId = $prtyId;
        return $this;
    }
    /**
     * Get notes value
     * @return string|null
     */
    public function getNotes()
    {
        return $this->notes;
    }
    /**
     * Set notes value
     * @param string $notes
     * @return AddUpdateRequiredCompetency
     */
    public function setNotes($notes = null)
    {
        // validation for constraint: string
        if (!is_null($notes) && !is_string($notes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($notes)), __LINE__);
        }
        $this->notes = $notes;
        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 AddUpdateRequiredCompetency
     */
    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__;
    }
}
