Merge branch 'main' of git.ebene.ovh:ebene/radiantrh

This commit is contained in:
KANE LAZENI 2026-03-24 16:31:05 +00:00
commit 0007ecfa0e
15 changed files with 938 additions and 38 deletions

13
.gitignore vendored Normal file
View File

@ -0,0 +1,13 @@
Config/
Config
Config/dev.ini
vendor/
vendor
logs/
logs
Cron/prod.ini
Temp/
Temp
*.ssh
.ssh/

View File

@ -0,0 +1,26 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Ged.php';;
class ControleurAjaxlistegedadherent extends Controleur {
private $ged;
public function __construct() {
$this->ged = new Ged();
}
public function index()
{
unset($_FILES['fichier_upload']);
$d1 = $this->requete->getParametreDate("d1");
$d2 = $this->requete->getParametreDate("d2");
$nomOrigine = $this->requete->getParametreFormulaire("nomOrigine");
$codeNaturePiece = $this->requete->getParametreFormulaire("codeNaturePiece");
$geds = $this->ged->getgedadherent($d1, $d2, $nomOrigine, $codeNaturePiece);
$this->genererVueAjax(array('geds' => $geds));
}
}

View File

@ -0,0 +1,24 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Ged.php';;
class ControleurAjaxlistegedbeneficiaireprod extends Controleur {
private $ged;
public function __construct() {
$this->ged = new Ged();
}
public function index()
{
unset($_FILES['fichier_upload']);
$d1 = $this->requete->getParametreDate("d1");
$d2 = $this->requete->getParametreDate("d2");
$nomOrigine = $this->requete->getParametreFormulaire("nomOrigine");
$geds = $this->ged->getgedbeneficiaireprod($d1, $d2, $nomOrigine);
$this->genererVueAjax(array('geds' => $geds));
}
}

View File

