<?php

namespace Proxies\__CG__\App\Entity;

/**
 * DO NOT EDIT THIS FILE - IT WAS CREATED BY DOCTRINE'S PROXY GENERATOR
 */
class User extends \App\Entity\User implements \Doctrine\ORM\Proxy\Proxy
{
    /**
     * @var \Closure the callback responsible for loading properties in the proxy object. This callback is called with
     *      three parameters, being respectively the proxy object to be initialized, the method that triggered the
     *      initialization process and an array of ordered parameters that were passed to that method.
     *
     * @see \Doctrine\Common\Proxy\Proxy::__setInitializer
     */
    public $__initializer__;

    /**
     * @var \Closure the callback responsible of loading properties that need to be copied in the cloned object
     *
     * @see \Doctrine\Common\Proxy\Proxy::__setCloner
     */
    public $__cloner__;

    /**
     * @var boolean flag indicating if this object was already initialized
     *
     * @see \Doctrine\Persistence\Proxy::__isInitialized
     */
    public $__isInitialized__ = false;

    /**
     * @var array<string, null> properties to be lazy loaded, indexed by property name
     */
    public static $lazyPropertiesNames = array (
);

    /**
     * @var array<string, mixed> default values of properties to be lazy loaded, with keys being the property names
     *
     * @see \Doctrine\Common\Proxy\Proxy::__getLazyProperties
     */
    public static $lazyPropertiesDefaults = array (
);



    public function __construct(?\Closure $initializer = null, ?\Closure $cloner = null)
    {

        $this->__initializer__ = $initializer;
        $this->__cloner__      = $cloner;
    }







    /**
     * 
     * @return array
     */
    public function __sleep()
    {
        if ($this->__isInitialized__) {
            return ['__isInitialized__', '' . "\0" . 'App\\Entity\\User' . "\0" . 'id', '' . "\0" . 'App\\Entity\\User' . "\0" . 'email', '' . "\0" . 'App\\Entity\\User' . "\0" . 'roles', '' . "\0" . 'App\\Entity\\User' . "\0" . 'password', '' . "\0" . 'App\\Entity\\User' . "\0" . 'plainPassword', '' . "\0" . 'App\\Entity\\User' . "\0" . 'nom', '' . "\0" . 'App\\Entity\\User' . "\0" . 'prenom', '' . "\0" . 'App\\Entity\\User' . "\0" . 'nationalite', '' . "\0" . 'App\\Entity\\User' . "\0" . 'typeDocument', '' . "\0" . 'App\\Entity\\User' . "\0" . 'dateCreation', '' . "\0" . 'App\\Entity\\User' . "\0" . 'numeroDocument', '' . "\0" . 'App\\Entity\\User' . "\0" . 'sexe', '' . "\0" . 'App\\Entity\\User' . "\0" . 'telephone', '' . "\0" . 'App\\Entity\\User' . "\0" . 'dateExpirationDocument', '' . "\0" . 'App\\Entity\\User' . "\0" . 'dateNaissance', '' . "\0" . 'App\\Entity\\User' . "\0" . 'fonction', '' . "\0" . 'App\\Entity\\User' . "\0" . 'evenements', '' . "\0" . 'App\\Entity\\User' . "\0" . 'alertes', '' . "\0" . 'App\\Entity\\User' . "\0" . 'departement', '' . "\0" . 'App\\Entity\\User' . "\0" . 'statut'];
        }

        return ['__isInitialized__', '' . "\0" . 'App\\Entity\\User' . "\0" . 'id', '' . "\0" . 'App\\Entity\\User' . "\0" . 'email', '' . "\0" . 'App\\Entity\\User' . "\0" . 'roles', '' . "\0" . 'App\\Entity\\User' . "\0" . 'password', '' . "\0" . 'App\\Entity\\User' . "\0" . 'plainPassword', '' . "\0" . 'App\\Entity\\User' . "\0" . 'nom', '' . "\0" . 'App\\Entity\\User' . "\0" . 'prenom', '' . "\0" . 'App\\Entity\\User' . "\0" . 'nationalite', '' . "\0" . 'App\\Entity\\User' . "\0" . 'typeDocument', '' . "\0" . 'App\\Entity\\User' . "\0" . 'dateCreation', '' . "\0" . 'App\\Entity\\User' . "\0" . 'numeroDocument', '' . "\0" . 'App\\Entity\\User' . "\0" . 'sexe', '' . "\0" . 'App\\Entity\\User' . "\0" . 'telephone', '' . "\0" . 'App\\Entity\\User' . "\0" . 'dateExpirationDocument', '' . "\0" . 'App\\Entity\\User' . "\0" . 'dateNaissance', '' . "\0" . 'App\\Entity\\User' . "\0" . 'fonction', '' . "\0" . 'App\\Entity\\User' . "\0" . 'evenements', '' . "\0" . 'App\\Entity\\User' . "\0" . 'alertes', '' . "\0" . 'App\\Entity\\User' . "\0" . 'departement', '' . "\0" . 'App\\Entity\\User' . "\0" . 'statut'];
    }

