Commit 5289e797 authored by Théo GUILLON's avatar Théo GUILLON
Browse files

Ajout : des filtres sur le registre

parent ebc31592
......@@ -37,7 +37,11 @@ class RegistresController extends AppController {
'Organisation',
'OrganisationUser',
'TraitementRegistre',
'Valeur'
'Valeur',
'Soustraitant',
'Soustraitance',
'Responsable',
'Coresponsable'
];
/**
......@@ -132,20 +136,49 @@ class RegistresController extends AppController {
if (!empty($this->request->data['Registre']['formulaire'])) {
$condition['Fiche.form_id'] = $this->request->data['Registre']['formulaire'];
}
// Filtre sur l'obligation d'un AIPD
if (!empty($this->request->data['Registre']['obligation_pia'])) {
$condition['Fiche.obligation_pia'] = $this->request->data['Registre']['obligation_pia'];
}
// Filtre sur la réalisation d'un AIPD
if (!empty($this->request->data['Registre']['realisation_pia'])) {
$condition['Fiche.realisation_pia'] = $this->request->data['Registre']['realisation_pia'];
}
// Filtre sur le dépot d'un AIPD
if (!empty($this->request->data['Registre']['depot_pia'])) {
$condition['Fiche.depot_pia'] = $this->request->data['Registre']['depot_pia'];
}
// Filtre sur le transfert hors ue
if (!empty($this->request->data['Registre']['transfert_hors_ue'])) {
$condition['Fiche.transfert_hors_ue'] = $this->request->data['Registre']['transfert_hors_ue'];
}
// Filtre sur les données sensibles
if (!empty($this->request->data['Registre']['donnees_sensibles'])) {
$condition['Fiche.donnees_sensibles'] = $this->request->data['Registre']['donnees_sensibles'];
}
// Filtre sur la soustraitance
if (!empty($this->request->data['Registre']['soustraitance'])) {
$condition['Fiche.soustraitance'] = $this->request->data['Registre']['soustraitance'];
}
// Filtre par sous-traitant
if (!empty($this->request->data['Registre']['soustraitant'])) {
$subQuery = [
'alias' => 'formulaires',
'fields' => ['formulaires.id'],
'alias' => 'soustraitances',
'fields' => ['soustraitances.fiche_id'],
'contain' => false,
'conditions' => [
'Fiche.form_id = formulaires.id',
'formulaires.soustraitant' => $this->request->data['Registre']['soustraitance']
'soustraitances.soustraitant_id' => $this->request->data['Registre']['soustraitant']
]
];
$sql = $this->EtatFiche->Fiche->Formulaire->sql($subQuery);
$condition[] = "Fiche.form_id IN ( {$sql} )";
$sql = $this->Soustraitance->sql($subQuery);
$condition[] = "Fiche.id IN ( {$sql} )";
}
// Filtre sur la co-responsabilité
......@@ -153,6 +186,35 @@ class RegistresController extends AppController {
$condition['Fiche.coresponsable'] = $this->request->data['Registre']['coresponsable'];
}
// Filtre par responsable
if (!empty($this->request->data['Registre']['responsable'])) {
$subQuery = [
'alias' => 'coresponsables',
'fields' => ['coresponsables.fiche_id'],
'contain' => false,
'conditions' => [
'coresponsables.responsable_id' => $this->request->data['Registre']['responsable']
]
];
$sql = $this->Coresponsable->sql($subQuery);
$condition[] = "Fiche.id IN ( {$sql} )";
}
// Filtre sur la decision automatisee
if (!empty($this->request->data['Registre']['decisionAutomatisee'])) {
$subQuery = [
'alias' => 'valeurs',
'fields' => ['valeurs.fiche_id'],
'contain' => false,
'conditions' => [
'valeurs.champ_name' => 'decisionAutomatisee',
'valeurs.valeur' => $this->request->data['Registre']['decisionAutomatisee']
]
];
$sql = $this->Valeur->sql($subQuery);
$condition[] = "Fiche.id IN ( {$sql} )";
}
// Filtre sur le type de registre
if (!empty($this->request->data['Registre']['typeRegistre']) && $this->request->data['Registre']['typeRegistre'] !== 'null') {
$condition['Fiche.rt_externe'] = $this->request->data['Registre']['typeRegistre'];
......@@ -262,6 +324,20 @@ class RegistresController extends AppController {
'conditions' => [
'Formulaire.organisations_id' => $this->Session->read('Organisation.id')
]
]),
'all_soustraitants' => $this->Soustraitant->find('list', [
'restrict' => true,
'fields' => [
'Soustraitant.id',
'Soustraitant.raisonsociale',
]
]),
'all_responsables' => $this->Responsable->find('list', [
'restrict' => true,
'fields' => [
'Responsable.id',
'Responsable.raisonsocialestructure',
]
])
];
$this->set(compact('options'));
......
......@@ -183,11 +183,17 @@ msgstr "Sélectionner un formulaire"
msgid "registre.filtreFormulaire"
msgstr "Filtrer par formulaire"
msgid "registre.placeholderSelectionnerSoustraitant"
msgstr "Afficher les traitements sous-traitant"
msgid "registre.filtreSoustraitance"
msgstr "Filtrer les traitements avec de la sous-traitance"
msgid "registre.placeholderSelectionnerSoustraitance"
msgstr "Afficher les traitements avec de la sous-traitance"
msgid "registre.filtreSoustraitant"
msgstr "Filtrer par sous-traitant"
msgstr "Filtrer les traitements par sous-traitant déclaré"
msgid "registre.placeholderSelectionnerSoustraitant"
msgstr "Afficher les traitements par sous-traitant déclaré"
msgid "registre.placeholderSelectionnerArchive"
msgstr "Afficher les traitements"
......@@ -199,10 +205,16 @@ msgid "registre.textTableauSoustraitant"
msgstr "Sous-traitant : "
msgid "registre.filtreCoresponsable"
msgstr "Filtrer par co-responsabilité"
msgstr "Filtrer les traitements avec de la co-responsabilité"
msgid "registre.placeholderSelectionnerCoresponsable"
msgstr "Afficher les traitements avec co-responsabilité"
msgstr "Afficher les traitements avec de la co-responsabilité"
msgid "registre.filtreResponsable"
msgstr "Filtrer les traitements par co-responsabilité"
msgid "registre.placeholderSelectionnerResponsable"
msgstr "Afficher les traitements par co-responsabilité"
msgid "registre.textTableauCoresponsable"
msgstr "Co-responsable :"
......@@ -210,4 +222,46 @@ msgstr "Co-responsable :"
msgid "registre.textTableauSousTraitance"
msgstr "Sous-traitance :"
msgid "registre.filtreObligationPIA"
msgstr "Filtrer les traitement ayant une obligation de réalisation d'analyse d'impact (AIPD)"
msgid "registre.placeholderSelectionnerObligationPIA"
msgstr "Afficher les traitements ayant une obligation d'analyse d'impact"
msgid "registre.filtreRealisationPIA"
msgstr "Filtrer les traitement ayant une analyse d'impact (AIPD) réalisée"
msgid "registre.placeholderSelectionnerRealisationPIA"
msgstr "Afficher les traitements ayant une analyse d'impact réalisée"
msgid "registre.filtreDepotPIA"
msgstr "Filtrer les traitements ayant une analyse d'impact (AIPD) en annexe"
msgid "registre.placeholderSelectionnerDepotPIA"
msgstr "Afficher les traitements ayant une analyse d'impact déposée"
msgid "registre.filtreTransfereHorsUE"
msgstr "Filtrer les traitements ayant des transferts hors de l'Union européenne"
msgid "registre.placeholderSelectionnerTransfereHorsUE"
msgstr "Afficher les traitements ayant des transferts hors de l'Union européenne"
msgid "registre.filtreDonneesSensibles"
msgstr "Filtrer les traitements ayant des données sensibles"
msgid "registre.placeholderSelectionnerDonneesSensibles"
msgstr "Afficher les traitements ayant des données sensibles"
msgid "registre.filtreDecisionAutomatisee"
msgstr "Filtrer par prise de décision automatisée sur le traitement"
msgid "registre.placeholderSelectionnerDecisionAutomatisee"
msgstr "Afficher les traitements avec une prise de décision automatisée"
msgid "registre.filtreTypeRegistre"
msgstr "Filtrer par type de registre"
msgid "registre.placeholderSelectionnerTypeRegistre"
msgstr "Afficher un type de registre"
###############################################################################
<div id="divFiltrage" <?php if(true === empty($filters)) {echo 'style="display: none;"';}?>>
<?php
echo $this->Form->create('Registre', [
'url' => [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
], 'class' => 'search-form'
]);
?>
<div class="row">
<?php
// Filtrer par rédacteur
echo $this->Form->input('user', [
'options' => $options['users'],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreUser'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerUser'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
// Filtrer par nom du traitement
echo $this->Form->input('outil', [
'class' => 'form-control',
'label' => __d('registre', 'registre.filtreNomTraitement'),
'placeholder' => __d('registre', 'registre.placeholderNomTraitement'),
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<br/>
<div class="row">
<?php
// Filtrer par service
echo $this->Form->input('service', [
'options' => $options['services'],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreService'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerService'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
// Filtre sur le nombre de traitement à l'affichage
echo $this->Form->input('nbAffichage', [
'options' => [
PHP_INT_MAX => 'Tous les traitements',
3 => '3',
10 => '10',
20 => '20',
50 => '50',
100 => '100'
],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreNbAffichageTraitement'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerNbTraitementAfficher'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<br/>
<div class="row">
<?php
// Filtre sur les normes
echo $this->Form->input('norme', [
'options' => $options_normes,
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreNorme'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerNorme'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
// Filtre sur les formulaires
echo $this->Form->input('formulaire', [
'options' => $options['formulaires'],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreFormulaire'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerFormulaire'),
'multiple' => 'multiple',
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<br/>
<div class="row">
<?php
// Filtre sur l'obligation d'un AIPD
echo $this->Form->input('obligation_pia', [
'options' => [
'true' => 'Oui',
'false' => 'Non'
],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreObligationPIA'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerObligationPIA'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<br/>
<div class="row">
<?php
// Filtre sur la réalisation de AIPD
echo $this->Form->input('realisation_pia', [
'options' => [
'true' => 'Oui',
'false' => 'Non'
],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreRealisationPIA'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerRealisationPIA'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
// Filtre sur le depot de AIPD
echo $this->Form->input('depot_pia', [
'options' => [
'true' => 'Oui',
'false' => 'Non'
],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreDepotPIA'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerDepotPIA'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<br/>
<div class="row">
<?php
// Filtre sur les normes
echo $this->Form->input('transfert_hors_ue', [
'options' => [
'true' => 'Oui',
'false' => 'Non'
],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreTransfereHorsUE'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerTransfereHorsUE'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
// Filtre sur les formulaires
echo $this->Form->input('donnees_sensibles', [
'options' => [
'true' => 'Oui',
'false' => 'Non'
],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreDonneesSensibles'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerDonneesSensibles'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<br/>
<div class="row">
<?php
// Filtre sur les sous-traitants
echo $this->Form->input('soustraitance', [
'options' => [
'true' => 'Oui',
'false' => 'Non'
],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreSoustraitance'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerSoustraitance'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
echo $this->Form->input('soustraitant', [
'options' => $options['all_soustraitants'],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreSoustraitant'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerSoustraitant'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<br/>
<div class="row">
<?php
// Filtre sur les coresponsables
echo $this->Form->input('coresponsable', [
'options' => [
'true' => 'Oui',
'false' => 'Non'
],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreCoresponsable'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerCoresponsable'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
echo $this->Form->input('responsable', [
'options' => $options['all_responsables'],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreResponsable'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerResponsable'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<br/>
<div class="row">
<?php
// Filtre sur le type de registre
echo $this->Form->input('decisionAutomatisee', [
'options' => [
'Non' => 'Non',
'Oui' => 'Oui'
],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreDecisionAutomatisee'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerDecisionAutomatisee'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<br/>
<div class="row">
<?php
// Filtre sur le type de registre
echo $this->Form->input('typeRegistre', [
'options' => [
'null' => "Registre d'activité et de sous-traitance",
'false' => "Registre d'activité",
'true' => "Registre de sous-traitance"
],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreTypeRegistre'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerTypeRegistre'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<!-- Groupe de bouton -->
<div class="row top30">
<div class="col-md-4 col-md-offset-5 btn-group">
<?php
// Bouton Réinitialiser le filtre
echo $this->Html->link('<i class="fa fa-undo fa-lg"></i> ' . __d('registre', 'registre.btnReinitialiserFiltre'), [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
],[
'class' => 'btn btn-default-danger',
'escape' => false
]);
// Bouton Appliquer les filtres
echo $this->Form->button('<i class="fa fa-filter fa-lg"></i> ' . __d('registre', 'registre.btnFiltre'), [
'type' => 'submit',
'class' => 'btn btn-default-primary'
]);
?>
</div>
</div>
<?php
echo $this->Form->end();
?>
</div>
\ No newline at end of file
......@@ -24,265 +24,9 @@
if(empty($filters['Registre'])) {
unset($filters['Registre']);
}
?>
<div id="divFiltrage" <?php if(true === empty($filters)) {echo 'style="display: none;"';}?>>
<?php
echo $this->Form->create('Registre', [
'url' => [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
], 'class' => 'search-form'
]);
?>
<!-- Filtre sur l'utilisateur -->
<div class="input-group login">
<span class="input-group-addon">
<?php
echo $this->Form->label('user', '<!---->', [
'class' => 'fa fa-user fa-lg',
'title' => __d('registre', 'registre.filtreUser')
]);
?>
</span>
<?php
echo $this->Form->input('user', [
'options' => $options['users'],
'class' => 'usersDeroulant transformSelect form-control',
'empty' => true,
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerUser'),
'label' => false
]);
?>
</div>
<!-- Filtre sur le nom du traitement -->
<div class="input-group login">
<span class="input-group-addon">
<?php
echo $this->Form->label('outil', '<!---->', [
'class' => 'fa fa-tag fa-lg',
'title' => __d('registre', 'registre.filtreNomTraitement')
]);
?>
</span>
<?php
echo $this->Form->input('outil', [
'class' => 'form-control',
'placeholder' => __d('registre', 'registre.placeholderNomTraitement'),
'label' => false
]);
?>
</div>
<?php
if (!empty($options['services'])) {
?>
<!-- Filtre sur le service -->
<div class="input-group login">
<span class="input-group-addon">
<?php
echo $this->Form->label('service', '<!---->', [
'class' => 'fa fa-sitemap fa-lg',
'title' => __d('registre', 'registre.filtreService')
]);
?>
</span>
<?php
echo $this->Form->input('service', [
'options' => $options['services'],
'class' => 'usersDeroulant transformSelect form-control',
'empty' => true,
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerService'),
'label' => false
]);
?>
</div>
<?php
}
?>
<!-- Filtre sur le nombre de traitement à l'affichage -->
<div class="input-group login">
<span class="input-group-addon">
<?php
echo $this->Form->label('nbAffichage', '<!---->', [
'class' => 'fa fa-sliders fa-lg',
'title' => __d('registre', 'registre.filtreNbAffichageTraitement')
]);
?>
</span>
<?php
echo $this->Form->input('nbAffichage', [
'options' => [
PHP_INT_MAX => 'Tous les traitements',
3 => '3',