index.ctp 16.2 KB
<?php
use Cake\I18n\Time;
use Cake\I18n\Date;
use Cake\ORM\TableRegistry;
?>


<div class="materiels index">
<?php echo '<h2><i class="icon-list"></i> Liste des matériels ('.$nbMateriels.')</h2>'; ?>

<div class="actions" style="width: 100%; float: none; padding: 0 0; ">
<?php 
echo '<p>';
echo $this->Html->link ( '<i class="icon-plus"></i> Nouveau Matériel',
		[
				'action' => 'add'
		], [
				'title' => 'Ajouter un matériel',
				'escape' => false
		]);
echo '</p>';

if(in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) {
echo '<p>';
echo "Afficher les matériels : ";
echo '</br>';
echo '</br>';
$b_all = $b_cre = $b_val = $b_toarc = $b_arc = '';
$SELECTED = '<i class="icon-ok"></i>';
if (isset ( $STATUS )) {
	if ($STATUS == 'CREATED')
		$b_cre = $SELECTED;
		else if ($STATUS == 'VALIDATED')
			$b_val = $SELECTED;
			else if ($STATUS == 'TOBEARCHIVED')
				$b_toarc = $SELECTED;
				else if ($STATUS == 'ARCHIVED')
					$b_arc = $SELECTED;
} else
	$b_all = $SELECTED;

	// Affichage des boutons en haut de la page
	echo $this->Html->link ( $b_all . ' Tous', [
			'action' => 'index'
	], [
			'title' => 'Tous',
			'style' => 'margin-right: 5px',
			'escape' => false
	] );
	echo $this->Html->link ( $b_cre . ' A valider', [
			'action' => 'index',
			'CREATED'
	], [
			'title' => 'Liste des matériels créés',
			'style' => 'margin-right: 5px',
			'escape' => false
	] );
	echo $this->Html->link ( $b_val . ' Validés', [
			'action' => 'index',
			'VALIDATED'
	], [
			'title' => 'Liste des materiels que l\'on peut archiver',
			'style' => 'margin-right: 5px',
			'escape' => false
	]);
	echo $this->Html->link ( $b_toarc . ' A sortir', [
			'action' => 'index',
			'TOBEARCHIVED'
	], [
			'title' => 'A sortir de l\'inventaire',
			'style' => 'margin-right: 5px',
			'escape' => false
	]);
	echo $this->Html->link ( $b_arc . ' Archivés', [
			'action' => 'index',
			'ARCHIVED'
	], [
			'title' => 'A sortir de l\'inventaire',
			'style' => 'margin-right: 5px',
			'escape' => false
	]);
	
	echo '</p>';

		// ACTIONS : buttons "Tout selectionner", "Tout decocher"
		// - show only with "A valider" and "A sortir"
		if (isset ( $STATUS ) && $nbMateriels != 0) {
			echo $this->Html->link ( '<i class="icon-check"></i> Tout cocher', '#all', [
					'onclick' => 'selectAll()',
					'title' => 'Sélectionner tous les matériels',
					'style' => ': 400px; margin-right: 50px',
					'escape' => false
			]);
			echo $this->Html->link ( '<i class="icon-check-empty"></i> Tout décocher', '#none', [
					'onclick' => 'selectNone()',
					'title' => 'Sélectionner aucun matériel',
					'style' => 'margin-right: 50px',
					'escape' => false
			]);
		}
	}
?>
</div>