    /**
     * 
     */
    public function __wakeup()
    {
        if ( ! $this->__isInitialized__) {
            $this->__initializer__ = function (User $proxy) {
                $proxy->__setInitializer(null);
                $proxy->__setCloner(null);

                $existingProperties = get_object_vars($proxy);

                foreach ($proxy::$lazyPropertiesDefaults as $property => $defaultValue) {
                    if ( ! array_key_exists($property, $existingProperties)) {
                        $proxy->$property = $defaultValue;
                    }
                }
            };

        }
    }

    /**
     * 
     */
    public function __clone()
    {
        $this->__cloner__ && $this->__cloner__->__invoke($this, '__clone', []);
    }

    /**
     * Forces initialization of the proxy
     */
    public function __load()
    {
        $this->__initializer__ && $this->__initializer__->__invoke($this, '__load', []);
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __isInitialized()
    {
        return $this->__isInitialized__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setInitialized($initialized)
    {
        $this->__isInitialized__ = $initialized;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setInitializer(\Closure $initializer = null)
    {
        $this->__initializer__ = $initializer;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __getInitializer()
    {
        return $this->__initializer__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setCloner(\Closure $cloner = null)
    {
        $this->__cloner__ = $cloner;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific cloning logic
     */
    public function __getCloner()
    {
        return $this->__cloner__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     * @deprecated no longer in use - generated code now relies on internal components rather than generated public API
     * @static
     */
    public function __getLazyProperties()
    {
        return self::$lazyPropertiesDefaults;
    }

    
    /**
     * {@inheritDoc}
     */
    public function getId(): ?int
    {
        if ($this->__isInitialized__ === false) {
            return (int)  parent::getId();
        }


        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getId', []);

        return parent::getId();
    }

    /**
     * {@inheritDoc}
     */
    public function getEmail(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getEmail', []);

        return parent::getEmail();
    }

    /**
     * {@inheritDoc}
     */
    public function setEmail(string $email): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setEmail', [$email]);

        return parent::setEmail($email);
    }

    /**
     * {@inheritDoc}
     */
    public function getUserIdentifier(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserIdentifier', []);

        return parent::getUserIdentifier();
    }

    /**
     * {@inheritDoc}
     */
    public function getUsername(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUsername', []);

        return parent::getUsername();
    }

    /**
     * {@inheritDoc}
     */
    public function getRoles(): array
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getRoles', []);

        return parent::getRoles();
    }

    /**
     * {@inheritDoc}
     */
    public function setRoles(array $roles): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setRoles', [$roles]);

        return parent::setRoles($roles);
    }

    /**
     * {@inheritDoc}
     */
    public function getPassword(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getPassword', []);

        return parent::getPassword();
    }

    /**
     * {@inheritDoc}
     */
    public function setPassword(string $password): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setPassword', [$password]);

        return parent::setPassword($password);
    }

    /**
     * {@inheritDoc}
     */
    public function getSalt(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getSalt', []);

        return parent::getSalt();
    }

    /**
     * {@inheritDoc}
     */
    public function eraseCredentials()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'eraseCredentials', []);

        return parent::eraseCredentials();
    }

    /**
     * {@inheritDoc}
     */
    public function getNom(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getNom', []);

        return parent::getNom();
    }

    /**
     * {@inheritDoc}
     */
    public function setNom(?string $nom): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNom', [$nom]);

        return parent::setNom($nom);
    }

    /**
     * {@inheritDoc}
     */
    public function geTelephone(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'geTelephone', []);

