find.ctp 12.3 KB

<div class="index">
	<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" 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%']);
	
	// Designation
	echo $this->Form->input ( 's_designation', ['label' => 'Désignation']);
	
	// Matériel administratif et/ou technique
	$typeOptions = [];
	echo $this->Form->input ( 's_matostype', [
			'label' => 'Type',
			'empty' => 'Tous',
			'options' => [
					'A' => 'Administratif',
					'T' => 'Technique',
					'AT' => 'Administratif et Technique',
					'AO' => 'Administratif seulement',
					'TO' => 'Technique seulement' 
			],
			'style' => 'width: 280px' 
	]);
	
	// DOMAINE
	echo $this->Form->input ( '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 (isset ( $this->request->data['s_sur_categorie_id'] ) && ($this->request->data['s_sur_categorie_id'] != '')) {
		$categs = $categs->where(['sur_categorie_id =' => $this->request->data['s_sur_categorie_id']]);
	}
	
	echo $this->Form->input ( '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 (isset ( $this->request->data['s_categorie_id'] ) && ($this->request->data['s_categorie_id'] != '')) {
		$souscategs = $s_sous_categories;
		$souscategs = $souscategs->where(['categorie_id' => $this->request->data['s_categorie_id']]);
	}
	
	echo $this->Form->input ( 's_sous_categorie_id', [
			'label' => 'Sous-catégorie',
			'empty' => 'Toutes',
			'style' => 'width: 200px',
			'options' => $souscategs 
	]);
	
	
	// STATUT
	echo $this->Form->input ( 's_status', [
			'label' => 'Statut',
			'empty' => 'Tous',
			$selected,
			'options' => [
					'CREATED' => 'Créé',
					'VALIDATED' => 'Validé',
					'TOBEARCHIVED' => 'À archiver',
					'ARCHIVED' => 'Archivé' 
			],
			'style' => 'width: 200px' 
	]);
	
	// Groupe metier et thematique
	echo $this->Form->input ( 's_groupes_metier_id', [
			'label' => 'Groupe Métier',
			'empty' => 'Tous',
			$selected,
			'options' => $s_groupes_metiers,
			'style' => 'width: 200px' 
	]);
	echo $this->Form->input ( 's_groupes_thematique_id', [
			'label' => 'Groupe Thematique',
			'empty' => 'Tous',
			$selected,
			'options' => $s_groupes_thematiques,
			'style' => 'width: 200px' 
	]);
	
	// Autres champs
	echo $this->Form->input ( 's_numero_commande', [
			'label' => 'N° BC' 
	]);
	echo $this->Form->input ( 's_numero_laboratoire', [
			'label' => 'N° interne (labo)' 
	]);

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

	echo $this->Form->input ( 's_nom_responsable', [
			'label' => 'Responsable' 
	]);
	echo $this->Form->input ( 's_numero_inventaire_organisme', [
			'label' => 'N° inventaire organisme' 
	]);
	echo $this->Form->input ( 's_numero_inventaire_old', [
			'label' => 'N° inventaire (ancien)' 
	]);
	
	// Date acquisition
	echo "<u>DATE d'achat:</u>";
	echo $this->Form->input ( 's_date_acquisition', [
			'placeholder' => 'Cliquez pour selectionner une date',
			'label' => '- Date exacte',
			'class' => 'datepicker' 
	]);
	echo $this->Form->input ( 's_periode_acquisition1', [
			'placeholder' => 'Cliquez pour selectionner une date',
			'label' => '- Date Début',
			'class' => 'datepicker' 
	]);
	echo $this->Form->input ( 's_periode_acquisition2', [
			'placeholder' => 'Cliquez pour selectionner une date',
			'label' => '- Date Fin',
			'class' => 'datepicker' 
	]);
	
	echo "<u>MONTANT :</u>";
	echo $this->Form->input ( 's_prix_ht', ['label' => '- Montant exact']);
	echo $this->Form->input ( 's_prix_ht_sup', ['label' => '- Montant sup. ou égal à']);
	echo $this->Form->input ( 's_prix_ht_inf', ['label' => '- Montant inf. ou égal à']);
	
	// CHAMP DE RECHERCHE GENERIQUE
	echo $this->Form->input ( 's_all', ['label' => 'TOUS LES CHAMPS' ]);
	
	// -------Bouton recherche Bas---------
	echo $this->Form->submit('Rechercher', ['style' => 'width: 20%']);
	echo '<br/><br/><br/>';
	?>
	</div>
	<!--  RESULT DISPLAY -->
	<h3 id="t_result" 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) { 
			
			$this->request->session()->write("resultTri", $_results); 
			
		?>
		<table cellpadding="0" cellspacing="0">
			<thead>
				<tr>
				
					<th><?= $this->Paginator->sort('designation','Désignation') ?></th>
               		<th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th>
                	<th><?= $this->Paginator->sort('categorie_id', 'Catégorie') ?></th>
                	<th><?= $this->Paginator->sort('nom_responsable', 'Responsable') ?></th>
                	<th><?= $this->Paginator->sort('status', 'Statut') ?></th>
                	<th><?= $this->Paginator->sort('date_acquisition', 'Date') ?></th>
					<th style="width: 20px;"></th>
					<th style="width: 20px;"></th>
					<th style="width: 20px;"></th>
				</tr>
			</thead>
			<tbody>
			<!-- Affichage des lignes de données -->
			<?php
			foreach ( $_results as $material ) :
				echo '<tr>';
				
				echo '<td class="smallText">';
				echo $this->Html->link ( h($material->designation), [
						'action' => 'view',
						$material->id
				], ['title' => 'Détails']);
				echo '</td>';
				echo '<td class="smallText">';
				echo $material->numero_laboratoire;
				echo '</td>';
				echo '<td class="smallText">';
				echo $this->Html->link ( $material->nom, [
						'controller' => 'categories',
						'action' => 'view',
						$material->id
				]);
				echo '</td>';
				echo '<td class="smallText">';
				echo $material->nom_responsable;
				echo '</td>';
				echo '<td class="smallText">';
				echo $material->status;
				echo '</td>';
				echo '<td class="smallText">';
				echo date ( "d-m-Y", strtotime ( $material->date_acquisition ));
				echo '</td>';
				
				/*
				 * ACTION 'edit'
				 */
				echo '<td class="actions" style="padding: 6px 0;">';
				
				echo $this->Html->link('<i class="icon-pencil"></i>',
						['action' => 'edit', $material->id],
						['title' => 'Éditer', 'style' => 'margin: 0 2px', 'escape' => false]
						);
				echo '</td>';
				
				echo '<td class="actions" style="padding: 6px 0;">';
				
		            if(h($material->status) == 'CREATED') {
                    	echo $this->Html->link('<i class="icon-ok-sign"></i>',
                    			['action' => 'statusValidated', $material->id],
                    			['title' => 'Valider', 'style' => 'margin: 0 2px', 'escape' => false,
                    			'confirm' => 'Êtes-vous sur de vouloir validé '.$material->designation.' ?']);
                    } 
                    else if (h($material->status) == 'VALIDATED' && h($material->nom_responsable) == $username) {
                    	echo $this->Html->link('<i class="icon-inbox"></i>',
                    			['action' => 'statusToBeArchived', $material->id],
                    			['title' => 'Demander la sortie de l\'inventaire', 'style' => 'margin: 0 2px', 'escape' => false,
                    			'confirm' => 'Êtes-vous sur de vouloir faire une demande d\'archive '.$material->designation.' ?']);
                    	
                    }
                    else if (h($material->status) == 'VALIDATED'){
                    	echo $this->Html->link('<i class="icon-inbox"></i>',
                    			['action' => 'statusArchived', $material->id],
                    			['title' => 'Sortir de l\'inventaire', 'style' => 'margin: 0 2px', 'escape' => false,
                    			'confirm' => 'Êtes-vous sur de vouloir archivé '.$material->designation.' ?']);
                    }
				echo '</td>';
				
				echo '<td class="actions" style="padding: 6px 0;">';
				/*
				 * ACTION 'delete'
				 */
				// Seul un materiel CREATED peut être supprimer
				if ($material->status == 'CREATED') {
				
					echo $this->Form->postLink(__('<i class="icon-trash"></i>'), 
							['action' => 'delete', $material->id],
							['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $material->designation)]
							); 
				}
				echo '</td>';
				echo '<tr>';
			endforeach;
			echo '</tbody>';
			echo '</table>';

		} else {
			echo 'Aucun résultats pour cette recherche.';
		}
		?>
	</div>
	
	
	<?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>