ser
This commit is contained in:
parent
c68f1b9f68
commit
8ebaec172c
|
|
@ -1,11 +1,9 @@
|
|||
<?php
|
||||
require_once 'Framework/Controleur.php';
|
||||
|
||||
// require_once 'Modele/Prestataire.php';
|
||||
require_once 'Modele/Pays.php';
|
||||
require_once 'Modele/Ville.php';
|
||||
require_once 'Modele/Localite.php';
|
||||
|
||||
require_once 'Modele/Typeprestataire.php';
|
||||
require_once 'Modele/Reseausoins.php';
|
||||
require_once 'Modele/Menuvueutilisateur.php';
|
||||
|
|
@ -19,6 +17,7 @@ class ControleurPrestataires extends Controleur
|
|||
private $ville;
|
||||
private $localite;
|
||||
|
||||
|
||||
public function __construct() {
|
||||
$this->menuvue = new Menuvueutilisateur();
|
||||
$this->menuvue->getMenuVue("Prestataires");
|
||||
|
|
@ -40,7 +39,7 @@ class ControleurPrestataires extends Controleur
|
|||
|
||||
// $typeprestataire = $this->typeprestataire->getListeTous();
|
||||
$typeprestataire = $this->typeprestataire->getListeReseau();
|
||||
// $reseausoins = $this->reseausoins->getReseausoinsFamille();
|
||||
$reseausoins = $this->reseausoins->getListe();
|
||||
|
||||
// $codeReseau = $this->reseausoins->getReseauFamille();
|
||||
|
||||
|
|
@ -56,7 +55,7 @@ class ControleurPrestataires extends Controleur
|
|||
'ville' => $ville,
|
||||
'listelocalite' => $localite,
|
||||
'typeprestataire' => $typeprestataire,
|
||||
// 'reseausoins' => $reseausoins,
|
||||
'reseausoins' => $reseausoins
|
||||
// 'codeReseau' => $codeReseau
|
||||
)
|
||||
);
|
||||
|
|
|
|||
|
|
@ -55,12 +55,21 @@ class Reseausoins extends Modele {
|
|||
|
||||
public function getListe()
|
||||
{
|
||||
$sql = 'SELECT codeReseau as code, libelle FROM reseausoins WHERE (codeSociete=?)
|
||||
AND (typeSysteme != "1") AND (actif = "1") order by libelle';
|
||||
if (est_anglophone())
|
||||
{
|
||||
$sql = 'SELECT codeReseau as `code`, libelleEng as libelle FROM reseausoins WHERE (codeSociete=?)
|
||||
AND (typeSysteme != "1") AND (actif = "1") order by libelle';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'SELECT codeReseau as `code`, libelle FROM reseausoins WHERE (codeSociete=?)
|
||||
AND (typeSysteme != "1") AND (actif = "1") order by libelle';
|
||||
}
|
||||
|
||||
$liste = $this->executerRequete($sql,array($_SESSION['codeSociete']));
|
||||
|
||||
return $liste->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
}
|
||||
|
||||
public function getReseausoinsFamille()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,222 +1,174 @@
|
|||
<?php $this->titre = "Intersanté - Réseau de soins"; ?>
|
||||
|
||||
<div class="card shadow-lg border-0 mb-4" style="border-radius: 15px;">
|
||||
<div class="card-header bg-primary text-white py-3" style="border-radius: 15px 15px 0 0;">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-8">
|
||||
<h4 id="h4_titre" class="mb-2 text-center">
|
||||
<i class="fas fa-project-diagram"></i>
|
||||
<span id="id_titre_page"><?= _("Réseau des prestataires") ?></span>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
|
||||
<!-- Filtres de recherche -->
|
||||
<div class="card shadow-sm mb-8">
|
||||
<div class="card-body">
|
||||
<div class="row g-3">
|
||||
<!-- Type Prestataire -->
|
||||
<div class="col-12 col-md-6 col-lg-4">
|
||||
<label class="form-label fw-bold"><?= _("Type du prestataire") ?></label>
|
||||
<SELECT class="form-select mobile-select" data-live-search="true" id="codeTypePrestataire" NAME="codeTypePrestataire" autofocus>
|
||||
<?php liste_options_consultation($typeprestataire, ""); ?>
|
||||
</SELECT>
|
||||
<div class="card shadow-lg border-0 mb-4 main-container-card">
|
||||
<div class="card-header bg-primary text-white py-3">
|
||||
<div class="d-flex align-items-center justify-content-center">
|
||||
<i class="fas fa-project-diagram fa-lg me-3"></i>
|
||||
<h4 id="h4_titre" class="mb-0 fw-bold">
|
||||
<span id="id_titre_page"><?= _("Réseau des prestataires") ?></span>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body bg-light-subtle">
|
||||
<div class="card shadow-sm border-0 mb-4 search-filter-card">
|
||||
<div class="card-body p-4">
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-md-6 col-lg-4">
|
||||
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Type du prestataire") ?></label>
|
||||
<select class="form-select select2-enable" id="codeTypePrestataire" name="codeTypePrestataire" autofocus>
|
||||
<?php liste_options_consultation($typeprestataire, ""); ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-4">
|
||||
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Catégorie du réseau") ?></label>
|
||||
<select class="form-select" id="codeReseau" name="codeReseau">
|
||||
<?php liste_options_consultation($reseausoins, ""); ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-4">
|
||||
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Nom du prestataire") ?></label>
|
||||
<input class="form-control" type="text" id="libelle" name="libelle"
|
||||
placeholder="Ex: Clinique..."
|
||||
onkeypress="javascript:ctrlkeypress_liste_prestataires_actif(event);">
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-4">
|
||||
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Pays") ?></label>
|
||||
<select onChange="ajaxListerVilleConsultation();" class="form-select" id="codePays" name="codePays">
|
||||
<?php liste_options_consultation($pays, $_SESSION['codePaysSociete']); ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-4">
|
||||
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Région") ?></label>
|
||||
<div id="listeville">
|
||||
<select onChange="ajaxListerLocaliteConsultation();" class="form-select" id="codeVille" name="codeVille">
|
||||
<?php liste_options_consultation($ville, ""); ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- Nom -->
|
||||
<div class="col-12 col-md-6 col-lg-4">
|
||||
<label class="form-label fw-bold"><?= _("Nom du prestataire") ?></label>
|
||||
<INPUT class="form-control form-control-sm" type="text" id="libelle" name="libelle"
|
||||
onkeypress="javascript:ctrlkeypress_liste_prestataires_actif(event);">
|
||||
</div>
|
||||
|
||||
<!-- Pays -->
|
||||
<div class="col-12 col-md-6 col-lg-4 hide-on-mobile">
|
||||
<label class="form-label fw-bold"><?= _("Pays") ?></label>
|
||||
<SELECT onChange="ajaxListerVilleConsultation();" class="form-select mobile-select" data-live-search="true" id="codePays" NAME="codePays">
|
||||
<?php liste_options_consultation($pays, $_SESSION['codePaysSociete']); ?>
|
||||
</SELECT>
|
||||
</div>
|
||||
|
||||
<!-- Région -->
|
||||
<div class="col-12 col-md-6 col-lg-4">
|
||||
<label class="form-label fw-bold"><?= _("Région") ?></label>
|
||||
<div id="listeville">
|
||||
<SELECT onChange="ajaxListerLocaliteConsultation();" class="form-select mobile-select" data-live-search="true" id="codeVille" NAME="codeVille">
|
||||
<?php liste_options_consultation($ville, ""); ?>
|
||||
</SELECT>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Ville -->
|
||||
<div class="col-12 col-md-6 col-lg-4">
|
||||
<label class="form-label fw-bold"><?= _("Commune") ?></label>
|
||||
<div id="listelocalite">
|
||||
<SELECT class="form-select mobile-select" data-live-search="true" id="codeLocalite" NAME="codeLocalite">
|
||||
<?php liste_options_consultation($listelocalite, "" ); ?>
|
||||
</SELECT>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bouton Afficher -->
|
||||
<div class="col-12 col-md-6 col-lg-4 d-flex align-items-end">
|
||||
<button id="btn_filtre" type="button" class="btn btn-primary w-100 mt-3 mt-md-0"
|
||||
onclick="javascript:afficher_liste_prestataires_actifs();">
|
||||
<i class="fas fa-search me-2"></i> <?= _("Afficher les résultats") ?>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-md-6 col-lg-4">
|
||||
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Commune") ?></label>
|
||||
<div id="listelocalite">
|
||||
<select class="form-select" id="codeLocalite" name="codeLocalite">
|
||||
<?php liste_options_consultation($listelocalite, "" ); ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 mt-4">
|
||||
<button id="btn_filtre" type="button" class="btn btn-primary btn-lg w-100 shadow-sm transition-all"
|
||||
onclick="handleSearchClick();">
|
||||
<span id="btn_text"><i class="fas fa-search me-2"></i> <?= _("Afficher les résultats") ?></span>
|
||||
<span id="btn_spinner" class="d-none spinner-border spinner-border-sm me-2" role="status"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Résultats -->
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-body p-0">
|
||||
<div id="div_liste_prestataire" class="table-responsive">
|
||||
|
||||
</div>
|
||||
|
||||
<div id="container_resultats" class="card shadow-sm border-0 d-none">
|
||||
<div class="card-body p-0">
|
||||
<div id="div_liste_prestataire" class="table-responsive">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.card {
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
}
|
||||
:root {
|
||||
--primary-soft: #e7f1ff;
|
||||
--transition-speed: 0.3s;
|
||||
}
|
||||
|
||||
.form-label {
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.main-container-card {
|
||||
border-radius: 15px !important;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.table th {
|
||||
font-size: 0.9rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
.search-filter-card {
|
||||
border-radius: 12px !important;
|
||||
transition: transform var(--transition-speed);
|
||||
}
|
||||
|
||||
.table td {
|
||||
font-size: 0.9rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.form-control, .form-select {
|
||||
border-radius: 8px;
|
||||
padding: 0.6rem 1rem;
|
||||
border: 1px solid #dee2e6;
|
||||
transition: all var(--transition-speed);
|
||||
}
|
||||
|
||||
/* Améliorations pour mobile */
|
||||
@media (max-width: 768px) {
|
||||
.card-body {
|
||||
padding: 1rem;
|
||||
.form-control:focus, .form-select:focus {
|
||||
border-color: #0d6efd;
|
||||
box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.15);
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 0.5rem;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.table-responsive {
|
||||
font-size: 0.8rem;
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.form-select, .form-control {
|
||||
font-size: 16px; /* Empêche le zoom automatique sur iOS */
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* Amélioration spécifique pour les selects */
|
||||
select.form-control {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
|
||||
background-repeat: no-repeat;
|
||||
background-position: right 0.75rem center;
|
||||
background-size: 16px 12px;
|
||||
padding-right: 2.5rem;
|
||||
}
|
||||
|
||||
/* Assurer que les selects ne débordent pas */
|
||||
.row.g-3 > div {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
/* Ajustement de l'espacement */
|
||||
.mb-8 {
|
||||
margin-bottom: 2rem !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Pour les très petits écrans */
|
||||
@media (max-width: 576px) {
|
||||
.container-fluid {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
.transition-all {
|
||||
transition: all var(--transition-speed) ease;
|
||||
}
|
||||
|
||||
.card-body {
|
||||
padding: 0.75rem;
|
||||
}
|
||||
|
||||
.form-label {
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 0.4rem 0.75rem;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Correction spécifique pour Bootstrap Selectpicker si utilisé */
|
||||
.bootstrap-select .btn {
|
||||
font-size: 16px !important;
|
||||
max-width: 100%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.btn-primary:hover {
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 12px rgba(13, 110, 253, 0.3) !important;
|
||||
}
|
||||
|
||||
.bootstrap-select .dropdown-menu {
|
||||
max-width: 100vw;
|
||||
width: 100%;
|
||||
}
|
||||
/* Améliorations Tablettes & Mobiles */
|
||||
@media (max-width: 768px) {
|
||||
.card-header h4 { font-size: 1.1rem; }
|
||||
.form-label { font-size: 0.75rem; }
|
||||
|
||||
/* Empêche le zoom sur iOS */
|
||||
input, select { font-size: 16px !important; }
|
||||
|
||||
.p-4 { padding: 1.5rem !important; }
|
||||
}
|
||||
|
||||
/* Amélioration de la lisibilité sur mobile */
|
||||
select:focus {
|
||||
border-color: #80bdff;
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
|
||||
}
|
||||
/* Animation de chargement */
|
||||
.loading-opacity {
|
||||
opacity: 0.6;
|
||||
pointer-events: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
// Script pour améliorer l'expérience mobile des selects
|
||||
function handleSearchClick() {
|
||||
const btn = document.getElementById('btn_filtre');
|
||||
const text = document.getElementById('btn_text');
|
||||
const spinner = document.getElementById('btn_spinner');
|
||||
const resultContainer = document.getElementById('container_resultats');
|
||||
|
||||
// UI Feedback
|
||||
btn.disabled = true;
|
||||
text.classList.add('d-none');
|
||||
spinner.classList.remove('d-none');
|
||||
|
||||
// Appel de votre fonction originale
|
||||
if (typeof afficher_liste_prestataires_actifs === "function") {
|
||||
afficher_liste_prestataires_actifs();
|
||||
|
||||
// Simulation d'affichage du container de résultat
|
||||
// (À intégrer idéalement dans le success de votre appel AJAX original)
|
||||
setTimeout(() => {
|
||||
resultContainer.classList.remove('d-none');
|
||||
btn.disabled = false;
|
||||
text.classList.remove('d-none');
|
||||
spinner.classList.add('d-none');
|
||||
}, 800);
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// S'assurer que les selects ne causent pas de débordement
|
||||
const selects = document.querySelectorAll('select');
|
||||
|
||||
selects.forEach(select => {
|
||||
// Ajouter un attribut pour améliorer l'expérience mobile
|
||||
select.setAttribute('size', '1');
|
||||
|
||||
// Prévenir le zoom sur iOS quand on focus un select
|
||||
select.addEventListener('focus', function() {
|
||||
this.style.fontSize = '16px';
|
||||
});
|
||||
|
||||
// Optionnel: restaurer la taille après perte du focus
|
||||
select.addEventListener('blur', function() {
|
||||
this.style.fontSize = '';
|
||||
});
|
||||
});
|
||||
|
||||
// Redimensionner dynamiquement si nécessaire
|
||||
window.addEventListener('resize', function() {
|
||||
selects.forEach(select => {
|
||||
select.style.maxWidth = '100%';
|
||||
// Optimisation des interactions mobiles
|
||||
const selects = document.querySelectorAll('.form-select');
|
||||
selects.forEach(s => {
|
||||
s.addEventListener('change', function() {
|
||||
this.classList.add('is-valid');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user