src/Entity/InfoSalarie.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\InfoSalarieRepository;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use ParagonIE\Halite\Alerts\CannotPerformOperation;
  6. use ParagonIE\Halite\Alerts\InvalidDigestLength;
  7. use ParagonIE\Halite\Alerts\InvalidMessage;
  8. use ParagonIE\Halite\Alerts\InvalidSignature;
  9. use ParagonIE\Halite\Alerts\InvalidType;
  10. use ParagonIE\Halite\KeyFactory;
  11. use ParagonIE\HiddenString\HiddenString;
  12. use ParagonIE\Halite\Symmetric\Crypto as Symmetric;
  13. /**
  14.  * @ORM\Entity(repositoryClass=InfoSalarieRepository::class)
  15.  */
  16. class InfoSalarie
  17. {
  18.     private $encryptionKey;
  19.     private $isDecrypted false;
  20.     private $_error = [];
  21.     private $properties = array(
  22.         'tarif_jour',
  23.         'date_naissance',
  24.         'lieu_naissance',
  25.         'situation_familiale',
  26.         'nationalite',
  27.         'num_secu_sociale',
  28.         'num_conges_spectacle',
  29.         'num_carte_presse',
  30.         'num_carte_sejour',
  31.         'date_visite_medicale',
  32.         'statut_cadre',
  33.         'nb_enfant',
  34.         'iban',
  35.     );
  36.     function __construct($webPath)
  37.     {
  38.         if(''!==$webPath$this->encryptionKey KeyFactory::loadEncryptionKey($webPath.'/var/cache/encryption.key');
  39.     }
  40.     /**
  41.      * @ORM\Id
  42.      * @ORM\GeneratedValue
  43.      * @ORM\Column(type="integer")
  44.      */
  45.     private $id;
  46.     /**
  47.      * @ORM\Column(type="text", nullable=true)
  48.      */
  49.     private ?string $tarif_jour;
  50.     private ?string $uncrypted_tarif_jour;
  51.     /**
  52.      * @ORM\Column(type="text", nullable=true)
  53.      */
  54.     private ?string $type_salarie;
  55.     /**
  56.      * @ORM\Column(type="text", nullable=true)
  57.      */
  58.     private ?string $date_naissance;
  59.     private ?string $uncrypted_date_naissance;
  60.     /**
  61.      * @ORM\Column(type="text", nullable=true)
  62.      */
  63.     private ?string $lieu_naissance;
  64.     private ?string $uncrypted_lieu_naissance;
  65.     /**
  66.      * @ORM\Column(type="text", nullable=true)
  67.      */
  68.     private ?string $situation_familiale;
  69.     private ?string $uncrypted_situation_familiale;
  70.     /**
  71.      * @ORM\Column(type="text", nullable=true)
  72.      */
  73.     private ?string $nationalite;
  74.     private ?string $uncrypted_nationalite;
  75.     /**
  76.      * @ORM\Column(type="text", nullable=true)
  77.      */
  78.     private ?string $num_secu_sociale;
  79.     private ?string $uncrypted_num_secu_sociale;
  80.     /**
  81.      * @ORM\Column(type="text", nullable=true)
  82.      */
  83.     private ?string $num_conges_spectacle;
  84.     private ?string $uncrypted_num_conges_spectacle;
  85.     /**
  86.      * @ORM\Column(type="text", nullable=true)
  87.      */
  88.     private ?string $num_carte_sejour;
  89.     private ?string $uncrypted_num_carte_sejour;
  90.     /**
  91.      * @ORM\Column(type="text", nullable=true)
  92.      */
  93.     private ?string $num_carte_presse;
  94.     private ?string $uncrypted_num_carte_presse;
  95.     /**
  96.      * @ORM\Column(type="text", nullable=true)
  97.      */
  98.     private ?string $date_visite_medicale;
  99.     private ?string $uncrypted_date_visite_medicale;
  100.     /**
  101.      * @ORM\Column(type="text", nullable=true)
  102.      */
  103.     private ?string $statut_cadre;
  104.     private ?string $uncrypted_statut_cadre;
  105.     /**
  106.      * @ORM\Column(type="text", nullable=true)
  107.      */
  108.     private ?string $nb_enfant;
  109.     private ?string $uncrypted_nb_enfant;
  110.     /**
  111.      * @ORM\Column(type="text", nullable=true)
  112.      */
  113.     private ?string $iban;
  114.     private ?string $uncrypted_iban;
  115.     /**
  116.      * @ORM\Column(type="text", nullable=true)
  117.      */
  118.     private ?string $fonction;
  119.     /**
  120.      * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"})
  121.      */
  122.     private $date_modif;
  123.     /**
  124.      * @ORM\Column(type="integer", options={"default": "0"})
  125.      */
  126.     private $user_modif;
  127.     /**
  128.      * @ORM\OneToOne(targetEntity=Tiers::class, mappedBy="info_salarie", cascade={"persist", "remove"})
  129.      */
  130.     private $tiers;
  131.     /**
  132.      * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"})
  133.      */
  134.     private $date_crea;
  135.     /**
  136.      * @ORM\Column(type="integer", options={"default": "0"})
  137.      */
  138.     private $user_crea;
  139.     public function getId(): ?int
  140.     {
  141.         return $this->id;
  142.     }
  143.     public function getTarifJour(): ?string
  144.     {
  145.         return $this->tarif_jour;
  146.     }
  147.     public function setTarifJour(?string $tarif_jour): self
  148.     {
  149.         if(''===trim($tarif_jour)) return $this;
  150.         $this->uncrypted_tarif_jour $tarif_jour;
  151.         $this->tarif_jour null;
  152.         return $this;
  153.     }
  154.     public function getTypeSalarie(): ?string
  155.     {
  156.         return $this->type_salarie;
  157.     }
  158.     public function setTypeSalarie(?string $type_salarie): self
  159.     {
  160.         $this->type_salarie $type_salarie;
  161.         return $this;
  162.     }
  163.     public function getDateNaissance(): ?string
  164.     {
  165.         return $this->date_naissance;
  166.     }
  167.     public function setDateNaissance(?string $date_naissance): self
  168.     {
  169.         if(''===trim($date_naissance)) return $this;
  170.         $this->uncrypted_date_naissance $date_naissance;
  171.         $this->date_naissance null;
  172.         return $this;
  173.     }
  174.     public function getLieuNaissance(): ?string
  175.     {
  176.         return $this->lieu_naissance;
  177.     }
  178.     public function setLieuNaissance(?string $lieu_naissance): self
  179.     {
  180.         if(''===trim($lieu_naissance)) return $this;
  181.         $this->uncrypted_lieu_naissance $lieu_naissance;
  182.         $this->lieu_naissance null;
  183.         return $this;
  184.     }
  185.     public function getSituationFamiliale(): ?string
  186.     {
  187.         return $this->situation_familiale;
  188.     }
  189.     public function setSituationFamiliale(?string $situation_familiale): self
  190.     {
  191.         if(''===trim($situation_familiale)) return $this;
  192.         $this->uncrypted_situation_familiale $situation_familiale;
  193.         $this->situation_familiale null;
  194.         return $this;
  195.     }
  196.     public function getNationalite(): ?string
  197.     {
  198.         return $this->nationalite;
  199.     }
  200.     public function setNationalite(?string $nationalite): self
  201.     {
  202.         if(''===trim($nationalite)) return $this;
  203.         $this->uncrypted_nationalite $nationalite;
  204.         $this->nationalite null;
  205.         return $this;
  206.     }
  207.     public function getNumSecuSociale(): ?string
  208.     {
  209.         return $this->num_secu_sociale;
  210.     }
  211.     public function setNumSecuSociale(?string $num_secu_sociale): self
  212.     {
  213.         if(''===trim($num_secu_sociale)) return $this;
  214.         $this->uncrypted_num_secu_sociale $num_secu_sociale;
  215.         $this->num_secu_sociale null;
  216.         return $this;
  217.     }
  218.     public function getNumCongesSpectacle(): ?string
  219.     {
  220.         return $this->num_conges_spectacle;
  221.     }
  222.     public function setNumCongesSpectacle(?string $num_conges_spectacle): self
  223.     {
  224.         if(''===trim($num_conges_spectacle)) return $this;
  225.         $this->uncrypted_num_conges_spectacle $num_conges_spectacle;
  226.         $this->num_conges_spectacle null;
  227.         return $this;
  228.     }
  229.     public function getNumCarteSejour(): ?string
  230.     {
  231.         return $this->num_carte_sejour;
  232.     }
  233.     public function setNumCarteSejour(?string $num_carte_sejour): self
  234.     {
  235.         if(''===trim($num_carte_sejour)) return $this;
  236.         $this->uncrypted_num_carte_sejour $num_carte_sejour;
  237.         $this->num_carte_sejour null;
  238.         return $this;
  239.     }
  240.     public function getNumCartePresse(): ?string
  241.     {
  242.         return $this->num_carte_presse;
  243.     }
  244.     public function setNumCartePresse(?string $num_carte_presse): self
  245.     {
  246.         if(''===trim($num_carte_presse)) return $this;
  247.         $this->uncrypted_num_carte_presse $num_carte_presse;
  248.         $this->num_carte_presse null;
  249.         return $this;
  250.     }
  251.     public function getDateVisiteMedicale(): ?string
  252.     {
  253.         return $this->date_visite_medicale;
  254.     }
  255.     public function setDateVisiteMedicale(?string $date_visite_medicale): self
  256.     {
  257.         if(''===trim($date_visite_medicale)) return $this;
  258.         $this->uncrypted_date_visite_medicale $date_visite_medicale;
  259.         $this->date_visite_medicale null;
  260.         return $this;
  261.     }
  262.     public function getStatutCadre(): ?string
  263.     {
  264.         return $this->statut_cadre;
  265.     }
  266.     public function setStatutCadre(?string $statut_cadre): self
  267.     {
  268.         if(''===trim($statut_cadre)) return $this;
  269.         $this->uncrypted_statut_cadre $statut_cadre;
  270.         $this->statut_cadre null;
  271.         return $this;
  272.     }
  273.     public function getNbEnfant(): ?string
  274.     {
  275.         return $this->nb_enfant;
  276.     }
  277.     public function setNbEnfant(?string $nb_enfant): self
  278.     {
  279.         if(''===trim($nb_enfant)) return $this;
  280.         $this->uncrypted_nb_enfant $nb_enfant;
  281.         $this->nb_enfant null;
  282.         return $this;
  283.     }
  284.     public function getIban(): ?string
  285.     {
  286.         return $this->iban;
  287.     }
  288.     public function setIban(?string $iban): self
  289.     {
  290.         if(''===trim($iban)) return $this;
  291.         $this->uncrypted_iban $iban;
  292.         $this->iban null;
  293.         return $this;
  294.     }
  295.     public function getFonction(): ?string
  296.     {
  297.         return $this->fonction;
  298.     }
  299.     public function setFonction(?string $fonction): self
  300.     {
  301.         $this->fonction $fonction;
  302.         return $this;
  303.     }
  304.     public function getDateModif(): ?\DateTimeInterface
  305.     {
  306.         return $this->date_modif;
  307.     }
  308.     public function setDateModif(\DateTimeInterface $date_modif): self
  309.     {
  310.         $this->date_modif $date_modif;
  311.         return $this;
  312.     }
  313.     public function getUserModif(): ?int
  314.     {
  315.         return $this->user_modif;
  316.     }
  317.     public function setUserModif(int $user_modif): self
  318.     {
  319.         $this->user_modif $user_modif;
  320.         return $this;
  321.     }
  322.     public function getDateCrea(): ?\DateTimeInterface
  323.     {
  324.         return $this->date_crea;
  325.     }
  326.     public function setDateCrea(\DateTimeInterface $date_crea): self
  327.     {
  328.         $this->date_crea $date_crea;
  329.         return $this;
  330.     }
  331.     public function getUserCrea(): ?int
  332.     {
  333.         return $this->user_crea;
  334.     }
  335.     public function setUserCrea(int $user_crea): self
  336.     {
  337.         $this->user_crea $user_crea;
  338.         return $this;
  339.     }
  340.     public function getTiers(): ?Tiers
  341.     {
  342.         return $this->tiers;
  343.     }
  344.     public function setTiers(?Tiers $tiers): self
  345.     {
  346.         // unset the owning side of the relation if necessary
  347.         if ($tiers === null && $this->tiers !== null) {
  348.             $this->tiers->setInfoSalarie(null);
  349.         }
  350.         // set the owning side of the relation if necessary
  351.         if ($tiers !== null && $tiers->getInfoSalarie() !== $this) {
  352.             $tiers->setInfoSalarie($this);
  353.         }
  354.         $this->tiers $tiers;
  355.         return $this;
  356.     }
  357.     public function initEncryptionKey($webPath): self
  358.     {
  359.         $this->encryptionKey KeyFactory::loadEncryptionKey($webPath.'/var/cache/encryption.key');
  360.         return $this;
  361.     }
  362.     public function persistContent(): self
  363.     {
  364.         foreach ($this->properties as $property){
  365.             if (null !== $this->$property && '' !== $this->$property) {
  366.                 $this->$property Symmetric::encrypt(new HiddenString($this->$property), $this->encryptionKey);
  367.             }
  368.         }
  369.         return $this;
  370.     }
  371.     public function secureContent(): self
  372.     {
  373.         foreach ($this->properties as $property){
  374.             $uncryptedProperty 'uncrypted_' $property;
  375.             if(isset($this->{$uncryptedProperty})) {
  376.                 if (null === $this->$property && null !== $this->$uncryptedProperty && '' !== $this->$uncryptedProperty) {
  377.                     $this->$property Symmetric::encrypt(new HiddenString($this->$uncryptedProperty), $this->encryptionKey);
  378.                 }
  379.             }
  380.         }
  381.         return $this;
  382.     }
  383.     public function decryptContent(): self
  384.     {
  385.         if($this->isDecrypted) return $this;
  386.         foreach ($this->properties as $property){
  387.             if (null !== $this->$property && '' !== $this->$property) {
  388.                 $decrypted Symmetric::decrypt($this->$property$this->encryptionKey);
  389.                 if(''!==$decrypted->getString()) $this->$property $decrypted->getString();
  390.             }
  391.         }
  392.         $this->encryptionKey null;
  393.         $this->isDecrypted true;
  394.         $this->checkData();
  395.         return $this;
  396.     }
  397.     public function initInfosVierge()
  398.     {
  399.         foreach ($this->properties as $property){
  400.             $this->$property '';
  401.         }
  402.         $this->type_salarie '';
  403.         $this->fonction '';
  404.     }
  405.     public function checkData()
  406.     {
  407.         if($this->isDecrypted) {
  408.             $salarie $this->getTiers();
  409.             if (empty($salarie->getPrenomTiers())) $this->_error[] = 'Prénom salarié vide';
  410.             if (empty($salarie->getNomTiers())) $this->_error[] = 'Nom salarié vide';
  411.             if (15 !== strlen($this->getNumSecuSociale())) $this->_error[] = 'Numéro de sécurité sociale invalide : 15 chiffres attendus';
  412.             if (10 !== strlen($this->getDateNaissance())) $this->_error[] = 'Date de naissance invalide';
  413.             if (empty($this->getLieuNaissance())) $this->_error[] = 'Lieu de naissance vide';
  414.             if (preg_match('/[()]/'$this->getLieuNaissance())) $this->_error[] = 'Les parenthèses sont interdites : ' $this->getLieuNaissance();
  415.         }
  416.     }
  417.     public function getError()
  418.     {
  419.         return $this->_error;
  420.     }
  421. }