production/Controleur/ControleurCreerbeneficiaire.php
2025-12-02 11:29:44 +00:00

286 lines
10 KiB
PHP
Executable File

<?php
require_once 'vendor/autoload.php';
require_once 'Framework/Controleur.php';
require_once 'Modele/Menuvueutilisateur.php';
require_once 'Modele/Police.php';
require_once 'Modele/Beneficiaire.php';
require_once 'Modele/Naturepiece.php';
require_once 'Modele/Sexe.php';
require_once 'Modele/Groupesanguin.php';
require_once 'Modele/Adherent.php';
require_once 'Modele/Lienparente.php';
//require_once 'Societes/'.$_SESSION['codeSociete'].'/Tarifs/Modele/Tarif.php';
require_once 'Modele/Avenant.php';
require_once 'Modele/Ouinon.php';
require_once 'Modele/Beneficiaire_temp.php';
require_once 'Modele/Tarifsactes.php';
require_once 'Modele/Produit.php';
/*
require_once 'Modele/Qrcodemodele.php';
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;
use Endroid\QrCode\Color\Color;
use Endroid\QrCode\ErrorCorrectionLevel;
*/
class ControleurCreerbeneficiaire extends Controleur {
private $menuvue;
private $beneficiaire;
private $naturepiece;
private $sexe;
private $groupesanguin;
private $adherent;
private $lienparente;
private $tarif;
private $avenant;
private $ouinon;
private $beneficiaire_temp;
private $police;
private $produit;
// private $qrcode;
private $ouinonvip;
private $ouinonconserver;
private $ouinonprorata;
public function __construct() {
$this->menuvue = new Menuvueutilisateur();
$this->menuvue->getMenuVue('Creerbeneficiaire');
$this->beneficiaire = new Beneficiaire();
$this->naturepiece = (new Naturepiece())->getListe();
$this->sexe = (new Sexe())->getListe();
$this->groupesanguin = (new Groupesanguin())->getListe();
$this->adherent = new Adherent();
$this->lienparente = (new Lienparente())->getListeDependant();
$this->avenant = (new Avenant())->getListeEnCours($_SESSION['idPolice_C']);
$this->ouinonprorata = (new Ouinon())->getListe();
$this->beneficiaire_temp = new Beneficiaire_temp();
$this->tarif = new Tarifsactes();
$this->police = new Police();
$this->ouinonvip = (new Ouinon())->getListe();
$this->ouinonconserver = (new Ouinon())->getListe();
$this->produit = new Produit();
// $this->qrcode = new Qrcodemodele();
}
public function index() {
$idPolice = $_SESSION['idPolice_C'];
$idAdherent = $_SESSION['idAdherent_C'];
$user = $_SESSION['login'];
$this->police->getContextePoliceId($idPolice);
$police = $this->police->getPoliceId($idPolice);
$adherent = $this->adherent->getContexteAdherentId($idAdherent);
$idCollege = $_SESSION['idCollege_C'];
$fraisCarte = $this->beneficiaire_temp->get_frais_carte_college($idCollege);
$nomGarant = $this->police->getNomGarant($police['codeGcAssureur']);
$_SESSION['nomGcAssureur_C'] = $nomGarant;
$prorata = "1";
$dateEntree = $_SESSION['dateAvenant_C'];
if ($dateEntree=="0000-00-00" || is_null($dateEntree)){
$dateEntree = $this->beneficiaire_temp->getdateentreeadherent($idAdherent);
}
$beneficiaire_temp = $this->beneficiaire_temp->getBeneficiaire_temp($idAdherent, $dateEntree, $user, $prorata, $fraisCarte);
//$adherent = $this->adherent->getContexteAdherentId($idAdherent);
$codeTypeTarifActe = "TBEN";
$tarifActe = $this->tarif->getTarifActeByType($codeTypeTarifActe);
$codeModeCalculPrime= $this->beneficiaire_temp->getModeCalculPrime($idAdherent);
$typeremboursement = $this->produit->getlisteTypeRemboursement();
$this->genererVue(array('adherent' => $adherent, 'naturepiece' => $this->naturepiece, 'sexe' => $this->sexe,
'groupesanguin' => $this->groupesanguin, 'lienparente' => $this->lienparente, 'avenant' => $this->avenant,
'ouinonprorata' => $this->ouinonprorata, 'beneficiaire_temp' => $beneficiaire_temp, 'fraisCarte' => $fraisCarte,
'tarifActe' => $tarifActe, 'codeModeCalculPrime' => $codeModeCalculPrime, 'ouinonvip' => $this->ouinonvip,
'ouinonconserver' => $this->ouinonconserver, 'police' => $police, 'typeremboursement' => $typeremboursement));
}
public function ajouter() {
$idAdherent = $this->requete->getParametreFormulaire("idAdherent");
$numeroAdherent = $this->requete->getParametreFormulaire("numeroAdherent");
$nomBeneficiaire = strtoupper($this->requete->getParametreFormulaire("nomBeneficiaire"));
$prenomsBeneficiaire = strtoupper($this->requete->getParametreFormulaire("prenomsBeneficiaire"));
$codeLienParente = $this->requete->getParametreFormulaire("codeLienParente");
$codeNaturePiece = $this->requete->getParametreFormulaire("codeNaturePiece");
$numeroPiece = strtoupper($this->requete->getParametreFormulaire("numeroPiece"));
if($codeLienParente == "C"){
$sexe = $this->requete->getParametreFormulaire("sexeConjoint");
}else{
$sexe = $this->requete->getParametreFormulaire("sexe");
}
$codeGroupeSanguin = $this->requete->getParametreFormulaire("codeGroupeSanguin");
$dateNaissance = $this->requete->getParametreDate("dateNaissance");
$telephonePortable = $this->requete->getParametreFormulaire("telephonePortable");
$dateEntree = $this->requete->getParametreDate("dateEntree");
$user = $this->requete->getSession()->getAttribut('login');
$idAvenant = $this->requete->getParametreFormulaire("idAvenant");
$dateCre = date("Y-m-d");
$fraisCarte = $this->requete->getParametreFormulaire("fraisCarte","numerique");
$numeroCmu = strtoupper($this->requete->getParametreFormulaire("numeroCmu"));
$numeroMatricule = strtoupper($this->requete->getParametreFormulaire("numeroMatricule"));
$prorata = $this->requete->getParametreFormulaire("prorata");
//Ajouté par sorel le 27-05-2023
$codeTarifActe = $this->requete->getParametreFormulaire("codeTarifActe");
//ajouter par sorel 19-06-2023
$dateSouscription = $this->requete->getParametreFormulaire("dateSouscription");
if($dateSouscription == ""){
$dateSouscription=null;
}else{
$dateSouscription = $this->requete->getParametreDate("dateSouscription");
}
$vip = $this->requete->getParametreFormulaire("vip");
$seuilRdBeneficiaire = $this->requete->getParametreFormulaire("seuilRdBeneficiaire");
$numeroBs = $this->requete->getParametreFormulaire("numeroBs");
$ancienNumeroAssure = $this->requete->getParametreFormulaire("ancienNumeroAssure");
$conserverAncienNumeroAssure = $this->requete->getParametreFormulaire("conserverAncienNumeroAssure");
$codeTypeRemboursement = $this->requete->getParametreFormulaire("codeTypeRemboursement");
$dernierNumeroBeneficiaire = $this->beneficiaire->getDenierNumeroBeneficiaire($idAdherent);
$dernierNumeroBeneficiaire++;
//var_dump($dernierNumeroBeneficiaire);die();
$numeroBeneficiaire = $numeroAdherent . $dernierNumeroBeneficiaire;
//$lienPhoto = $numeroBeneficiaire.".jpg";
$idBeneficiaire = $this->beneficiaire->ajouter($idAdherent, $numeroBeneficiaire, $nomBeneficiaire,
$prenomsBeneficiaire, $codeLienParente, $codeNaturePiece, $numeroPiece, $sexe, $codeGroupeSanguin,
$dateNaissance, $telephonePortable, $dateEntree, $dateCre, $user, $idAvenant, $fraisCarte, $numeroCmu,
$numeroMatricule, $prorata, $codeTarifActe, $dateSouscription, $vip, $seuilRdBeneficiaire, $numeroBs,
$ancienNumeroAssure, $conserverAncienNumeroAssure, $codeTypeRemboursement);
$matricule = $this->beneficiaire->getMatriculeBeneficiaire($idBeneficiaire);
if (!empty($matricule)){
// $success = $this->genererEtStockerQRCodeFichier($matricule);
}
$this->beneficiaire->setDenierNumeroBeneficiaire($idAdherent, $dernierNumeroBeneficiaire);
// On va calculuer la prime
$_SESSION['idAdherent_C'] = $idAdherent;
$_SESSION['idBeneficiaire_C'] = $idBeneficiaire;
// On actualise le contexte : NbAdh et NbAss
$idPolice = $_SESSION['idPolice_C'];
$this->beneficiaire->getNbassure($idPolice);
//var_dump($idBeneficiaire);die();
$this->rediriger("Ficheadherent/".$idAdherent);
}
function genererEtStockerQRCodeFichier($matricule) {
/*
$cheminDossier = $_SESSION['dossierSociete'].'/qrcodes/';
try {
// 1. Validation du matricule
if (empty($matricule) || !preg_match('/^[A-Z0-9_-]+$/i', $matricule)) {
throw new Exception("Matricule invalide");
}
// 2. Gestion du dossier
$cheminDossier = rtrim($cheminDossier, '/') . '/';
if (!file_exists($cheminDossier)) {
if (!mkdir($cheminDossier, 0777, true)) {
throw new Exception("Impossible de créer le dossier QR");
}
}
if (!is_writable($cheminDossier)) {
throw new Exception("Dossier non accessible en écriture");
}
// 3. Suppression ancien QR code
$ancienChemin = $this->qrcode->getAncienChemin($matricule);
if ($ancienChemin) {
$ancienFichier = $cheminDossier . $ancienChemin;
if (file_exists($ancienFichier) && !unlink($ancienFichier)) {
error_log("Avertissement: Impossible de supprimer l'ancien QR");
}
}
// 4. Génération avec endroid/qr-code
//$nomFichier = 'qr_' . preg_replace('/[^A-Z0-9]/i', '_', $matricule) . '_' . time() . '.png';
$nomFichier = $matricule.'.png';
$cheminComplet = $cheminDossier . $nomFichier;
// Création du QR Code
$qrCode = QrCode::create($matricule)
->setSize(150)
->setMargin(5)
->setForegroundColor(new Color(0, 0, 0)) // Noir
->setBackgroundColor(new Color(255, 255, 255)) // Blanc
->setErrorCorrectionLevel(ErrorCorrectionLevel::High);
// Création du writer
$writer = new PngWriter();
$result = $writer->write($qrCode);
// Sauvegarde du fichier
$result->saveToFile($cheminComplet);
// 5. Vérification fichier généré
if (!file_exists($cheminComplet)) {
throw new Exception("Échec de la génération du fichier");
}
$this->qrcode->majBeneficiaireQr($nomFichier, $matricule);
return true;
} catch (Exception $e) {
error_log("Erreur QR Code: " . $e->getMessage());
return false;
}
*/
}
}