@ -105,7 +105,9 @@ class ControleurCreeradherent extends Controleur {
$adresseGeo = $this->requete->getParametreFormulaire("adresseGeo");
$adressePostale = $this->requete->getParametreFormulaire("adressePostale");
$codePays = $this->requete->getParametre("codePays");
$telephonFixe = $this->requete->getParametreFormulaire("telephonFixe");
$telephonFixe = ""; // $this->requete->getParametreFormulaire("telephonFixe");
$telephonePortable = $this->requete->getParametreFormulaire("telephonePortable");
$email = $this->requete->getParametreFormulaire("email");
$dateEntree = $this->requete->getParametreDate("dateEntree");

View File

@ -0,0 +1,152 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Ged.php';
require_once 'Modele/Naturepiece.php';
require_once 'Modele/Menuvueutilisateur.php';
class ControleurGedadherent extends Controleur {
private $ged;
private $naturepiece;
public function __construct() {
$this->menuvue = new Menuvueutilisateur();
$this->menuvue->getMenuVue('Gedadherent');
$this->ged = new Ged();
$this->naturepiece = (new Naturepiece())->getListe();
}
public function index($msgErreur=null)
{
$message = "";
$nouveau_fichier = "rien";
$nomOrigine = $this->requete->getParametreFormulaire("nomOrigine");
$codeNaturePiece = $this->requete->getParametreFormulaire("codeNaturePiece");
if(!empty($_POST))
{
define('TARGET', $_SESSION['cheminGed']); // Repertoire cible
define('MAX_SIZE', 10000000); // Taille max en octets du fichier
// Tableaux de donnees
// ".avi", ".bmp", ".doc", ".docx", ".gif", ".jpeg", "jpg", "jpe", ".mkv", ".mp3", ".pdf", ".png", ".pps", ".xls", ".xlsx", ".wav"
// $tabExt = array('jpg','png','jpeg'); // Extensions autorisees
$tabExt = array("avi", "bmp", "doc", "docx", "gif", "jpeg", "jpg", "jpe", "mkv", "mp3", "mp4", "pdf", "png", "pps", "xls", "xlsx", "wav"); // Extensions autorisees
// Variables
$extension = '';
if($codeNaturePiece == "AUT"){
$libelleDocument = $this->requete->getParametreFormulaire("libelleAutre");
}else{
$libelleDocument = $this->ged->getLibelleTypeDocument($codeNaturePiece);
}
var_dump(array($codeNaturePiece, $libelleDocument));
die();
if( !is_dir(TARGET) )
{
if( !mkdir(TARGET, 0755) )
{
$message = est_anglophone()
? 'Error: the target directory cannot be created! Check that you have sufficient rights to do so or create it manually!'
: 'Erreur : le répertoire cible ne peut être créé ! Vérifiez que vous disposez des droits suffisants pour le faire ou créez-le manuellement !';
}
}
// On verifie si le champ est rempli
if( !empty($_FILES['fichier_upload']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo($_FILES['fichier_upload']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
if(in_array(strtolower($extension), $tabExt))
{
$message = $_FILES['fichier_upload']['size'];
// On verifie les dimensions et taille du fichier
if($_FILES['fichier_upload']['size'] <= MAX_SIZE)
{
$taille = $_FILES['fichier_upload']['size'];
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier_upload']['error']) && UPLOAD_ERR_OK === $_FILES['fichier_upload']['error'])
{
// On renomme le fichier
$nomOrigine = $_FILES['fichier_upload']['name'];
$nouveau_fichier = dateJourSql()."_".uniqid().".".$extension;
// Si c'est OK, on teste l'upload
if(move_uploaded_file($_FILES['fichier_upload']['tmp_name'], TARGET.$nouveau_fichier))
{
$message = est_anglophone()
? 'Uploaded successfully'
: 'Chargé avec succès';
// on va envoyer dans la base de données
$this->ged->enregistrergedadherent($nomOrigine, $nouveau_fichier, $taille, $codeNaturePiece, $libelleDocument);
$this->rediriger("Gedadherent");
}
else
{
// Sinon on affiche une erreur systeme
$message = est_anglophone()
? 'Problem during loading!'
: 'Problème lors du chargement !';
}
}
else
{
$message = est_anglophone()
? 'An internal error prevented the loading'
: 'Une erreur interne a empêché le chargement';
}
}
else
{
// $message = 'Erreur dans les dimensions du fichier !';
$message = est_anglophone()
? $_FILES['fichier_upload']['size']." Error in the file dimensions!"
: $_FILES['fichier_upload']['size']." Erreur dans les dimensions du fichier !";
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message = est_anglophone()
? 'File extension is incorrect!'
: 'Extension du fichier est incorrecte !';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message = est_anglophone()
? 'Please select a file!'
: 'Veuillez sélectionner un fichier SVP !';
}
// fin upload
}
$msgErreur = $message;
$d1 = $_SESSION['dUneSemaineAvant_C'];
$d2 = date('Y-m-d');
$geds = $this->ged->getgedadherent($d1, $d2, $nomOrigine, $codeNaturePiece);
unset($_FILES['fichier_upload']);
$this->genererVue(array('geds' => $geds, 'msgErreur' => $msgErreur, 'naturepiece' => $this->naturepiece));
}
}

View File

@ -0,0 +1,134 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Ged.php';
require_once 'Modele/Menuvueutilisateur.php';
class ControleurGedbeneficiaireprod extends Controleur {
private $ged;
public function __construct() {
$this->menuvue = new Menuvueutilisateur();
$this->menuvue->getMenuVue('Gedbeneficiaireprod');
$this->ged = new Ged();
}
public function index($msgErreur=null)
{
$message = "";
$nouveau_fichier = "Rien";
if(!empty($_POST))
{
define('TARGET', $_SESSION['cheminGed']); // Repertoire cible
define('MAX_SIZE', 10000000); // Taille max en octets du fichier
// Tableaux de donnees
// ".avi", ".bmp", ".doc", ".docx", ".gif", ".jpeg", "jpg", "jpe", ".mkv", ".mp3", ".pdf", ".png", ".pps", ".xls", ".xlsx", ".wav"
// $tabExt = array('jpg','png','jpeg'); // Extensions autorisees
$tabExt = array("avi", "bmp", "doc", "docx", "gif", "jpeg", "jpg", "jpe", "mkv", "mp3", "mp4", "pdf", "png", "pps", "xls", "xlsx", "wav"); // Extensions autorisees
// Variables
$extension = '';
if( !is_dir(TARGET) )
{
if( !mkdir(TARGET, 0755) )
{
$message = est_anglophone()
? 'Error: the target directory cannot be created! Check that you have sufficient rights to do so or create it manually!'
: 'Erreur : le répertoire cible ne peut être créé ! Vérifiez que vous disposez des droits suffisants pour le faire ou créez-le manuellement !';
}
}
// On verifie si le champ est rempli
if( !empty($_FILES['fichier_upload']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo($_FILES['fichier_upload']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
if(in_array(strtolower($extension), $tabExt))
{
$message = $_FILES['fichier_upload']['size'];
// On verifie les dimensions et taille du fichier
if($_FILES['fichier_upload']['size'] <= MAX_SIZE)
{
$taille = $_FILES['fichier_upload']['size'];
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier_upload']['error']) && UPLOAD_ERR_OK === $_FILES['fichier_upload']['error'])
{
// On renomme le fichier
$nomOrigine = $_FILES['fichier_upload']['name'];
$nouveau_fichier = dateJourSql()."_".uniqid().".".$extension;
// Si c'est OK, on teste l'upload
if(move_uploaded_file($_FILES['fichier_upload']['tmp_name'], TARGET.$nouveau_fichier))
{
$message = est_anglophone()
? 'Uploaded successfully'
: 'Chargé avec succès';
// on va envoyer dans la base de données
$this->ged->enregistrergedbeneficiaireprod($nomOrigine, $nouveau_fichier, $taille);
$this->rediriger("Gedbeneficiaireprod");
}
else
{
// Sinon on affiche une erreur systeme
$message = est_anglophone()
? 'Problem during loading!'
: 'Problème lors du chargement !';
}
}
else
{
$message = est_anglophone()
? 'An internal error prevented the loading'
: 'Une erreur interne a empêché le chargement';
}
}
else
{
$message = est_anglophone()
? $_FILES['fichier_upload']['size']." Error in the file dimensions!"
: $_FILES['fichier_upload']['size']." Erreur dans les dimensions du fichier !";
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message = est_anglophone()
? 'File extension is incorrect!'
: 'Extension du fichier est incorrecte !';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message = est_anglophone()
? 'Please select a file!'
: 'Veuillez sélectionner un fichier SVP !';
}
// fin upload
}
$msgErreur = $message;
$d1 = $_SESSION['dUneSemaineAvant_C'];
$d2 = date('Y-m-d');
$geds = $this->ged->getgedbeneficiaireprod($d1, $d2, "");
unset($_FILES['fichier_upload']);
$this->genererVue(array('geds' => $geds, 'msgErreur' => $msgErreur));
}
}

View File

@ -38,7 +38,9 @@ class ControleurGedpolice extends Controleur {
{
if( !mkdir(TARGET, 0755) )
{
$message = 'Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !';
$message = est_anglophone()
? 'Error: the target directory cannot be created! Check that you have sufficient rights to do so or create it manually!'
: 'Erreur : le répertoire cible ne peut être créé ! Vérifiez que vous disposez des droits suffisants pour le faire ou créez-le manuellement !';
}
}
@ -69,7 +71,10 @@ class ControleurGedpolice extends Controleur {
// Si c'est OK, on teste l'upload
if(move_uploaded_file($_FILES['fichier_upload']['tmp_name'], TARGET.$nouveau_fichier))
{
$message = 'Chargé avec succès / Uploaded successfully';
$message = est_anglophone()
? 'Uploaded successfully'
: 'Chargé avec succès';
// on va envoyer dans la base de données
$this->ged->enregistrergedpolice($nomOrigine, $nouveau_fichier, $taille);
@ -78,30 +83,39 @@ class ControleurGedpolice extends Controleur {
else
{
// Sinon on affiche une erreur systeme
$message = 'Problème lors du chargement !';
$message = est_anglophone()
? 'Problem during loading!'
: 'Problème lors du chargement !';
}
}
else
{
$message = 'Une erreur interne a empêché le chargement';
$message = est_anglophone()
? 'An internal error prevented the loading'
: 'Une erreur interne a empêché le chargement';
}
}
else
{
$message .= $_FILES['fichier_upload']['size']." Erreur dans les dimensions du fichier !";
// $message = 'Erreur dans les dimensions du fichier !';
$message = est_anglophone()
? $_FILES['fichier_upload']['size']." Error in the file dimensions!"
: $_FILES['fichier_upload']['size']." Erreur dans les dimensions du fichier !";
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message = 'Extension du fichier est incorrecte !';
$message = est_anglophone()
? 'File extension is incorrect!'
: 'Extension du fichier est incorrecte !';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message = 'Veuillez sélectionner un fichier SVP! / Please select a file!';
$message = est_anglophone()
? 'Please select a file!'
: 'Veuillez sélectionner un fichier SVP !';
}
// fin upload

View File

@ -6929,4 +6929,53 @@ function modifier_beneficiaire(id)
{
window.location.assign($("#racineWeb" ).val()+"Modifierbeneficiaire/"+id+"/");
}
}
function lister_ged_adherent()
{
d1 = $("#d1").val();
d2 = $("#d2").val();
nomOrigine = $("#nomOrigine").val();
codeNaturePiece = $("#codeNaturePiece").val();
donnees = 'd1='+d1+'&d2='+d2+'&nomOrigine='+nomOrigine+'&codeNaturePiece='+codeNaturePiece;
$("#div_ged").html('<div style="padding-top:80px;"><img src="Bootstrap/images/loading.gif"/>&nbsp;&nbsp;<span style="font-size:15pt;">' + 'Veuillez patienter... / Please wait...' + '</span></div>');
$.ajax({
url: $("#racineWeb").val()+"Ajaxlistegedadherent/",
type : 'post',
data: donnees,
error: function(errorData) {
},
success: function(data) {
$("#div_ged").html(data);
},
complete: function() {
}
});
}
function lister_ged_beneficiaire_prod()
{
d1 = $("#d1").val();
d2 = $("#d2").val();
nomOrigine = $("#nomOrigine").val();
donnees = 'd1='+d1+'&d2='+d2+'&nomOrigine='+nomOrigine;
$("#div_ged").html('<div style="padding-top:80px;"><img src="Bootstrap/images/loading.gif"/>&nbsp;&nbsp;<span style="font-size:15pt;">' + 'Veuillez patienter... / Please wait...' + '</span></div>');
$.ajax({
url: $("#racineWeb").val()+"Ajaxlistegedbeneficiaireprod/",
type : 'post',
data: donnees,
error: function(errorData) {
},
success: function(data) {
$("#div_ged").html(data);
},
complete: function() {
}
});
}

View File

@ -69,26 +69,32 @@ class Ged extends Modele {
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
public function getgedadherent($d1, $d2, $nomOrigine)
public function getgedadherent($d1, $d2, $nomOrigine, $codeNaturePiece)
{
$idAdherent = $_SESSION['idAdherent_C'];
$sql = 'call sp_r_get_ged_adherent(?, ?, ?, ?)';
$codeNaturePiece = contruireParamLike($codeNaturePiece);
$sql = 'call sp_get_ged_adherent_rh(?, ?, ?, ?, ?);';
$resultat = $this->executerRequete($sql, array($idAdherent, $d1, $d2, $nomOrigine));
//var_dump(array($idAdherent, $d1, $d2, $nomOrigine, $codeNaturePiece)); die();
$resultat = $this->executerRequete($sql, array($idAdherent, $d1, $d2, $nomOrigine, $codeNaturePiece));
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
public function enregistrergedadherent($nomOrigine, $nouveau_fichier, $taille)
public function enregistrergedadherent($nomOrigine, $nouveau_fichier, $taille, $codeNaturePiece, $libelleDocument)
{
$idAdherent = $_SESSION['idAdherent_C'];
$user = $_SESSION['login'];
$cheminFichier = $_SESSION['dossierGed'].$nouveau_fichier;
$sql = 'call sp_r_ajouter_ged_adherent(?, ?, ?, ?, ?)';
$sql = 'call sp_ajouter_ged_adherent_rh(?, ?, ?, ?, ?)';
$this->executerRequete($sql, array($idAdherent, $nomOrigine, $cheminFichier, $taille, $user));
$this->executerRequete($sql, array($idAdherent, $nomOrigine, $cheminFichier, $taille, $user, $codeNaturePiece, $libelleDocument));
}
public function getgedpolice($d1, $d2, $nomOrigine)
@ -226,10 +232,25 @@ class Ged extends Modele {
$sql = 'call sp_a_get_ged_adherent_rd(?)';
$resultat = $this->executerRequete($sql, array($idDemandeRemboursement));
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
public function getLibelleTypeDocument($codeNaturePiece){
$codeSociete = $_SESSION['codeSociete'];
if(est_anglophone()){
$sql = 'SELECT fn_get_type_document_eng(?, ?) as libelleDocument';
} else{
$sql = 'SELECT fn_get_type_document(?, ?) as libelleDocument';
}
$resultat = $this->executerRequete($sql, array($codeNaturePiece, $codeSociete));
$ligne = $resultat->fetch(PDO::FETCH_ASSOC);
return $ligne['libelleDocument'];
}
}

View File

@ -0,0 +1,50 @@
<div id="div_ged" class="card border-0 shadow-sm">
<?php if((isset($msgErreur)) && ($msgErreur > " ")) : ?>
<div class="alert alert-danger m-3 border-0 shadow-xs"><?= $msgErreur ?></div>
<?php endif; ?>
<div class="table-responsive">
<table id="table_ged_famille" class="table table-hover align-middle mb-0" style="font-size:8.5pt; width:100%;">
<thead class="table-dark text-nowrap">
<tr>
<th class="text-center">Date</th>
<th class="text-center">Src</th>
<th><?= _("Souscripteur / Police") ?></th>
<th><?= _("Bénéficiaire (Adhérent)") ?></th>
<th><?= _("Type du Document") ?></th>
<th><?= _("Nom du Document") ?></th>
<th class="text-center no-export"><?= _("Action") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($geds as $ged):
$idGed = $this->nettoyer($ged['idGed']);
$cheminFichier = $this->nettoyer($ged['cheminFichier']);
?>
<tr class="text-nowrap">
<td class="text-center small text-muted"><?= dateheureLang($this->nettoyer($ged['dateSysteme'])) ?></td>
<td class="text-center"><span class="badge bg-light text-dark border small fw-normal"><?= $this->nettoyer($ged['source']) ?></span></td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['souscripteur']) ?></div>
<div class="small text-primary"> <?= $this->nettoyer($ged['numeroPolice']) ?></div>
</td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['beneficiaire']) ?></div>
<div class="small text-muted italic"><?= $this->nettoyer($ged['adherent']) ?></div>
</td>
<td class="small"><?= $this->nettoyer($ged['libelleDocument']) ?></td>
<td class="small text-truncate" style="max-width: 200px;" title="<?= $this->nettoyer($ged['nomOrigine']) ?>">
<i class="far fa-file-alt me-1 text-secondary"></i> <?= $this->nettoyer($ged['nomOrigine']) ?>
</td>
<td class="text-center">
<a class="btn btn-xs btn-outline-danger shadow-sm fw-bold px-3" href="<?= $cheminFichier ?>" target="_blank">
<i class="fas fa-download me-1"></i> <?= _("Télécharger") ?>
</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>

View File

@ -0,0 +1,58 @@
<div id="div_ged" class="card border-0 shadow-sm overflow-hidden">
<?php if((isset($msgErreur)) && ($msgErreur > " ")) : ?>
<div class="alert alert-danger m-3 border-0 shadow-xs text-center fw-bold">
<i class="fas fa-exclamation-triangle me-2"></i> <?= $msgErreur ?>
</div>
<?php endif; ?>
<div class="table-responsive">
<table class="table table-hover align-middle mb-0" style="font-size:8.5pt;">
<thead class="table-dark text-nowrap">
<tr>
<th class="text-center px-3">Date</th>
<th class="text-center">Src</th>
<th><?= _("Souscripteur / Police") ?></th>
<th><?= _("Prestataire") ?></th>
<th><?= _("Bénéficiaire (Adhérent)") ?></th>
<th><?= _("Document") ?></th>
<th class="text-center"><?= _("Action") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($geds as $ged):
$idGed = $this->nettoyer($ged['idGed']);
$cheminFichier = $this->nettoyer($ged['cheminFichier']);
?>
<tr class="text-nowrap">
<td class="text-center small text-muted"><?= dateheureLang($this->nettoyer($ged['dateSysteme'])) ?></td>
<td class="text-center">
<span class="badge bg-light text-dark border small fw-normal"><?= $this->nettoyer($ged['source']) ?></span>
</td>
<td>
<div class="fw-bold text-dark"><?= $this->nettoyer($ged['souscripteur']) ?></div>
<div class="small text-primary"> <?= $this->nettoyer($ged['numeroPolice']) ?></div>
</td>
<td class="small text-muted text-truncate" style="max-width: 150px;"><?= $this->nettoyer($ged['prestataire']) ?></td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['beneficiaire']) ?></div>
<div class="small text-muted italic">
<?= $this->nettoyer($ged['adherent']) ?> (<?= $this->nettoyer($ged['numeroBeneficiaire']) ?>)
</div>
</td>
<td class="small">
<i class="far fa-file-pdf text-danger me-1"></i>
<span class="text-truncate d-inline-block" style="max-width: 180px;" title="<?= $this->nettoyer($ged['nomOrigine']) ?>">
<?= $this->nettoyer($ged['nomOrigine']) ?>
</span>
</td>
<td class="text-center">
<a href="<?= $cheminFichier ?>" target="_blank" class="btn btn-xs btn-outline-danger shadow-sm px-3 fw-bold border-2">
<i class="fas fa-download me-1"></i><?= _("TELECHARGER") ?>
</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>

View File

@ -1,7 +1,6 @@
<?php
$this->titre = "INTER-SANTE - Ajout Adhérent";
$dateAvenant = $_SESSION['dateAvenant_C'];
//
?>
<div id="div_ajout_adherent" class="container-fluid py-2 animate__animated animate__fadeIn">
@ -151,43 +150,48 @@
</div>
</div>
<div class="col-md-6">
<div class="col-md-12">
<label class="form-label fw-bold small text-uppercase"><?= _("Adresse Géographique") ?></label>
<input type="text" class="form-control" id="adresseGeo" name="adresseGeo">
</div>
<div class="col-md-6">
<label class="form-label fw-bold small text-uppercase"><?= _("E-mail") ?></label>
<div class="input-group">
<span class="input-group-text bg-white text-muted"><i class="fas fa-envelope"></i></span>
<input type="email" class="form-control" id="email" name="email" placeholder="exemple@mail.com">
<div class="d-flex justify-content-between align-items-center">
<label class="form-label fw-bold small text-uppercase">
<?= _("Téléphone Portable") ?><span class="required-star">*</span>
</label>
<div class="form-check mb-1">
<input class="form-check-input" type="checkbox" id="ignorerFormat" name="ignorerFormat">
<label class="form-check-label small text-muted" for="ignorerFormat">
<?= est_anglophone() ? "Free format" : "Format libre"; ?>
</label>
</div>
</div>
</div>
<div class="col-md-6">
<label class="form-label fw-bold small text-uppercase">
<?= _("Téléphone Portable") ?><span class="required-star">*</span>
</label>
<div class="input-group">
<span class="input-group-text bg-white text-muted"><i class="fas fa-mobile-alt"></i></span>
<input type="tel"
class="form-control"
id="telephonePortable"
name="telephonePortable"
placeholder="Ex: 250700000001"
placeholder="Ex:250700000001"
required
pattern="^250[0-9]{9,}$"
title="<?= est_anglophone() ? "The number must start with 250 and contain at least 12 digits." : "Le numéro doit commencer par 250 et comporter au moins 12 chiffres.";?>"
oninput="this.setCustomValidity('')"
oninvalid="this.setCustomValidity('<?= est_anglophone() ? 'The number must mandatorily start with 250 and contain at least 12 digits in total.' : 'Le numéro doit obligatoirement commencer par 250 et contenir au moins 12 chiffres au total.';?>')">
oninvalid="validerMessageTelephone(this)">
</div>
<div class="form-text text-muted small">
<div id="aideTelephone" class="form-text text-muted small">
<i class="fas fa-info-circle"></i> <?= est_anglophone() ? 'Required format: 250XXXXXXXXX (min. 12 digits)' : 'Format requis : 250XXXXXXXXX (min. 12 chiffres)'; ?>
</div>
</div>
<div class="col-md-6">
<label class="form-label fw-bold small text-uppercase"><?= _("Téléphone Fixe") ?></label>
<input type="tel" class="form-control" id="telephonFixe" name="telephonFixe">
<label class="form-label fw-bold small text-uppercase mb-1"><?= _("E-mail") ?></label>
<div class="input-group pt-1">
<span class="input-group-text bg-white text-muted"><i class="fas fa-envelope"></i></span>
<input type="email" class="form-control" id="email" name="email" placeholder="exemple@mail.com">
</div>
</div>
</div>
</div>
@ -250,8 +254,54 @@
</div>
<?php endif; ?>
</div>
<script>
document.getElementById('telephonePortable').addEventListener('input', function (e) {
const inputTel = document.getElementById('telephonePortable');
const checkIgnorer = document.getElementById('ignorerFormat');
const aideTel = document.getElementById('aideTelephone');
// Messages traduits pour le JS
const msgErreur = "<?= est_anglophone() ? 'The number must start with 250 and contain at least 12 digits.' : 'Le numéro doit commencer par 250 et comporter au moins 12 chiffres.'; ?>";
// Fonction pour gérer les messages d'erreur personnalisés
window.validerMessageTelephone = function(input) {
if (!checkIgnorer.checked) {
input.setCustomValidity(msgErreur);
} else {
input.setCustomValidity('');
}
};
// Écouteur sur la checkbox pour activer/désactiver les règles
checkIgnorer.addEventListener('change', function() {
if (this.checked) {
// On retire les contraintes
inputTel.removeAttribute('pattern');
inputTel.removeAttribute('title');
inputTel.setCustomValidity('');
inputTel.classList.remove('is-invalid');
aideTel.style.display = 'none'; // On cache l'aide du format requis
inputTel.placeholder = "<?= _('Entrez le numéro'); ?>";
} else {
// On remet les contraintes par défaut
inputTel.setAttribute('pattern', '^250[0-9]{9,}$');
inputTel.setAttribute('title', msgErreur);
aideTel.style.display = 'block';
inputTel.placeholder = "Ex:250700000001";
// On redéclenche la validation visuelle
inputTel.dispatchEvent(new Event('input'));
}
});
// Validation visuelle en temps réel (is-valid / is-invalid)
inputTel.addEventListener('input', function() {
if (checkIgnorer.checked) {
this.classList.remove('is-invalid');
this.classList.add('is-valid');
return;
}
const pattern = /^250[0-9]{9,}$/;
if (pattern.test(this.value)) {
this.classList.remove('is-invalid');

186
Vue/Gedadherent/index.php Normal file
View File

@ -0,0 +1,186 @@
<?php $this->titre = "INTER-SANTE - GED Famille"; ?>
<div id="div_adherent" class="container-fluid py-1 animate__animated animate__fadeIn">
<h1 class="text-primary"><i class="bi bi-file-earmark-person me-2"></i><?= _('G E D Adhérent') ?></h1>
<div class="card-header d-flex justify-content-between align-items-center py-1 mb-2">
<h5 class="mb-0 fw-bold">
<?= _("POLICE") ?> : <span class="text-secondary"><?= $this->nettoyer($_SESSION['numeroPolice_C']) ?></span>
<span class="ms-3 badge bg-primary text-light small fw-normal">ID: <?= $this->nettoyer($_SESSION['idPolice_C']) ?></span>
</h5>
</div>
<div class="alert alert-warning border-0 shadow-sm d-flex align-items-center mb-4">
<i class="fas fa-exclamation-circle fs-4 me-3"></i>
<div>
<strong><?= _("Information :") ?></strong>
<?= _("Affichage limité aux 50 derniers documents. Utilisez les filtres pour affiner votre recherche.") ?>
</div>
</div>
<div class="row g-4">
<div class="col-xl-12">
<div class="card border-0 shadow-sm">
<div class="card-body">
<form id="form_ged_adherent" enctype="multipart/form-data" action="Gedadherent" method="post">
<div class="row g-3">
<div class="col-md-3">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Période du") ?></label>
<div class="input-group input-group-sm">
<span class="input-group-text bg-white"><i class="far fa-calendar-alt"></i></span>
<input class="form-control datepicker text-center" type="text" id="d1" name="d1"
value="<?= dateLang($_SESSION['dUneSemaineAvant_C'], $_SESSION['lang']) ?>" required>
<span class="input-group-text bg-light fw-bold"><?= _("au") ?></span>
<input class="form-control datepicker text-center" type="text" id="d2" name="d2"
value="<?= dateCouranteLang($_SESSION['lang']) ?>" required>
</div>
</div>
<div class="col-md-5">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Nom du document") ?></label>
<input class="form-control form-control-sm" type="text" id="nomOrigine" name="nomOrigine" placeholder="<?= _("Rechercher un fichier...") ?>">
</div>
<div class="col-md-4">
<label class="form-label fw-bold small text-muted text-uppercase">
<?= _("Type Document") ?><span class="text-danger"> *</span>
</label>
<select class="form-select" id="codeNaturePiece" name="codeNaturePiece">
<?php liste_options($naturepiece, ""); ?>
</select>
</div>
<div class="col-md-12" id="div_autre_type" style="display: none;">
<div class="alert alert-info py-2 shadow-sm border-start border-4 border-info mb-0">
<label class="form-label fw-bold small text-muted text-uppercase mb-1">
<?= _("Préciser si autre type") ?><span class="text-danger"> *</span>
</label>
<input type="text" class="form-control form-control-sm border-info" id="libelleAutre" name="libelleAutre" placeholder="<?= _("Saisissez le type de document...") ?>">
</div>
</div>
<div class="col-md-10">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Nouveau Document") ?></label>
<input class="form-control form-control-sm border-info" name="fichier_upload" type="file" id="fichier_upload">
</div>
<div class="col-md-2 d-flex align-items-end gap-2">
<button type="button" class="btn btn-primary btn-sm flex-fill fw-bold" onclick="lister_ged_adherent();">
<i class="fas fa-sync-alt me-1"></i> <?= _("Filtrer") ?>
</button>
<button type="submit" name="submit" class="btn btn-success btn-sm flex-fill fw-bold">
<i class="fas fa-upload me-1"></i> <?= _("Envoyer") ?>
</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="col-xl-12">
<div id="div_ged" class="card border-0 shadow-sm">
<?php if((isset($msgErreur)) && ($msgErreur > " ")) : ?>
<div class="alert alert-danger m-3 border-0 shadow-xs"><?= $msgErreur ?></div>
<?php endif; ?>
<div class="table-responsive">
<table id="table_ged_famille" class="table table-hover align-middle mb-0" style="font-size:8.5pt; width:100%;">
<thead class="table-dark text-nowrap">
<tr>
<th class="text-center">Date</th>
<th class="text-center">Src</th>
<th><?= _("Souscripteur / Police") ?></th>
<th><?= _("Bénéficiaire (Adhérent)") ?></th>
<th><?= _("Type du Document") ?></th>
<th><?= _("Nom du Document") ?></th>
<th class="text-center no-export"><?= _("Action") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($geds as $ged):
$idGed = $this->nettoyer($ged['idGed']);
$cheminFichier = $this->nettoyer($ged['cheminFichier']);
?>
<tr class="text-nowrap">
<td class="text-center small text-muted"><?= dateheureLang($this->nettoyer($ged['dateSysteme'])) ?></td>
<td class="text-center"><span class="badge bg-light text-dark border small fw-normal"><?= $this->nettoyer($ged['source']) ?></span></td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['souscripteur']) ?></div>
<div class="small text-primary"> <?= $this->nettoyer($ged['numeroPolice']) ?></div>
</td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['beneficiaire']) ?></div>
<div class="small text-muted italic"><?= $this->nettoyer($ged['adherent']) ?></div>
</td>
<td class="small"><?= $this->nettoyer($ged['libelleDocument']) ?></td>
<td class="small text-truncate" style="max-width: 200px;" title="<?= $this->nettoyer($ged['nomOrigine']) ?>">
<i class="far fa-file-alt me-1 text-secondary"></i> <?= $this->nettoyer($ged['nomOrigine']) ?>
</td>
<td class="text-center">
<a class="btn btn-xs btn-outline-danger shadow-sm fw-bold px-3" href="<?= $cheminFichier ?>" target="_blank">
<i class="fas fa-download me-1"></i> <?= _("Télécharger") ?>
</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const selectNature = document.getElementById('codeNaturePiece');
const divAutre = document.getElementById('div_autre_type');
const inputAutre = document.getElementById('libelleAutre');
const formGed = document.getElementById('form_ged_adherent');
// 1. Affichage dynamique du champ Libellé
selectNature.addEventListener('change', function() {
if (this.value === 'AUT') {
divAutre.style.display = 'block';
inputAutre.focus();
} else {
divAutre.style.display = 'none';
inputAutre.value = '';
}
});
// 2. Blocage du Submit si conditions non remplies
formGed.addEventListener('submit', async function(e) {
// On ne vérifie que si on tente de soumettre (clic sur Envoyer)
const isSubmit = e.submitter && e.submitter.name === 'submit';
if (isSubmit) {
const valNature = selectNature.value;
// Cas 1 : Type de document vide
if (valNature === "") {
e.preventDefault();
await alert_ebene(
"Veuillez sélectionner un type de document avant d'envoyer.",
"Please select a document type before sending."
);
selectNature.focus();
return false;
}
// Cas 2 : Type "Autre" mais libellé vide
if (valNature === 'AUT' && inputAutre.value.trim() === "") {
e.preventDefault();
await alert_ebene(
"Veuillez préciser le type de document (champ Libellé).",
"Please specify the document type (Label field)."
);
inputAutre.focus();
return false;
}
}
});
});
</script>

View File

@ -0,0 +1,123 @@
<?php $this->titre = "INTER-SANTE - GED Bénéficiaire"; ?>
<div id="div_adherent" class="container-fluid py-1 animate__animated animate__fadeIn">
<h1 class="text-primary"><i class="fas fa-file-user me-2"></i><?= _('G E D Bénéficiaire') ?></h1>
<div class="card-header d-flex justify-content-between align-items-center py-1 mb-2">
<h5 class="mb-0 fw-bold">
<?= _("POLICE") ?> : <span class="text-secondary"><?= $this->nettoyer($_SESSION['numeroPolice_C']) ?></span>
<span class="ms-3 badge bg-primary text-light small fw-normal">ID: <?= $this->nettoyer($_SESSION['idPolice_C']) ?></span>
</h5>
</div>
<div class="alert alert-warning border-0 shadow-sm d-flex align-items-center mb-4">
<i class="fas fa-exclamation-circle fs-4 me-3"></i>
<div>
<strong><?= _("Information :") ?></strong>
<?= _("Affichage limité aux 50 derniers documents. Utilisez les filtres pour affiner votre recherche.") ?>
</div>
</div>
<div class="card border-0 shadow-sm mb-4">
<div class="card-body p-3">
<form enctype="multipart/form-data" action="Gedbeneficiaireprod" method="post">
<div class="row g-3 align-items-end">
<div class="col-xl-4 col-lg-6">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Période de recherche") ?></label>
<div class="input-group input-group-sm">
<span class="input-group-text bg-white"><i class="fas fa-calendar-alt text-primary"></i></span>
<input class="form-control datepicker text-center fw-bold" type="text" id="d1" name="d1"
value="<?= dateLang($_SESSION['dUneSemaineAvant_C'], $_SESSION['lang']) ?>" required>
<span class="input-group-text bg-light fw-bold px-3"><?= _("au") ?></span>
<input class="form-control datepicker text-center fw-bold" type="text" id="d2" name="d2"
value="<?= dateCouranteLang($_SESSION['lang']) ?>" required>
</div>
</div>
<div class="col-xl-3 col-lg-6">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Nom du document") ?></label>
<div class="input-group input-group-sm">
<span class="input-group-text bg-white"><i class="fas fa-search"></i></span>
<input class="form-control" type="text" id="nomOrigine" name="nomOrigine"
onkeypress="javascript:ctrlkeypress_lister_ged(event);" placeholder="<?= _("Contient...") ?>">
<button class="btn btn-primary fw-bold px-3" type="button" onclick="javascript:lister_ged_beneficiaire_prod();">
<i class="fas fa-sync-alt me-1"></i>
</button>
</div>
</div>
<div class="col-xl-3 col-lg-8">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Joindre un nouveau document") ?></label>
<input class="form-control form-control-sm border-info" name="fichier_upload" type="file" id="fichier_upload" />
</div>
<div class="col-xl-2 col-lg-4 text-end">
<button type="submit" name="submit" class="btn btn-success btn-sm w-100 fw-bold py-2 shadow-sm">
<i class="fas fa-upload me-2"></i><?= _("ENVOYER") ?>
</button>
</div>
</div>
</form>
</div>
</div>
<div id="div_ged" class="card border-0 shadow-sm overflow-hidden">
<?php if((isset($msgErreur)) && ($msgErreur > " ")) : ?>
<div class="alert alert-danger m-3 border-0 shadow-xs text-center fw-bold">
<i class="fas fa-exclamation-triangle me-2"></i> <?= $msgErreur ?>
</div>
<?php endif; ?>
<div class="table-responsive">
<table class="table table-hover align-middle mb-0" style="font-size:8.5pt;">
<thead class="table-dark text-nowrap">
<tr>
<th class="text-center px-3">Date</th>
<th class="text-center">Src</th>
<th><?= _("Souscripteur / Police") ?></th>
<th><?= _("Prestataire") ?></th>
<th><?= _("Bénéficiaire (Adhérent)") ?></th>
<th><?= _("Document") ?></th>
<th class="text-center"><?= _("Action") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($geds as $ged):
$idGed = $this->nettoyer($ged['idGed']);
$cheminFichier = $this->nettoyer($ged['cheminFichier']);
?>
<tr class="text-nowrap">
<td class="text-center small text-muted"><?= dateheureLang($this->nettoyer($ged['dateSysteme'])) ?></td>
<td class="text-center">
<span class="badge bg-light text-dark border small fw-normal"><?= $this->nettoyer($ged['source']) ?></span>
</td>
<td>
<div class="fw-bold text-dark"><?= $this->nettoyer($ged['souscripteur']) ?></div>
<div class="small text-primary"> <?= $this->nettoyer($ged['numeroPolice']) ?></div>
</td>
<td class="small text-muted text-truncate" style="max-width: 150px;"><?= $this->nettoyer($ged['prestataire']) ?></td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['beneficiaire']) ?></div>
<div class="small text-muted italic">
<?= $this->nettoyer($ged['adherent']) ?> (<?= $this->nettoyer($ged['numeroBeneficiaire']) ?>)
</div>
</td>
<td class="small">
<i class="far fa-file-pdf text-danger me-1"></i>
<span class="text-truncate d-inline-block" style="max-width: 180px;" title="<?= $this->nettoyer($ged['nomOrigine']) ?>">
<?= $this->nettoyer($ged['nomOrigine']) ?>
</span>
</td>
<td class="text-center">
<a href="<?= $cheminFichier ?>" target="_blank" class="btn btn-xs btn-outline-danger shadow-sm px-3 fw-bold border-2">
<i class="fas fa-download me-1"></i><?= _("TELECHARGER") ?>
</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>

View File

@ -396,8 +396,6 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
</nav>
</aside>
<!-- Main Content -->
<main class="app-main" id="mainContent">
<INPUT class="sr-only" TYPE="text" id="vue" name="vue" value="<?= isset($_SESSION['vue']) ? $_SESSION['vue'] : ""; ?>">
@ -712,7 +710,7 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<!-- Application Scripts -->
<script src="/Js/fonctions.js?ver=2026.03.09.01"></script>
<script src="/Js/fonctions.js?ver=2026.03.24.00"></script>
<script type="text/javascript">
raffraichier_gabarit();