<?php
if ($nbMateriels != 0) { 
	echo $this->Form->create('materiels', ['url' => '/materiels/execActions']);
	echo $this->Form->input('aff_par_defaut', [
			'label' => 'Afficher',
			'options' => ['20'=> 20, '30'=>30, '50'=>50, '100'=>100, '150'=>150, '200'=>200],
	]);
	if(isset($STATUS)) echo $this->Form->hidden ( 'what', ['value' => $STATUS]);
?>
	
    <table style="border-collapse: separate; border-spacing: 0;">
        <thead>
            <tr>
                <?php if (isset($STATUS)) { echo '<th></th>'; }?>
				<th class="actions"><?= __('') ?></th>
                <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('organisme_id', 'Org.') ?></th>
                <th><?= $this->Paginator->sort('numero_inventaire_organisme', 'N° Invent. Org.') ?></th>
                <th><?= $this->Paginator->sort('nom_responsable', 'Nom du propriétaire') ?></th>
                <th><?= $this->Paginator->sort('status', 'Statut') ?></th>
                <th><?= $this->Paginator->sort('date_acquisition', 'Date Achat') ?></th>
                <th><?= $this->Paginator->sort('etiquette', 'Et') ?></th>
				<th><?= $this->Paginator->sort('metrologie', 'Metro') ?></th>
            </tr>
        </thead>
        <tbody>
        	
        	<?php 
        		// Pour changer la couleur du nom du matos si la garantie est passée
        		$time = Time::now(); // On récupère la date et l'heure actuelles
    			$today = new date("$time->year-$time->month-$time->day"); // On extrait la date pour la vérification de fin de garantie
    			$today = $today->format('Ydm'); // On formatte la date initialement en 31-12-2000 (par exemple) en un format qui pourra etre comparé : 20001231
    		?>
    		
            <?php foreach ($materiels as $materiel): ?>
            
            <?php 
	            if ($materiel->date_fin_garantie !== NULL) {
		            $timeFin = new time($materiel->date_fin_garantie);
		            $dateFin = new date("$timeFin->year-$timeFin->month-$timeFin->day");
		            $dateFin = $dateFin->format('Ydm');
	            }
	            if($materiel->date_fin_garantie !== NULL) $styleLien = ($today >= $dateFin) ? 'style="color: #FF0000"' : '' ;
	            else $styleLien = '';
			?>
            
            <tr>
            	<?php if (isset($STATUS)) {
            	 echo '<td class="smallText">'.$this->Form->checkbox($materiel->id, ['style' => 'margin: 3px','id' => $materiel->id]).'</td>' ;
 				}
 				?>
                
               <td class="actions" style="padding: 6px 0; text-align: left;">
                <?php if (in_array($materiel->status, ['CREATED', 'VALIDATED'])): 
                	  if(($role == 'Utilisateur' && (in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]))) || (in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) 
                	  		|| ($role == 'Responsable' && 
									((isset($userConnected->groupes_metier_id) && $userConnected->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $userConnected->groupes_metier_id)
									 ||(isset($userConnected->groupe_thematique_id) && $userConnected->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id)))) {
				?>
                    <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $materiel->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?>
                <?php } endif; ?>

                    <?php 
                    if(in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur']) || ($role == 'Responsable'
                    		&& ((isset($userConnected->groupes_metier_id) && $userConnected->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $userConnected->groupes_metier_id)
                    				||(isset($userConnected->groupe_thematique_id) && $userConnected->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id)))) {
                    	
                    					if(h($materiel->status) == 'CREATED'  && $role != 'Responsable') {
				                    	echo $this->Html->link('<i class="icon-ok-sign"></i>',
				                    			['action' => 'statusValidated', $materiel->id],
				                    			['title' => 'Valider', 'style' => 'margin: 0 2px', 'escape' => false,
				                    			'confirm' => 'Êtes-vous sur de vouloir valider '.$materiel->designation.' ?']);
				                    } 
				                    else if (h($materiel->status) == 'VALIDATED') {
				                    	echo $this->Html->link('<i class="icon-inbox"></i>',
				                    			['action' => 'statusToBeArchived', $materiel->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 '.$materiel->designation.' ?']);
				                    	
				                    }
				                    else if (h($materiel->status  && $role != 'Responsable') == 'TOBEARCHIVED' && !in_array($role, ['Responsable', 'Super Administrateur'])){
				                    	echo $this->Html->link('<i class="icon-inbox"></i>',
				                    			['action' => 'statusArchived', $materiel->id],
				                    			['title' => 'Sortir de l\'inventaire', 'style' => 'margin: 0 2px', 'escape' => false,
				                    			'confirm' => 'Êtes-vous sur de vouloir archiver '.$materiel->designation.' ?']);
				                    }
                    
                    }
                   
                   if (h($materiel->status) == 'CREATED') {
                   	if(($role != 'Utilisateur' && $role != 'Responsable') || in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]) 
                   			|| ($role == 'Responsable' && 
									((isset($userConnected->groupes_metier_id) && $userConnected->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $userConnected->groupes_metier_id)
									 ||(isset($userConnected->groupe_thematique_id) && $userConnected->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id)))) {
                   		echo $this->Html->link(__('<i class="icon-trash"></i>'), 
                   				['action' => 'delete', $materiel->id],
                   				['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $materiel->designation)]);
                    }
                   }
                   ?>
                </td>
                <td class="smallText"><?= $materiel->has('designation') ? $this->Html->link($materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $materiel->id],[$styleLien]) : '' ?></td>
                <td class="smallText"><?= h($materiel->numero_laboratoire) ?></td>
                <td class="smallText"><?= $materiel->has('category') ? h($materiel->category->nom) : '' ?></td>
                <td class="smallText"><?= $materiel->has('organisme') ? h($materiel->organisme->nom) : '' ?></td>
                <td class="smallText"><?= h($materiel->numero_inventaire_organisme) ?></td>
                <td class="smallText"><?= h($materiel->nom_responsable) ?></td>
               
                <?php 
                switch(h($materiel->status)) {
                	
                	case 'CREATED':
                		$statut = 'C';
                	break;
                	
                	case 'VALIDATED':
                		$statut = 'V';
                	break;
                	
                	case 'TOBEARCHIVED':
                		$statut = 'TBA';
                	break;
                	
                	case 'ARCHIVED':
                		$statut = 'A';	
                	break;
                	
                	default:
                		$statut = '';		
                	break;
                }
                ?>
                <td class="smallText"><?= $statut ?></td>
                
                <td class="smallText"><?= h($materiel->date_acquisition) ?></td>
                <td class="smallText"><?php if (h($materiel->etiquette) == '1') { echo 'Y'; } else { echo 'N'; } ?></td>
				<td class="smallText"><?php if (h($materiel->metrologie) == '1') { echo 'Y'; } else { echo 'N'; } ?></td>

            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
    
    <?php 
    if (isset ( $STATUS )) {
    	switch ($STATUS) {
    		case 'CREATED' : 		$action = 'Valider les'; 				break;
    		case 'VALIDATED' : 		$action = "Demander l'archivage des"; 	break;
    		case 'TOBEARCHIVED' : 	$action = "Sortir les"; 				break;
    	}
    	
    	if ($STATUS != 'ARCHIVED') {
    		if(!($role == 'Super Administrateur' && $STATUS == 'TOBEARCHIVED')) {
    			echo $this->Form->submit ( $action . ' matériels cochés', [
    					'name' => 'updateSelectedStatus',
    					'id' => 'updateSelectedStatus',
    					'style' => 'margin: 0px'
    			]);
    			echo "<br />" ;
    		}
    	}
    	echo $this->Form->submit ( 'Exporter la liste des matériels cochés', [
    			'name' => 'export',
    			'id' => 'export',
    			'style' => 'margin: 0px;'
    	]);
    	echo "<br />" ;
    }
    
	if(in_array($role, ['Responsable', 'Administration', 'Administration Plus', 'Super Administrateur'])):
	echo $this->Form->submit('Exporter la liste complete (toutes les pages)', [
			'name' => 'exportAll',
			'id' => 'exportAll',
			'style' => 'margin: 0px;' 
	]);
	endif;
	
    ?>
		
    <div class="paging" style="color: black;">
      		<?= $this->Paginator->counter(['format' => 'Page {{page}} sur {{pages}}']) ?>
    		<?= $this->Paginator->first('<< ' . __(''), ['class' => 'prev']) ?>
            <?= $this->Paginator->prev('< ' . __(''), ['class' => 'prev disabled']) ?>
            <?= $this->Paginator->numbers(['separator' => '']) ?>
            <?= $this->Paginator->next(__('') . ' >', ['class' => 'next disabled']) ?>
            <?= $this->Paginator->last(__('') . ' >>', ['class' => 'next']) ?>
    </div>
    <?= $this->Form->end()?>
    <?php 
	} else { echo 'Aucun matériel'; }
    ?>