        return parent::geTelephone();
    }

    /**
     * {@inheritDoc}
     */
    public function setTelephone(?string $telephone): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setTelephone', [$telephone]);

        return parent::setTelephone($telephone);
    }

    /**
     * {@inheritDoc}
     */
    public function getPrenom(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getPrenom', []);

        return parent::getPrenom();
    }

    /**
     * {@inheritDoc}
     */
    public function setPrenom(?string $prenom): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setPrenom', [$prenom]);

        return parent::setPrenom($prenom);
    }

    /**
     * {@inheritDoc}
     */
    public function getPlainPassword(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getPlainPassword', []);

        return parent::getPlainPassword();
    }

    /**
     * {@inheritDoc}
     */
    public function setPlainPassword(?string $plainPassword): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setPlainPassword', [$plainPassword]);

        return parent::setPlainPassword($plainPassword);
    }

    /**
     * {@inheritDoc}
     */
    public function getNationalite(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getNationalite', []);

        return parent::getNationalite();
    }

    /**
     * {@inheritDoc}
     */
    public function setNationalite(?string $nationalite): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNationalite', [$nationalite]);

        return parent::setNationalite($nationalite);
    }

    /**
     * {@inheritDoc}
     */
    public function getTypeDocument(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getTypeDocument', []);

        return parent::getTypeDocument();
    }

    /**
     * {@inheritDoc}
     */
    public function setTypeDocument(?string $typeDocument): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setTypeDocument', [$typeDocument]);

        return parent::setTypeDocument($typeDocument);
    }

    /**
     * {@inheritDoc}
     */
    public function getDateCreation(): ?\DateTimeInterface
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDateCreation', []);

        return parent::getDateCreation();
    }

    /**
     * {@inheritDoc}
     */
    public function setDateCreation(\DateTimeInterface $dateCreation): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDateCreation', [$dateCreation]);

        return parent::setDateCreation($dateCreation);
    }

    /**
     * {@inheritDoc}
     */
    public function getNumeroDocument(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getNumeroDocument', []);

        return parent::getNumeroDocument();
    }

    /**
     * {@inheritDoc}
     */
    public function setNumeroDocument(?string $numeroDocument): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNumeroDocument', [$numeroDocument]);

        return parent::setNumeroDocument($numeroDocument);
    }

    /**
     * {@inheritDoc}
     */
    public function getSexe(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getSexe', []);

        return parent::getSexe();
    }

    /**
     * {@inheritDoc}
     */
    public function setSexe(?string $sexe): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setSexe', [$sexe]);

        return parent::setSexe($sexe);
    }

    /**
     * {@inheritDoc}
     */
    public function getDateExpirationDocument(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDateExpirationDocument', []);

        return parent::getDateExpirationDocument();
    }

    /**
     * {@inheritDoc}
     */
    public function setDateExpirationDocument(?string $dateExpirationDocument): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDateExpirationDocument', [$dateExpirationDocument]);

        return parent::setDateExpirationDocument($dateExpirationDocument);
    }

    /**
     * {@inheritDoc}
     */
    public function getDateNaissance(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDateNaissance', []);

        return parent::getDateNaissance();
    }

    /**
     * {@inheritDoc}
     */
    public function setDateNaissance(?string $dateNaissance): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDateNaissance', [$dateNaissance]);

        return parent::setDateNaissance($dateNaissance);
    }

    /**
     * {@inheritDoc}
     */
    public function getFonction(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getFonction', []);

        return parent::getFonction();
    }

    /**
     * {@inheritDoc}
     */
    public function setFonction(?string $fonction): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setFonction', [$fonction]);

        return parent::setFonction($fonction);
    }

    /**
     * {@inheritDoc}
     */
    public function getEvenements(): \Doctrine\Common\Collections\Collection
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getEvenements', []);

        return parent::getEvenements();
    }

    /**
     * {@inheritDoc}
     */
    public function addEvenement(\App\Entity\Evenement $evenement): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'addEvenement', [$evenement]);

        return parent::addEvenement($evenement);
    }

    /**
     * {@inheritDoc}
     */
    public function removeEvenement(\App\Entity\Evenement $evenement): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'removeEvenement', [$evenement]);

        return parent::removeEvenement($evenement);
    }

    /**
     * {@inheritDoc}
     */
    public function getDepartement(): \Doctrine\Common\Collections\Collection
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDepartement', []);

        return parent::getDepartement();
    }

    /**
     * {@inheritDoc}
     */
    public function addDepartement(\App\Entity\Departement $departement): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'addDepartement', [$departement]);

        return parent::addDepartement($departement);
    }

    /**
     * {@inheritDoc}
     */
    public function removeDepartement(\App\Entity\Departement $departement): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'removeDepartement', [$departement]);

        return parent::removeDepartement($departement);
    }

    /**
     * {@inheritDoc}
     */
    public function getStatut(): ?bool
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getStatut', []);

        return parent::getStatut();
    }

    /**
     * {@inheritDoc}
     */
    public function setStatut(bool $statut): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setStatut', [$statut]);

        return parent::setStatut($statut);
    }

    /**
     * {@inheritDoc}
     */
    public function getEAlertes(): \Doctrine\Common\Collections\Collection
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getEAlertes', []);

        return parent::getEAlertes();
    }

    /**
     * {@inheritDoc}
     */
    public function addAlerte(\App\Entity\Alerte $alerte): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'addAlerte', [$alerte]);

        return parent::addAlerte($alerte);
    }

    /**
     * {@inheritDoc}
     */
    public function removeAlerte(\App\Entity\Alerte $alerte): \App\Entity\User
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'removeAlerte', [$alerte]);

        return parent::removeAlerte($alerte);
    }

}
