<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for RisqueProfessionnel StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:RisqueProfessionnel
 * @subpackage Structs
 */
class RisqueProfessionnel extends AbstractStructBase
{
    /**
     * The CSP
     * Meta information extracted from the WSDL
     * - nillable: true
     * @var string
     */
    public $CSP;
    /**
     * The TravailEnHauteur
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $TravailEnHauteur;
    /**
     * The ContactAvecProduitDangereux
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $ContactAvecProduitDangereux;
    /**
     * The TravailManuel
     * Meta information extracted from the WSDL
     * - nillable: true
     * @var bool
     */
    public $TravailManuel;
    /**
     * The Deplacements
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $Deplacements;
    /**
     * Constructor method for RisqueProfessionnel
     * @uses RisqueProfessionnel::setCSP()
     * @uses RisqueProfessionnel::setTravailEnHauteur()
     * @uses RisqueProfessionnel::setContactAvecProduitDangereux()
     * @uses RisqueProfessionnel::setTravailManuel()
     * @uses RisqueProfessionnel::setDeplacements()
     * @param string $cSP
     * @param bool $travailEnHauteur
     * @param bool $contactAvecProduitDangereux
     * @param bool $travailManuel
     * @param bool $deplacements
     */
    public function __construct($cSP = null, $travailEnHauteur = null, $contactAvecProduitDangereux = null, $travailManuel = null, $deplacements = null)
    {
        $this
            ->setCSP($cSP)
            ->setTravailEnHauteur($travailEnHauteur)
            ->setContactAvecProduitDangereux($contactAvecProduitDangereux)
            ->setTravailManuel($travailManuel)
            ->setDeplacements($deplacements);
    }
    /**
     * Get CSP value
     * @return string|null
     */
    public function getCSP()
    {
        return $this->CSP;
    }
    /**
     * Set CSP value
     * @param string $cSP
     * @return RisqueProfessionnel
     */
    public function setCSP($cSP = null)
    {
        // validation for constraint: string
        if (!is_null($cSP) && !is_string($cSP)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($cSP, true), gettype($cSP)), __LINE__);
        }
        $this->CSP = $cSP;
        return $this;
    }
    /**
     * Get TravailEnHauteur value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getTravailEnHauteur()
    {
        return isset($this->TravailEnHauteur) ? $this->TravailEnHauteur : null;
    }
    /**
     * Set TravailEnHauteur value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $travailEnHauteur
     * @return RisqueProfessionnel
     */
    public function setTravailEnHauteur($travailEnHauteur = null)
    {
        // validation for constraint: boolean
        if (!is_null($travailEnHauteur) && !is_bool($travailEnHauteur)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($travailEnHauteur, true), gettype($travailEnHauteur)), __LINE__);
        }
        if (is_null($travailEnHauteur) || (is_array($travailEnHauteur) && empty($travailEnHauteur))) {
            unset($this->TravailEnHauteur);
        } else {
            $this->TravailEnHauteur = $travailEnHauteur;
        }
        return $this;
    }
    /**
     * Get ContactAvecProduitDangereux value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getContactAvecProduitDangereux()
    {
        return isset($this->ContactAvecProduitDangereux) ? $this->ContactAvecProduitDangereux : null;
    }
    /**
     * Set ContactAvecProduitDangereux value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $contactAvecProduitDangereux
     * @return RisqueProfessionnel
     */
    public function setContactAvecProduitDangereux($contactAvecProduitDangereux = null)
    {
        // validation for constraint: boolean
        if (!is_null($contactAvecProduitDangereux) && !is_bool($contactAvecProduitDangereux)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($contactAvecProduitDangereux, true), gettype($contactAvecProduitDangereux)), __LINE__);
        }
        if (is_null($contactAvecProduitDangereux) || (is_array($contactAvecProduitDangereux) && empty($contactAvecProduitDangereux))) {
            unset($this->ContactAvecProduitDangereux);
        } else {
            $this->ContactAvecProduitDangereux = $contactAvecProduitDangereux;
        }
        return $this;
    }
    /**
     * Get TravailManuel value
     * @return bool|null
     */
    public function getTravailManuel()
    {
        return $this->TravailManuel;
    }
    /**
     * Set TravailManuel value
     * @param bool $travailManuel
     * @return RisqueProfessionnel
     */
    public function setTravailManuel($travailManuel = null)
    {
        // validation for constraint: boolean
        if (!is_null($travailManuel) && !is_bool($travailManuel)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($travailManuel, true), gettype($travailManuel)), __LINE__);
        }
        $this->TravailManuel = $travailManuel;
        return $this;
    }
    /**
     * Get Deplacements value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getDeplacements()
    {
        return isset($this->Deplacements) ? $this->Deplacements : null;
    }
    /**
     * Set Deplacements value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $deplacements
     * @return RisqueProfessionnel
     */
    public function setDeplacements($deplacements = null)
    {
        // validation for constraint: boolean
        if (!is_null($deplacements) && !is_bool($deplacements)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($deplacements, true), gettype($deplacements)), __LINE__);
        }
        if (is_null($deplacements) || (is_array($deplacements) && empty($deplacements))) {
            unset($this->Deplacements);
        } else {
            $this->Deplacements = $deplacements;
        }
        return $this;
    }
}
