Commit d86d01fe authored by THEO GUILLON's avatar THEO GUILLON
Browse files

Merge branch '360-duplication-d-un-traitement-d-une-entite-a-une-autre' into '1.2.0'

Resolve "Duplication d'un formulaire d'une entité à une autre"

Closes #360

See merge request libriciel/pole-citoyens/web-DPO/web-DPO!340
parents f30ca39f 949828ea
......@@ -22,8 +22,8 @@
App::uses('ListeDroit', 'Model');
class FormulairesController extends AppController {
class FormulairesController extends AppController
{
public $uses = [
'Champ',
'Formulaire',
......@@ -90,67 +90,18 @@ class FormulairesController extends AppController {
* @access public
* @created 26/04/2016
* @version V1.0.0
*
* @modified 18/06/2020
*/
public function dupliquer() {
if($this->request->is('post') === false && $this->request->is('put') === false) {
public function dupliquer()
{
if ($this->request->is('post') === false && $this->request->is('put') === false) {
throw new MethodNotAllowedException();
}
$id = $this->request->data['Formulaire']['id'];
$this->Droits->assertRecordAuthorized('Formulaire', $id);
$organisation = $this->Organisation->find('first', [
'conditions' => [
'Organisation.id' => $this->Session->read('Organisation.id')
]
]);
$organisation['Organisation']['service'] = ($this->Session->read('User.service') == null) ? '' : $this->Session->read('User.service');
$success = true;
$this->Formulaire->begin();
//on c'est un nouveau formulaire en renseignant les infos
$this->Formulaire->create([
'organisations_id' => $organisation['Organisation']['id'],
'libelle' => $this->request->data['Formulaire']['libelle'],
'description' => $this->request->data['Formulaire']['description'],
'rt_externe' => $this->request->data['Formulaire']['rt_externe'],
'active' => false
]);
//on enregistre le formualire
unset($this->Formulaire->validate['active']['notBlank']); //@FIXME christian
$success = $success && false !== $this->Formulaire->save(null, ['atomic' => false]);
if ($success == true) {
//on recupere l'id du formulaire qu'on vien d'enregistré
$idForm = $this->Formulaire->getLastInsertId();
//on recupere en BDD tout les champs qui corresponde a $id
$champs = $this->Champ->find('all', [
'conditions' => [
'formulaire_id' => $id
]
]);
foreach ($champs as $key => $champ) {
//on decode pour récupere les info
$array = json_decode($champ['Champ']['details'], true);
//on cree un nouveau champs avec l'id du nouveau formulaire qu'on a cree et les info qu'on a décodé
$this->Champ->create([
'formulaire_id' => $idForm,
'type' => $champ['Champ']['type'],
'ligne' => $champ['Champ']['ligne'],
'colonne' => $champ['Champ']['colonne'],
'details' => $champ['Champ']['details']
]);
//on enregistre le champ
$success = $success && false !== $this->Champ->save(null, ['atomic' => false]);
}
}
$success = $this->copyFormulaire($this->request->data);
if ($success == true) {
$this->Formulaire->commit();
......@@ -171,30 +122,95 @@ class FormulairesController extends AppController {
* @created 18/05/2017
* @version v1.0.0
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*
* @modified 18/06/2020
*/
public function dupliquerOrganisation() {
if($this->request->is('post') === false && $this->request->is('put') === false) {
public function dupliquerOrganisation()
{
if ($this->request->is('post') === false && $this->request->is('put') === false) {
throw new MethodNotAllowedException();
}
$id = $this->request->data['Formulaire']['id'];
$this->Droits->assertRecordAuthorized('Formulaire', $id);
$this->Formulaire->begin();
$success = $this->copyFormulaire($this->request->data);
if ($success == true) {
$this->Formulaire->commit();
$this->Session->setFlash(__d('formulaire', 'formulaire.flashsuccessFormulaireDupliquerOtherOrganisation'), 'flashsuccess');
} else {
$this->Formulaire->rollback();
$this->Session->setFlash(__d('default', 'default.flasherrorEnregistrementErreur'), 'flasherror');
}
$this->redirect($this->Referers->get());
}
/**
* @param $data
* @return bool
*
* @access protected
* @version v2.0.0
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*
* @created 18/06/2020
*/
protected function copyFormulaire($data)
{
$success = true;
$this->Formulaire->begin();
// C'est un nouveau formulaire en renseignant les infos
$this->Formulaire->create([
'organisations_id' => $this->request->data['Formulaire']['organisationCible'],
'libelle' => $this->request->data['Formulaire']['libelle'],
'description' => $this->request->data['Formulaire']['description'],
'rt_externe' => $this->request->data['Formulaire']['rt_externe'],
'active' => false
if (!isset($data['Formulaire']['organisationCible'])) {
$organisation_id = $this->Session->read('Organisation.id');
} else {
$organisation_id = $data['Formulaire']['organisationCible'];
}
$id = $data['Formulaire']['id'];
$this->Droits->assertRecordAuthorized('Formulaire', $id);
$formulaireToDuplicate = $this->Formulaire->find('first', [
'conditions' => [
'id' => $id,
'organisations_id' => $this->Session->read('Organisation.id')
],
'fields' => [
'soustraitant',
'usesousfinalite',
'usebaselegale',
'usedecisionautomatisee',
'usetransferthorsue',
'usedonneessensible',
'useallextensionfiles',
'usepia',
'oldformulaire',
]
]);
//on enregistre le formualire
unset($this->Formulaire->validate['active']['notBlank']); //@FIXME christian
$success = $success && false !== $this->Formulaire->save(null, ['atomic' => false]);
if (!empty($formulaireToDuplicate)) {
// C'est un nouveau formulaire en renseignant les infos
$this->Formulaire->create([
'organisations_id' => $organisation_id,
'libelle' => $data['Formulaire']['libelle'],
'active' => false,
'description' => $data['Formulaire']['description'],
'soustraitant' => $formulaireToDuplicate['Formulaire']['soustraitant'],
'usesousfinalite' => $formulaireToDuplicate['Formulaire']['usesousfinalite'],
'usebaselegale' => $formulaireToDuplicate['Formulaire']['usebaselegale'],
'usedecisionautomatisee' => $formulaireToDuplicate['Formulaire']['usedecisionautomatisee'],
'usetransferthorsue' => $formulaireToDuplicate['Formulaire']['usetransferthorsue'],
'usedonneessensible' => $formulaireToDuplicate['Formulaire']['usedonneessensible'],
'useallextensionfiles' => $formulaireToDuplicate['Formulaire']['useallextensionfiles'],
'usepia' => $formulaireToDuplicate['Formulaire']['usepia'],
'oldformulaire' => $formulaireToDuplicate['Formulaire']['oldformulaire'],
'rt_externe' => $data['Formulaire']['rt_externe'],
]);
// On enregistre le formualire
$success = $success && false !== $this->Formulaire->save(null, ['atomic' => false]);
} else {
$success = false;
}
if ($success == true) {
// On recupere l'id du formulaire qu'on vien d'enregistré
......@@ -208,9 +224,6 @@ class FormulairesController extends AppController {
]);
foreach ($champs as $key => $champ) {
// On decode pour récupere les info
$array = json_decode($champ['Champ']['details'], true);
// On cree un nouveau champs avec l'id du nouveau formulaire qu'on a cree et les info qu'on a décodé
$this->Champ->create([
'formulaire_id' => $idForm,
......@@ -225,15 +238,7 @@ class FormulairesController extends AppController {
}
}
if ($success == true) {
$this->Formulaire->commit();
$this->Session->setFlash(__d('formulaire', 'formulaire.flashsuccessFormulaireDupliquer'), 'flashsuccess');
} else {
$this->Formulaire->rollback();
$this->Session->setFlash(__d('default', 'default.flasherrorEnregistrementErreur'), 'flasherror');
}
$this->redirect($this->Referers->get());
return $success;
}
/**
......@@ -324,7 +329,7 @@ class FormulairesController extends AppController {
/**
* @param int $id
* @param type $state
* @param bool $state
*
* @access public
* @created 18/06/2015
......
......@@ -32,6 +32,9 @@ msgstr "Visualisation du formulaire : "
msgid "formulaire.flashsuccessFormulaireDupliquer"
msgstr "Le formulaire dupliqué a été enregistré"
msgid "formulaire.flashsuccessFormulaireDupliquerOtherOrganisation"
msgstr "Le formulaire a bien été dupliqué dans l'organisation ciblée"
msgid "formulaire.flashsuccessFormulaireSupprimer"
msgstr "Le formulaire a été supprimé"
......
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