Commit 827cd88d authored by THEO GUILLON's avatar THEO GUILLON
Browse files

Merge branch '354-ordonner-les-traitements-au-registre' into '1.2.0'

Resolve "Ordonner les traitements au registre"

See merge request libriciel/pole-citoyens/web-DPO/web-DPO!341
parents d86d01fe 10c701cb
......@@ -41,7 +41,8 @@ class RegistresController extends AppController {
'Soustraitant',
'Soustraitance',
'Responsable',
'Coresponsable'
'Coresponsable',
'Typage'
];
/**
......@@ -104,6 +105,7 @@ class RegistresController extends AppController {
];
$conditionValeur = [];
$order = 'Fiche.created DESC';
$limit = 20;
$maxLimit = 100;
......@@ -147,15 +149,34 @@ class RegistresController extends AppController {
$limit = 20;
}
if( $limit > $maxLimit ) {
if ( $limit > $maxLimit ) {
$maxLimit = $limit;
}
// Filtre sur l'ordre d'affichage
if (!empty($this->request->data['Registre']['order'])) {
if ($this->request->data['Registre']['order'] === 'Fiche.numero ASC') {
// $order = 'regexp_replace("Fiche"."numero", \'^[^0-9]+\', \'\')::INT ASC';
// $order = 'regexp_replace(numero, \'^.*\-\', \'\')::INT ASC';
$order = 'regexp_replace(numero, \'^.*[^0-9]([0-9]+)$\', \'\1\', \'g\')::INT ASC';
}
elseif ($this->request->data['Registre']['order'] === 'Fiche.numero DESC') {
// $order = 'regexp_replace("Fiche"."numero", \'^[^0-9]+\', \'\')::INT DESC';
// $order = 'regexp_replace(numero, \'^.*\-\', \'\')::INT DESC';
$order = 'regexp_replace(numero, \'^.*[^0-9]([0-9]+)$\', \'\1\', \'g\')::INT DESC';
}
else {
$order = $this->request->data['Registre']['order'];
}
} else {
$order = 'Fiche.created DESC';
}
// Filtre sur une norme
if (!empty($this->request->data['Registre']['norme'])) {
$condition['Fiche.norme_id'] = $this->request->data['Registre']['norme'];
}
// Filtre sur les formulaires
if (!empty($this->request->data['Registre']['formulaire'])) {
$condition['Fiche.form_id'] = $this->request->data['Registre']['formulaire'];
......@@ -185,7 +206,7 @@ class RegistresController extends AppController {
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'];
......@@ -204,7 +225,7 @@ class RegistresController extends AppController {
$sql = $this->Soustraitance->sql($subQuery);
$condition[] = "Fiche.id IN ( {$sql} )";
}
// Filtre sur la co-responsabilité
if (!empty($this->request->data['Registre']['coresponsable'])) {
$condition['Fiche.coresponsable'] = $this->request->data['Registre']['coresponsable'];
......@@ -239,6 +260,20 @@ class RegistresController extends AppController {
$condition[] = "Fiche.id IN ( {$sql} )";
}
// Filtre sur la decision automatisee
if (!empty($this->request->data['Registre']['type_annexe'])) {
$subQuery = [
'alias' => 'fichiers',
'fields' => ['fichiers.fiche_id'],
'contain' => false,
'conditions' => [
'fichiers.typage_id' => $this->request->data['Registre']['type_annexe']
]
];
$sql = $this->Fichier->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'];
......@@ -302,7 +337,7 @@ class RegistresController extends AppController {
]
]
],
'order' => 'Fiche.created DESC',
'order' => $order,
'limit' => $limit,
'maxLimit' => $maxLimit
];
......@@ -375,7 +410,14 @@ class RegistresController extends AppController {
'Responsable.id',
'Responsable.raisonsocialestructure',
]
])
]),
'types_annexe' => $this->Typage->find('list', [
'restrict' => true,
'fields' => [
'Typage.id',
'Typage.libelle',
]
]),
];
$this->set(compact('options'));
......
......@@ -55,7 +55,7 @@ msgid "registre.textTableauAnnexe"
msgstr "Annexe(s) : "
msgid "registre.textTableauNumeroEnregistrement"
msgstr "Numéro : "
msgstr "Numéro d'enregistrement"
msgid "registre.btnImprimerExtraitRegistrePDF"
msgstr "Générer les extraits de registre"
......@@ -121,7 +121,16 @@ msgid "registre.filtreUser"
msgstr "Filtrer par utilisateur"
msgid "registre.filtreNbAffichageTraitement"
msgstr "Modifier le nombre de traitements à l'affichage"
msgstr "Filtrer par nombre de traitements à l'affichage"
msgid "registre.placeholderSelectionnerNbTraitementAfficher"
msgstr "Sélectionnez le nombre de traitements à afficher"
msgid "registre.filtreOrder"
msgstr "Filtrer par ordre d'affichage"
msgid "registre.placeholderSelectionnerOrder"
msgstr "Sélectionnez l'ordre d'affichage"
msgid "registre.placeholderSelectionnerService"
msgstr "Sélectionnez un service"
......@@ -129,9 +138,6 @@ msgstr "Sélectionnez un service"
msgid "registre.filtreService"
msgstr "Filtrer par service"
msgid "registre.placeholderSelectionnerNbTraitementAfficher"
msgstr "Sélectionnez le nombre de traitements à afficher"
msgid "registre.placeholderSelectionnerNorme"
msgstr "Sélectionnez une norme"
......@@ -258,6 +264,12 @@ 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.filtreTypeAnnexe"
msgstr "Filtrer par type d'annexe sur les annexes dans le traitement"
msgid "registre.placeholderSelectionnerTypeAnnexe"
msgstr "Afficher les traitements un type d'annexe"
msgid "registre.filtreTypeRegistre"
msgstr "Filtrer par type de registre"
......
......@@ -47,11 +47,27 @@
'after' => '</div>'
]);
// 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>'
]);
?>
</div>
<br/>
<div class="row">
<?php
// 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',
......@@ -60,10 +76,27 @@
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreNbAffichageTraitement'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerNbTraitementAfficher'),
'empty' => true,
'empty' => false,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
// Filtre par ordre d'affichage
echo $this->Form->input('order', [
'options' => [
'Fiche.created DESC' => 'Classement par date de création la plus récente',
'Fiche.created ASC' => 'Classement par date de création la plus vieille',
'Fiche.numero ASC' => 'Classement par numéro d\'enregistrement croissant',
'Fiche.numero DESC' => 'Classement par numéro d\'enregistrement décroissant',
],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreOrder'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerOrder'),
'empty' => false,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
......@@ -71,17 +104,6 @@
<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'],
......@@ -261,6 +283,17 @@
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
// Filtre sur type d'annexe
echo $this->Form->input('type_annexe', [
'options' => $options['types_annexe'],
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('registre', 'registre.filtreTypeAnnexe'),
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerTypeAnnexe'),
'empty' => true,
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment