find.ctp 10.7 KB
<?php

use Cake\I18n\Date;
use Cake\I18n\Time;

// (EP) Variables exportées par MaterielsController pour cette vue (à compléter)
$s_nom_gest = $s_nom_gest;
$s_nomresp = $s_nomresp;
// $s_numero_laboratoire => plus utilisé car on préfère la recherche plein texte
isset($statuses_color) && $statuses_color = $statuses_color;
isset($controller) && $controller = $controller;

// ...
?>



<div class="index col-lg-5 col-md-7 col-sm-9">
	<h2>
		<i class="icon-search"></i> Recherche de matériel
	</h2>


<?php
$r = isset($_results);
if ($r) {
    echo '<div class="actions" style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;">';
    echo $this->Html->link('<i class="icon-file"></i> Exporter la liste', [
        'controller' => 'Materiels',
        'action' => 'export',
        'search'
    ], [
        'title' => 'Editer le résultat de la recherche',
        'style' => 'margin-right: 15px',
        'escape' => false
    ]);
    echo '</div>';
}
?>
	
	<h3 id="t_filter" class='toggle' style="cursor: pointer;">
		<i
			class=<?php if ($r) echo '"icon-chevron-up"'; echo '"icon-chevron-down"'; ?>
			style="font-size: 14px;" id="i_filter"></i> <span
			style="text-decoration: underline;">Filtres</span>
	</h3>

	<div id="filter" <?php if ($r) echo 'style="display: none;"'; ?>>
		<?php
if (isset($_results))
    $selected = [];
else
    $selected = [
        'selected' => ''
    ];

// FORMULAIRE DE RECHERCHE
echo $this->Form->create();

// -------Bouton recherche Haut---------
//echo $this->Form->submit('Rechercher', [  'style' => 'width: 20%' ]);

// CHAMP DE RECHERCHE GENERIQUE
echo $this->Form->control('s_all', [
'label' => 'TOUS LES CHAMPS'
]);

echo "<br/>OU BIEN, seulement quelques champs spécifiques :<br/><br/>";

// Designation
echo $this->Form->control('s_designation', [
    'label' => 'Désignation'
]);

// Matériel administratif et/ou technique
$typeOptions = [];
echo $this->Form->control('s_matostype', [
    'label' => 'Type',
    'empty' => 'Tous',
    'options' => [
        'A' => 'Administratif',
        'T' => 'Technique',
        'AT' => 'Administratif et Technique',
        'AO' => 'Administratif seulement',
        'TO' => 'Technique seulement'
    ],
    //'style' => 'width: 200px'
]);

// DOMAINE
echo $this->Form->control('s_sur_categorie_id', [
    'label' => 'Domaine',
    'empty' => 'Tous',
    $selected,
    'options' => $s_sur_categories,
    'style' => 'width: 200px'
]);

// CATEGORIES
// by default, ALL categs
$categs = $s_categories;

// if a domaine is selected, reduce the categories list to this domaine
if ($this->request->getData('s_sur_categorie_id') !== null && $this->request->getData('s_sur_categorie_id') != '') {
    $categs = $categs->where([
        'sur_categorie_id =' => $this->request->getData('s_sur_categorie_id')
    ]);
}

echo $this->Form->control('s_categorie_id', [
    'label' => 'Catégorie',
    'empty' => 'Toutes',
    'style' => 'width: 200px',
    'options' => $categs
]);

// SOUS-CATEGORIES
// by default, list is empty
$souscategs = [];
// if a categ is selected, update sous-categs list for this categ (only)
if ($this->request->getData('s_categorie_id') !== null && ($this->request->getData('s_categorie_id') != '')) {
    $souscategs = $s_sous_categories;
    $souscategs = $souscategs->where([
        'categorie_id' => $this->request->getData('s_categorie_id')
    ]);
}

echo $this->Form->control('s_sous_categorie_id', [
    'label' => 'Sous-catégorie',
    'empty' => 'Toutes',
    'style' => 'width: 200px',
    'options' => $souscategs
]);