</div>


    	<div class="actions">
			<?php echo $this->element('menu') ?>
			<?php echo $this->element('menu_index', 
			[ 'pluralHumanName' => 'Matériels',
			'singularHumanName' => 'Matériel' ]) ?>
		</div>
		



<script type="text/javascript">

// Pour changer l'url lorsque le nombre d'éléments souhaités est modifié
$(document).ready(function () {
	$("#aff-par-defaut").bind("change", function (event) {
		var nbr=$("#aff-par-defaut :selected").val();
		var urlDeBase = window.location.href.split("?");
		var urlDecoupee = window.location.search.split("&"), i, j; // On sépare la chaine des paramètres en fonction du &
		var urlDecoupeeBis = new Array();
		var param = 0;
		var bool = false;
		
		for(i=0; i<urlDecoupee.length; ++i) {
			urlDecoupeeBis[i] = urlDecoupee[i].split("="); // On sépare les parametres de leurs valeurs
			for(j=0; j<urlDecoupeeBis[i].length; ++j){
				if(urlDecoupeeBis[i][0] == "aff" || urlDecoupeeBis[i][0] == "?aff") {
					bool = true;
					param = i; // Si le parametre "aff" est trouvé, on le récupère
					break;
				}
			}
		}
		
		if(bool) { // Si le parametre recherche a ete trouve, ...
			urlDecoupeeBis[param][1] = nbr; //urlDecoupeeBis[i][0] c'est le nom du parametre, et urlDecoupeeBis[i][1] c'est la valeur associée 
			var url = "";
			for(i=0; i<urlDecoupee.length; ++i) { //...  on reconstruit une url propre ...
				if(/^\?[a-zA-A0-9]*/.test(urlDecoupeeBis[0][0])) {
					if(i!=0) url += "&";
					// Sauf pour le 1er parametre, qui lui commence par un "?"
				} else url += "&";
				url += urlDecoupeeBis[i][0]+"="+urlDecoupeeBis[i][1];
				// On reforme les parametres "&nom=valeur" en les concatenant
			}
			window.location.href = urlDeBase[0]+url; // ... et on fait la redirection
		} else if(urlDecoupee[0]=="") window.location.href = window.location.href + '?aff=' + nbr; // Sinon on joute juste le parametre en fin d'url
		else window.location.href = window.location.href + '&aff=' + nbr;

	});
});

