Commit 8a77cfed authored by THEO GUILLON's avatar THEO GUILLON
Browse files

Merge branch '344-faire-evoluer-les-champs-transfere-hors-ue-et-donnee-sensible' into '1.2.0'

Resolve "Faire evoluer les champs transfere hors UE et donnée sensible"

See merge request libriciel/pole-citoyens/web-DPO/web-DPO!320
parents 752a3cc6 d977132e
......@@ -405,4 +405,14 @@ DELETE FROM valeurs WHERE champ_name = 'soustraitance';
ALTER TABLE formulaires ADD COLUMN rt_externe BOOL DEFAULT FALSE;
ALTER TABLE fiches ADD COLUMN rt_externe BOOL NOT NULL DEFAULT FALSE;
ALTER TABLE fiches ADD COLUMN transfert_hors_ue BOOL DEFAULT FALSE;
UPDATE fiches SET transfert_hors_ue = true WHERE id IN (SELECT valeurs.fiche_id FROM valeurs WHERE valeurs.champ_name = 'transfertHorsUe' AND valeurs.valeur = 'Oui');
UPDATE fiches SET transfert_hors_ue = false WHERE id IN (SELECT valeurs.fiche_id FROM valeurs WHERE valeurs.champ_name = 'transfertHorsUe' AND valeurs.valeur = 'Non');
DELETE FROM valeurs WHERE champ_name = 'transfertHorsUe';
ALTER TABLE fiches ADD COLUMN donnees_sensibles BOOL DEFAULT FALSE;
UPDATE fiches SET donnees_sensibles = true WHERE id IN (SELECT valeurs.fiche_id FROM valeurs WHERE valeurs.champ_name = 'donneesSensible' AND valeurs.valeur = 'Oui');
UPDATE fiches SET donnees_sensibles = false WHERE id IN (SELECT valeurs.fiche_id FROM valeurs WHERE valeurs.champ_name = 'donneesSensible' AND valeurs.valeur = 'Non');
DELETE FROM valeurs WHERE champ_name = 'donneesSensible';
COMMIT;
......@@ -841,7 +841,9 @@ class FichesController extends AppController
'obligation_pia',
'realisation_pia',
'depot_pia',
'rt_externe'
'rt_externe',
'transfert_hors_ue',
'donnees_sensibles',
]
]);
......@@ -856,6 +858,9 @@ class FichesController extends AppController
$this->request->data['Fiche']['coresponsable'] = $fiche['Fiche']['coresponsable'];
$this->request->data['Fiche']['soustraitance'] = $fiche['Fiche']['soustraitance'];
$this->request->data['Fiche']['transfert_hors_ue'] = $fiche['Fiche']['transfert_hors_ue'];
$this->request->data['Fiche']['donnees_sensibles'] = $fiche['Fiche']['donnees_sensibles'];
$this->request->data['Fiche']['obligation_pia'] = $fiche['Fiche']['obligation_pia'];
$this->request->data['Fiche']['realisation_pia'] = $fiche['Fiche']['realisation_pia'];
$this->request->data['Fiche']['depot_pia'] = $fiche['Fiche']['depot_pia'];
......@@ -1613,8 +1618,8 @@ class FichesController extends AppController
'outilnom' => __d('fiche', 'fiche.champOutilnom'),
'numero_enregistrement' => "Numero d\'enregistrement au registre",
'norme' => "Norme",
'transfertHorsUe' => __d('fiche', 'fiche.champTransfertHorsUe'),
'donneesSensible' => __d('fiche', 'fiche.champDonneesSensible'),
'transfert_hors_ue' => __d('fiche', 'fiche.champTransfertHorsUe'),
'donnees_sensibles' => __d('fiche', 'fiche.champDonneessensiblesComplementaire'),
'finaliteprincipale' => __d('fiche', 'fiche.champFinaliteprincipale'),
'coresponsable' => __d('fiche', 'fiche.champCoresponsable'),
'soustraitant' => __d('fiche', 'fiche.champSoustraitant'),
......
......@@ -284,8 +284,8 @@ class ModelesController extends AppController {
'traitement' => [
'outilnom',
'finaliteprincipale',
'transfertHorsUe',
'donneesSensible',
'transfert_hors_ue',
'donnees_sensibles',
'coresponsable',
'soustraitant',
'numeroenregistrement',
......
......@@ -150,7 +150,7 @@ msgstr "Type de déclaration"
msgid "fiche.champTransfertHorsUe"
msgstr "Les données du traitement, font l'objet d'un transfert hors l'UE ?"
msgid "fiche.champDonneesSensible"
msgid "fiche.champDonneesSensibles"
msgstr "Les données traitées sont qualifiées de 'données sensibles' ?"
msgid "fiche.champFinaliteprincipale"
......
......@@ -338,6 +338,16 @@ class Fiche extends AppModel {
'message' => '... est déjà utilisée.'
]
],
'transfert_hors_ue' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
'donnees_sensibles' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
// 'obligation_pia' => [
// 'checkNotBlankIf' => [
// 'rule' => ['checkNotBlankIf', 'usepia', true, [true]]
......
......@@ -59,16 +59,6 @@ class WebdpoFiche extends AppModel {
'rule' => ['notBlank']
]
],
'transfertHorsUe' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
'donneesSensible' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
// ---------------------------------------------------------------------
// ------------------INFORMATION TRAITEMENT-----------------------------
'decisionAutomatisee' => [
......@@ -82,40 +72,6 @@ class WebdpoFiche extends AppModel {
]
],
// ---------------------------------------------------------------------
// ------------------INFORMATION COMPLEMENTAIRE HORS UE-----------------
'organismeDestinataireHorsUe' => [
'checkNotBlankIf' => [
'rule' => ['checkNotBlankIf', 'transfertHorsUe', true, ['Oui']]
]
],
'paysDestinataireHorsUe' => [
'checkNotBlankIf' => [
'rule' => ['checkNotBlankIf', 'transfertHorsUe', true, ['Oui']]
]
],
'typeGarantieHorsUe' => [
'checkNotBlankIf' => [
'rule' => ['checkNotBlankIf', 'transfertHorsUe', true, ['Oui']]
]
],
// ---------------------------------------------------------------------
// ------------------INFORMATION COMPLEMENTAIRE DONNEE SENSIBLE---------
'typeDonneeSensible' => [
'checkNotBlankIf' => [
'rule' => ['checkNotBlankIf', 'donneesSensible', true, ['Oui']]
]
],
'descriptionDonneeSensible' => [
'checkNotBlankIf' => [
'rule' => ['checkNotBlankIf', 'donneesSensible', true, ['Oui']]
]
],
'dureeConservationDonneeSensible' => [
'checkNotBlankIf' => [
'rule' => ['checkNotBlankIf', 'donneesSensible', true, ['Oui']]
]
],
// ---------------------------------------------------------------------
// ------------------------------- AIPD --------------------------------
// @info: usepia est un champ virtuel nécessaire venant du modèle Formulaire
'ressources_humaines' => [
......@@ -358,6 +314,12 @@ class WebdpoFiche extends AppModel {
$Fiche->create($data['Fiche']);
$success = false !== $Fiche->save(null, ['atomic' => false]) && $success;
// Check Transfere hors UE
$data = $this->cleanAndCheckDataHorsUe($data);
// Check données sensibles
$data = $this->cleanAndCheckDataDonneesSensibles($data);
// RT
$data = $this->cleanAndCheckDataRT($data);
......@@ -531,18 +493,6 @@ class WebdpoFiche extends AppModel {
unset($data[$this->alias]['descriptionDecisionAutomatisee']);
}
// @TODO passer le champ en column dans fiches
// Suppression des valeurs associées aux transfère hors UE si cela n'a pas été indiquer dans les infos générale
if ($data[$this->alias]['transfertHorsUe'] === 'Non') {
unset($data[$this->alias]['horsue']);
}
// @TODO passer le champ en column dans fiches
// Suppression des valeurs associées aux données sensible si cela n'a pas été indiquer dans les infos générale
if ($data[$this->alias]['donneesSensible'] === 'Non') {
unset($data[$this->alias]['donneessensibles']);
}
// Suppression des sous-finalité vide avant enregistrement en BDD
if (isset($data[$this->alias]['sousFinalite']) === true) {
foreach ($data[$this->alias]['sousFinalite'] as $key => $sousFinalite) {
......@@ -734,6 +684,38 @@ class WebdpoFiche extends AppModel {
return ($data);
}
protected function cleanAndCheckDataHorsUe($data)
{
// Suppression des valeurs associées aux transfère hors UE si cela n'a pas été indiquer dans les infos générale
if ($data['Fiche']['transfert_hors_ue'] == false) {
unset($data[$this->alias]['horsue']);
return $data;
}
foreach (['organismeDestinataireHorsUe', 'paysDestinataireHorsUe', 'typeGarantieHorsUe'] as $fieldName) {
$this->validate[$fieldName]['notBlank'] = ['rule' => ['notBlank']];
}
return $data;
}
protected function cleanAndCheckDataDonneesSensibles($data)
{
// Suppression des valeurs associées aux données sensible si cela n'a pas été indiquer dans les infos générale
if ($data['Fiche']['donnees_sensibles'] == false) {
unset($data[$this->alias]['donneessensibles']);
return $data;
}
foreach (['typeDonneeSensible', 'descriptionDonneeSensible', 'dureeConservationDonneeSensible'] as $fieldName) {
$this->validate[$fieldName]['notBlank'] = ['rule' => ['notBlank']];
}
return $data;
}
public function beforeValidate($options = array()) {
// $this->data = $this->cleanupData($this->data);
return parent::beforeValidate($options);
......
......@@ -343,7 +343,7 @@ if ($this->request->params['action'] === 'show' ) {
// Partie concernant le transfere hors ue
var useHorsUE = <?php echo json_encode($useFieldsFormulaire['Formulaire']['usedecisionautomatisee']);?>;
if (useHorsUE == true) {
displayInfoSupHorsUE($('#transfertHorsUe').val());
displayInfoSupHorsUE($('#transfert_hors_ue').val());
var idHorsUE = <?php echo json_encode($i);?>;
addHorsUE(idHorsUE);
......@@ -352,7 +352,7 @@ if ($this->request->params['action'] === 'show' ) {
// Partie concernant les données sensibles
var useDonneesSensibles = <?php echo json_encode($useFieldsFormulaire['Formulaire']['usedonneessensible']);?>;
if (useDonneesSensibles == true) {
displayInfoSupDonneesSensibles($('#donneesSensible').val());
displayInfoSupDonneesSensibles($('#donnees_sensibles').val());
var idDonneesSensibles = <?php echo json_encode($nb);?>;
addDonneeSensible(idDonneesSensibles);
......
......@@ -259,35 +259,29 @@ if (in_array($this->request->params['action'], ['edit', 'show']) === true) {
'required' => true,
'placeholder' => false
],
'WebdpoFiche.transfertHorsUe' => [
'id' => 'transfertHorsUe',
'label' => [
'text' => __d('fiche', 'fiche.champTransfertHorsUe')
],
'transfert_hors_ue' => [
'id' => 'transfert_hors_ue',
'options' => [
'Oui' => 'Oui',
'Non' => 'Non'
true => 'Oui',
false => 'Non'
],
'class' => 'transformSelect form-control',
'required' => true,
'empty' => $empty,
'placeholder' => false,
'data-placeholder' => ' '
'empty' => false,
'data-placeholder' => ' ',
'default' => false
],
'WebdpoFiche.donneesSensible' => [
'id' => 'donneesSensible',
'label' => [
'text' => __d('fiche', 'fiche.champDonneesSensible')
],
'donnees_sensibles' => [
'id' => 'donnees_sensibles',
'options' => [
'Oui' => 'Oui',
'Non' => 'Non'
true => 'Oui',
false => 'Non'
],
'class' => 'transformSelect form-control',
'required' => true,
'empty' => $empty,
'placeholder' => false,
'data-placeholder' => ' '
'empty' => false,
'data-placeholder' => ' ',
'default' => false
]
]);
?>
......
......@@ -25,8 +25,8 @@
echo $this->WebcilForm->input('Fiche.ifTheFields', [
'id' => 'ifTheField',
'options' => [
'transfertHorsUe' => 'Les données du traitement, font l\'objet d\'un transfert hors l\'UE ?',
'donneesSensible' => 'Les données traitées sont qualifiées de \'données sensibles\' ?'
'transfert_hors_ue' => 'Les données du traitement, font l\'objet d\'un transfert hors l\'UE ?',
'donnees_sensibles' => 'Les données traitées sont qualifiées de \'données sensibles\' ?'
],
'empty' => true,
'class' => 'transformSelect form-control',
......@@ -184,7 +184,7 @@
} else {
var options = null;
if (jQuery.inArray(idFieldConditionCreated, ['transfertHorsUe', 'donneesSensible']) !== -1){
if (jQuery.inArray(idFieldConditionCreated, ['transfert_hors_ue', 'donnees_sensibles']) !== -1){
// On recupere les "options" du champ "selected" sur lequel nous allons faire la condition
$('#'+idFieldConditionCreated).find('option').each(function () {
var option = $(this).attr('value');
......
......@@ -89,14 +89,14 @@
'placeholder' => false,
'readonly' => true
],
'Fiche.transfertHorsUe' => [
'id' => 'transfertHorsUe',
'Fiche.transfert_hors_ue' => [
'id' => 'transfert_hors_ue',
'required' => true,
'placeholder' => false,
'readonly' => true
],
'Fiche.donneesSensible' => [
'id' => 'donneesSensible',
'Fiche.donnees_sensibles' => [
'id' => 'donnees_sensibles',
'required' => true,
'placeholder' => false,
'readonly' => true
......
......@@ -81,30 +81,30 @@
'placeholder' => false,
'readonly' => true
],
'Fiche.transfertHorsUe' => [
'id' => 'transfertHorsUe',
'Fiche.transfert_hors_ue' => [
'id' => 'transfert_hors_ue',
'options' => [
'Oui' => 'Oui',
'Non' => 'Non'
true => 'Oui',
false => 'Non'
],
'class' => 'transformSelect form-control',
'placeholder' => false,
'required' => true,
'readonly' => true,
'empty' => true,
'placeholder' => false,
'data-placeholder' => ' '
],
'Fiche.donneesSensible' => [
'id' => 'donneesSensible',
'Fiche.donnees_sensibles' => [
'id' => 'donnees_sensibles',
'options' => [
'Oui' => 'Oui',
'Non' => 'Non'
true => 'Oui',
false => 'Non'
],
'class' => 'transformSelect form-control',
'placeholder' => false,
'required' => true,
'readonly' => true,
'empty' => true,
'placeholder' => false,
'data-placeholder' => ' '
]
]);
......
......@@ -501,7 +501,7 @@ if (!empty($valeurPropreTraitement['traitement'])) {
<tr>
<td class="tdleft">
<?php
echo __d('fiche', 'fiche.champ' . ucfirst($traitement));
echo __m('fiche' . '.champ' . Inflector::camelize($traitement));
?>
</td>
......
......@@ -52,7 +52,7 @@ function displayDescriptionDecisionAutomatisee(val){
// -----------------------------------------------------------------------------
var addHorsUE = function(idHorsUE) {
$('#transfertHorsUe').change(function () {
$('#transfert_hors_ue').change(function () {
var select = $(this).val();
displayInfoSupHorsUE(select);
......@@ -101,7 +101,8 @@ var addHorsUE = function(idHorsUE) {
};
function displayInfoSupHorsUE(val){
if (val == 'Oui') {
// if (val == 'Oui') {
if (val == true) {
$('#infoSupHorsUE').show();
} else {
$('#infoSupHorsUE').hide();
......@@ -112,7 +113,8 @@ function displayInfoSupHorsUE(val){
// -----------------------------------------------------------------------------
var addDonneeSensible = function(idDonneesSensibles) {
$('#donneesSensible').change(function () {
// $('#donneesSensible').change(function () {
$('#donnees_sensibles').change(function () {
var select = $(this).val();
displayInfoSupDonneesSensibles(select);
......@@ -161,7 +163,8 @@ var addDonneeSensible = function(idDonneesSensibles) {
};
function displayInfoSupDonneesSensibles(val){
if (val == 'Oui') {
// if (val == 'Oui') {
if (val == true) {
$('#infoSupDonneesSensibles').show();
} else {
$('#infoSupDonneesSensibles').hide();
......
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