$options = [
    'CREATED' => 'Créé',
    'VALIDATED' => 'Validé',
    'TOBEARCHIVED' => 'À archiver'
];
if (in_array($role, [
    'Administration',
    'Administration Plus',
    'Super Administrateur'
])) {
    $options['ARCHIVED'] = 'Archivé';
}
// STATUT
echo $this->Form->control('s_status', [
    'label' => 'Statut',
    'empty' => 'Tous',
    $selected,
    'options' => $options,
    'style' => 'width: 200px'
]);

// Groupe metier et thematique
echo $this->Form->control('s_groupes_metier_id', [
    'label' => $configuration->nom_groupe_metier,
    'empty' => 'Tous',
    $selected,
    'options' => $s_groupes_metiers,
    'style' => 'width: 200px'
]);
echo $this->Form->control('s_groupes_thematique_id', [
    'label' => $configuration->nom_groupe_thematique,
    'empty' => 'Tous',
    $selected,
    'options' => $s_groupes_thematiques,
    'style' => 'width: 200px'
]);

// Autres champs
echo $this->Form->control('s_numero_commande', [
    'label' => 'N° BC'
]);

echo $this->Form->control('s_numero_laboratoire', [
    'label' => 'N° interne (labo)',
    'empty' => 'Tous',
    'style' => 'width: 200px',
    //'options' => $s_numero_laboratoire
]);

$orgas = $s_organismes;
echo $this->Form->control('s_organisme_id', [
    'label' => 'Organisme',
    'empty' => 'Tous',
    'style' => 'width: 200px',
    'options' => $orgas
]);

echo $this->Form->control('s_fournisseur_id', [
    'label' => 'Fournisseur',
    'empty' => 'Tous',
    'style' => 'width: 200px',
    'options' => $s_fournisseurs

]);

$salle = $s_salles;
echo $this->Form->control('s_salle', [
    'label' => 'Détail lieu de stockage',
    'empty' => 'Tous',
    'style' => 'width: 200px',
    'options' => $salle

]);

echo $this->Form->control('s_gestionnaire_id', [
    'label' => 'Nom du Gestionnaire de référence',
    'empty' => 'Tous',
    'options' => $s_nom_gest
]);

echo $this->Form->control('s_nom_responsable', [
    'label' => 'Nom du propriétaire',
    'empty' => 'Tous',
    'options' => $s_nomresp
]);
echo $this->Form->control('s_numero_inventaire_organisme', [
    'label' => 'N° inventaire organisme'
]);

echo $this->Form->control('s_numero_inventaire_old', [
    'label' => 'N° inventaire (ancien)'
]);

if (in_array($role, [
    'Responsable',
    'Administration',
    'Administration Plus',
    'Super Administrateur'
])) {
    // Date acquisition
    echo "<u>DATE d'achat:</u>";
    echo $this->Form->control('s_date_acquisition', [
        'placeholder' => 'Cliquez pour selectionner une date',
        'label' => '- Date exacte',
        'class' => 'datepicker'
    ]);
    echo $this->Form->control('s_periode_acquisition1', [
        'placeholder' => 'Cliquez pour selectionner une date',
        'label' => '- Date Début',
        'class' => 'datepicker'
    ]);
    echo $this->Form->control('s_periode_acquisition2', [
        'placeholder' => 'Cliquez pour selectionner une date',
        'label' => '- Date Fin',
        'class' => 'datepicker'
    ]);
    
    echo "<u>MONTANT :</u>";
    echo $this->Form->control('s_prix_ht', [
        'label' => '- Montant exact'
    ]);
    echo $this->Form->control('s_prix_ht_sup', [
        'label' => '- Montant sup. ou égal à'
    ]);
    echo $this->Form->control('s_prix_ht_inf', [
        'label' => '- Montant inf. ou égal à'
    ]);
}
/*
// CHAMP DE RECHERCHE GENERIQUE
echo $this->Form->control('s_all', [
'label' => 'TOUS LES CHAMPS'
]);
*/

// -------Bouton recherche Bas---------
//echo $this->Form->submit('Rechercher', [ 'style' => 'width: 20%']);
echo $this->Form->button('Rechercher', ['class'=>'btn btn-outline-success', 'type'=>'submit', 'style' => 'margin: 0px;']);
echo '<br/><br/><br/>';
?>
</div>





<!--  RESULT DISPLAY -->

