Commit 42c0ee3b authored by THEO GUILLON's avatar THEO GUILLON
Browse files

Merge branch '306-changement-de-dpo' into 'master'

Resolve "Changement de DPO"

See merge request web-DPO/web-DPO!269
parents 50dbeded 6f3d49cf
......@@ -67,6 +67,7 @@ connecté.
- Restriction des actions en fonction des droits utilisateur
- Correction de l'insertion d'un traitement au registre.
- Suppression des espaces au début et à la fin des options lors de la création des champs dans le formulaire
- Lors de la modification de l'entité (information sur l'entité et / ou le DPO) les informations de l'entité dans les traitements sont modifier. Sauf les traitements au registre
### Suppressions
- Suppression de l'utilisation du système de verrouillage d'un traitement au registre.
......
......@@ -35,7 +35,9 @@ class OrganisationsController extends AppController
'Responsable',
'Role',
'RoleDroit',
'User'
'User',
'Valeur',
'EtatFiche'
];
public $helpers = [
......@@ -334,6 +336,12 @@ class OrganisationsController extends AppController
$success = $this->_attributionRoleDPO($this->request->data('Organisation.dpo'), $id, $newRoleOldDPO) && $success;
}
if ($success == true) {
// Modification des informations sur l'entité et le DPO dans les traitements qui ne sont pas au registre
$success = $this->_updateValueInFicheEntiteDPO($id);
}
if ($success == true) {
$this->Organisation->commit();
$this->Session->setFlash(__d('organisation', 'organisation.flashsuccessEntiteModifier'), 'flashsuccess');
......@@ -422,6 +430,192 @@ class OrganisationsController extends AppController
$this->set(compact('organisation', 'options', 'array_users', 'roles'));
}
/**
* Mise à jour des valeurs concernant l'entité et le DPO si le traitement (la fiche) n'est pas au registre
*
* @param $organisation_id int
* @return bool
*
* @access private
* @created 03/12/2019
* @version V1.1.0
*/
private function _updateValueInFicheEntiteDPO($organisation_id)
{
$success = true;
$organisation = $this->Organisation->find('first', [
'conditions' => [
'id' => $organisation_id
],
'fields' => [
'raisonsociale',
'telephone',
'fax',
'adresse',
'email',
'sigle',
'siret',
'ape',
'civiliteresponsable',
'nomresponsable',
'prenomresponsable',
'emailresponsable',
'telephoneresponsable',
'fonctionresponsable',
'dpo',
'numerodpo'
]
]);
//On récupére le DPO de la collectivité
$userDPO = $this->_dpoOrganisation($organisation['Organisation']['dpo']);
$condition = [
'EtatFiche.etat_id !=' => [
EtatFiche::VALIDER_DPO,
EtatFiche::ARCHIVER,
EtatFiche::MODIFICATION_TRAITEMENT_REGISTRE
],
'EtatFiche.actif' => true,
'Fiche.organisation_id' => $organisation_id
];
$query = [
'conditions' => $condition,
'contain' => [
'Fiche' => [
'id',
'Valeur' => [
'fields' => [
'champ_name',
'valeur'
],
'conditions' => [
'champ_name' => [
'raisonsociale',
'telephone',
'fax',
'adresse',
'email',
'sigle',
'ape',
'civiliteresponsable',
'nomresponsable',
'prenomresponsable',
'emailresponsable',
'telephoneresponsable',
'fonctionresponsable',
'dpo',
'numerodpo',
'fixDpo',
'emailDpo',
'portableDpo'
]
]
],
]
]
];
$fichesOrganisation = $this->EtatFiche->find('all', $query);
$valeurs = Hash::extract($fichesOrganisation, '{n}.Fiche.Valeur.{n}');
foreach ($valeurs as $valeurFiche) {
if ($success === true) {
$valeurChamp = null;
switch ($valeurFiche['champ_name']) {
case 'raisonsociale':
$valeurChamp = $organisation['Organisation']['raisonsociale'];
break;
case 'telephone':
$valeurChamp = $organisation['Organisation']['telephone'];
break;
case 'fax':
$valeurChamp = $organisation['Organisation']['fax'];
break;
case 'adresse':
$valeurChamp = $organisation['Organisation']['adresse'];
break;
case 'email':
$valeurChamp = $organisation['Organisation']['email'];
break;
case 'sigle':
$valeurChamp = $organisation['Organisation']['sigle'];
break;
case 'siret':
$valeurChamp = $organisation['Organisation']['siret'];
break;
case 'ape':
$valeurChamp = $organisation['Organisation']['ape'];
break;
case 'civiliteresponsable':
$valeurChamp = $organisation['Organisation']['civiliteresponsable'];
break;
case 'nomresponsable':
$valeurChamp = $organisation['Organisation']['nomresponsable'];
break;
case 'prenomresponsable':
$valeurChamp = $organisation['Organisation']['prenomresponsable'];
break;
case 'emailresponsable':
$valeurChamp = $organisation['Organisation']['emailresponsable'];
break;
case 'telephoneresponsable':
$valeurChamp = $organisation['Organisation']['telephoneresponsable'];
break;
case 'fonctionresponsable':
$valeurChamp = $organisation['Organisation']['fonctionresponsable'];
break;
case 'dpo':
$valeurChamp = $userDPO['User']['civilite'] . ' ' . $userDPO['User']['prenom'] . ' ' . $userDPO['User']['nom'];
break;
case 'numerodpo':
$valeurChamp = $organisation['Organisation']['numerodpo'];
break;
case 'fixDpo':
$valeurChamp = $userDPO['User']['telephonefixe'];
break;
case 'emailDpo':
$valeurChamp = $userDPO['User']['email'];
break;
case 'portableDpo':
$valeurChamp = $userDPO['User']['telephoneportable'];
break;
default:
break;
}
$this->Valeur->id = $valeurFiche['id'];
$success = $success && $this->Valeur->save([
'id' => $valeurFiche['id'],
'valeur' => $valeurChamp
]) !== false;
}
}
return ($success);
}
private function _dpoOrganisation($idUserDPO)
{
$userDPO = $this->User->find('first', [
'conditions' => [
'id' => $idUserDPO
],
'fields' => [
'civilite',
'nom',
'prenom',
'email',
'telephonefixe',
'telephoneportable'
]
]);
return ($userDPO);
}
/**
* @param $idDPO
* @param $idOrganisation
......
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