// Pour lire l'url et actualiser l'option sélectionnée
$(document).ready(function () {
	var affichage = parseInt($_GET('aff'));
	switch(affichage) {
	case 20 :
		document.getElementById('aff-par-defaut').selectedIndex = 0;
		break;
	case 30 :
		document.getElementById('aff-par-defaut').selectedIndex = 1;
		break;
	case 50 :
		document.getElementById('aff-par-defaut').selectedIndex = 2;
		break;
	case 100 :
		document.getElementById('aff-par-defaut').selectedIndex = 3;
		break;
	case 150 :
		document.getElementById('aff-par-defaut').selectedIndex = 4;
		break;
	case 200 :
		document.getElementById('aff-par-defaut').selectedIndex = 5;
		break;
	default : // Par défaut, lorsque le parametre "aff" n'existe pas, au premier affichage
		$("#aff-par-defaut").val(<?php echo $configuration->aff_par_defaut ?>);
		// On récupère la valeur dans la BD directement, mais en PHP, faut pas déconner
		break;
	}
});

// La fonction suivante permet de recuperer les parametres d’une URL
function $_GET(param) {
	var vars = {};
	window.location.href.replace( location.hash, '' ).replace( 
		/[?&]+([^=&]+)=?([^&]*)?/gi, // regexp
		function( m, key, value ) { // callback
			vars[key] = value !== undefined ? value : '';
		}
	);
	
	if ( param ) {
		return vars[param] ? vars[param] : null;	
	}
	return vars;
}

</script>