<h3 id="t_result" class='toggle' style="cursor: pointer;">
	<i class=<?php if ($r) echo '"icon-chevron-down"'; echo '"icon-chevron-up"'; ?> style="font-size: 14px;" id="i_result"></i> 
	<span style="text-decoration: underline;">Résultats <?php if ($r) echo '('.sizeof($_results).')'; ?></span>
</h3>

<div id="result" <?php if (!$r) echo 'style="display: none;"'; ?>>
	
	<?php
    //if (isset($_results) && sizeof($_results) != 0) {
    if ( !isset($_results) || sizeof($_results) == 0 ) echo 'Aucun résultats pour cette recherche.';
    
    else {
    $this->request->getSession()->write("resultTri", $_results);
    
	/* 
	<!-- 
	 Affichage de la liste des matériels (table headers + data)
	 -->
	*/
	$METRO = false;
	// fetch from src/Template/Element/materiels_list.ctp
	//echo $this->element('materiels_list_headers',
	echo $this->element('materiels_list', [
        //'HEADERS' => true,
        'SELECTED_STATUS' => false,
        'materiels' => $_results,
        //'HAS_COL_METRO' => true,
        'METRO' => $METRO,
    ]);

    }
    ?>

</div> <!-- result -->
	
	
<?php
echo $this->Form->end();
?> 
</div>




<!--
<div class="actions">
		<php echo $this->element('menu') ?>
</div>
-->

<?php

/**
 * GESTION DES EVENEMENTS SUR LES DOMAINES/CATEGORIES/SOUS-CATEGORIES (avec javascript Jquery)
 *
 * Phase initialisation (1ère ouverture de la page) :
 * - domaine ==> value = TOUS
 * - categ ==> value = TOUTES
 * - scateg ==> value = Aucune
 *
 * Event domaine change :
 * - si select <> "Tous" ==> categ value = from domaine (select="Toutes")
 * - si select = "Tous" ==> categ value = TOUTES (select="Toutes")
 * - dans tous les cas, vider scateg (select="Toutes")
 *
 * Event categ change :
 * - si select <> "Toutes" ==> domaine select = from categ, et scateg values = from categ (select="Toutes")
 * - si select = "Toutes" ==> vider scateg (select="Toutes")
 *
 * Event scateg change : RIEN A FAIRE
 */
?>
<script type="text/javascript">
/** 
 * Event DOMAINE change
 * 
 * Sur sélection d'un DOMAINE ==> update CATEGORIES + empty SOUS-CATEGORIES
 * 
 * Dans le détail :
 * - si select <> "Tous" ==> categ value = from domaine (select="Toutes")
 * - si select = "Tous" ==> categ value = TOUTES (select="Toutes")
 * - dans les 2 cas, vider scateg (select="Toutes")
 * 
 */
$(document).ready(function () {
	$("#s-sur-categorie-id").bind("change", function (event) {
			var domaineId=$("#s-sur-categorie-id :selected").val();
			if (domaineId=="") 
				updateSelectOptionsFromAnother("#s-categorie-id", "#s-sur-categorie-id", "Categories/getAll", "Toutes");
			else 
				updateSelectOptionsFromAnother("#s-categorie-id", "#s-sur-categorie-id", "Categories/getBySurCategorie", "Toutes");
			emptySelectOptions("#s-sous-categorie-id","Toutes");
			return false;
	});
});

/**
 * Event CATEGORIE change
 * - si select <> "Toutes" ==> domaine select = from categ, et scateg values = from categ (select="Toutes")
 * - si select = "Toutes" ==> empty scateg (select="Toutes")
 */
$(document).ready(function () {
	$("#s-categorie-id").bind("change", function (event) {
		var categId=$("#s-categorie-id :selected").val();
		var categLabel=$("#s-categorie-id :selected").text();
		if (categId=="") emptySelectOptions("#s-sous-categorie-id","Toutes");
		else {
			// 1) update sous-categories from selected categorie
			updateSelectOptionsFromAnother("#s-sous-categorie-id", "#s-categorie-id", "SousCategories/getByCategorie", "Toutes");
			// 2) select new domaine = the selected categorie one
			updateSelectOptionsFromAnother("#s-sur-categorie-id", "#s-categorie-id", "SurCategories/getFromCategorie", "");
		}
		return false;
	});
});
</script>