Commit 7a000da2 authored by THEO GUILLON's avatar THEO GUILLON
Browse files

Merge branch '399-suppression-duplication-traitement-dans-une-autre-organisation' into '2.0.0'

Resolve "suppression duplication traitement dans une autre organisation"

See merge request libriciel/pole-citoyens/web-DPO/web-DPO!375
parents d801e8b0 0219f25c
......@@ -11,7 +11,6 @@ Le format est basé sur le modèle [Keep a Changelog](http://keepachangelog.com/
- Mise en place de nouveau droits en rapport avec le FAQ.
- Mise en place de l'initialisation d'un traitement par le DPO
- Ajout pour le DPO de visualiser tous les traitements au sein de sa collectivité.
- Mise en place de la duplication d'un traitement dans une ou plusieurs collectivité(s) en tant que DPO.
- Mise en place de valeur par défaut lors de la création d'un traitement. Ces valeurs par défaut sont ajouté lors de
la création d'un traitement.
- Mise en place des champs pour la sous-finalité. Avec paramétrage sur l'utilisation des champs dans un traitement.
......
......@@ -2136,110 +2136,6 @@ class FichesController extends AppController
}
}
/**
* Dupliquer un traitement dans une ou plisieurs entité en tant que DPO
* dans une entité ou on a les droits.
*
* @access public
* @created 13/12/2019
* @version V1.2.0
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*/
public function dupliquerTraitementInOrganisations()
{
if ($this->request->is('post') || $this->request->is('put')) {
$fiche_id = $this->request->data['Fiche']['fiche_id'];
$user_id = $this->Auth->user('id');
$this->Droits->assertRecordAuthorized('Fiche', $fiche_id);
$success = true;
$this->Fiche->begin();
$fiche = $this->Fiche->find('first', [
'conditions' => [
'id' => $fiche_id
]
]);
$champs = $this->Valeur->find('all', [
'conditions' => [
'fiche_id' => $fiche_id
]
]);
// On n'accepte que les organisations que je peux voir
$organisations = array_intersect(
array_filter((array)Hash::get($this->request->data, 'Fiche.organisations')),
array_keys($this->WebcilUsers->organisations('list'))
);
foreach ($organisations as $organisation_id) {
if ($success === true) {
if ($fiche['Fiche']['coresponsable'] === false) {
$fiche['Fiche']['coresponsable'] = '0';
} else {
$fiche['Fiche']['coresponsable'] = '1';
}
$this->Fiche->create([
'Fiche' => [
'user_id' => $user_id,
'form_id' => $fiche['Fiche']['form_id'],
'organisation_id' => $organisation_id,
'norme_id' => $fiche['Fiche']['norme_id'],
'numero' => $fiche['Fiche']['numero'],
'coresponsable' => $fiche['Fiche']['coresponsable'],
'coresponsableid' => $fiche['Fiche']['coresponsableid']
]
]);
$success = $success && false !== $this->Fiche->save(null, ['atomic' => false]);
if ($success === true) {
$idNewFiche = $this->Fiche->getLastInsertId();
foreach ($champs as $champ) {
if ($success === true) {
$this->Valeur->create([
'Valeur' => [
'fiche_id' => $idNewFiche,
'valeur' => $champ['Valeur']['valeur'],
'champ_name' => $champ['Valeur']['champ_name']
]
]);
$success = $success && false !== $this->Valeur->save(null, ['atomic' => false]);
}
}
if ($success === true) {
$contentHistorique = __d('historique', 'historique.initialisationTraitement') . ' ' . $this->Auth->user('nom_complet');
$success = $success && false !== $this->_saveHistorique($contentHistorique, $idNewFiche);
if ($success === true) {
$success = $success && false !== $this->_saveEtatFiche(
$idNewFiche,
EtatFiche::INITIALISATION_TRAITEMENT,
$user_id,
$user_id
);
}
}
}
}
}
if ($success === true) {
$this->Fiche->commit();
$this->Session->setFlash(__d('formulaire', 'formulaire.flashsuccessFormulaireDupliquer'), 'flashsuccess');
} else {
$this->Fiche->rollback();
$this->Session->setFlash(__d('default', 'default.flasherrorEnregistrementErreur'), 'flasherror');
}
$this->redirect($this->Referers->get());
}
}
/**
* Récupére en BDD les normes et les descriptions
*
......
......@@ -893,25 +893,12 @@ class PannelController extends AppController {
]
];
$mesOrganisations = $this->WebcilUsers->organisations(
'list',
[
'conditions' => [
'OrganisationUser.organisation_id !=' => $this->Session->read('Organisation.id')
],
'droits' => 'add' === $this->request->params['action']
? ListeDroit::INSERER_TRAITEMENT_REGISTRE
: ListeDroit::MODIFIER_TRAITEMENT_REGISTRE
]
);
$banettes['allTraitements'] = [
'results' => $this->Fiche->find('all', $query + ['limit' => 0]),
'count' => $this->Fiche->find('count', $query),
'enumsNormes' => $this->_enumsNorme(),
'duplicationOrganisation' => count($mesOrganisations)
];
$this->set(compact('banettes', 'options', 'mesOrganisations'));
$this->set(compact('banettes', 'options'));
}
}
......@@ -282,18 +282,6 @@ msgstr "Filtrer en fonction de l'état du traitement"
msgid "pannel.placeholderSelectionnerEtatTraitement"
msgstr "Sélectionner un ou plusieurs état de traitement"
msgid "pannel.commentaireDupliquerTraitement"
msgstr "Dupliquer le traitement dans une autre entité"
msgid "pannel.popupDuplicationTraitementOrganisations"
msgstr "Duplication du traitement dans une ou plusieurs entitée(s)"
msgid "pannel.champDupliquerTraitementEntites"
msgstr "Sélectionner une ou plusieurs entités"
msgid "pannel.placeholderSelectionnerDupliquerTraitementEntites"
msgstr "Sélectionner une ou plusieurs entités"
###############################################################################
########################## View/Pannel/test.ctp ###########################
......
......@@ -179,10 +179,6 @@ class FichesControllerTest extends ControllerTestCase
$this->markTestSkipped('Aucune idée concernant la façon de tester, s\'agissant de fichiers');
}
public function testAccessDupliquerTraitementInOrganisations() {
$this->markTestIncomplete('Il manque des données et des tests pour les DPO multi-entités');
}
public function dataAccessEdit() {
// @info: Admin, DPO et rédacteur peuvent rédiger un traitement
// @info: Fiches créées par les utilisateurs 8 (rjaune) et 11 (nroux)
......
......@@ -1228,7 +1228,6 @@ class BanettesHelper extends AppHelper {
'action' => 'allTraitements',
'count' => $banette['count'],
'enumsNormes' => $banette['enumsNormes'],
'duplicationOrganisation' => $banette['duplicationOrganisation']
];
return $this->_banette($banette['results'], $params);
......@@ -1252,29 +1251,6 @@ class BanettesHelper extends AppHelper {
return $this->_button('/fiches/show/#Fiche.id#', $result)
.$this->_button('/fiches/historique/#Fiche.id#', $result, [
'onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"
])
.$this->_buttonDupliquerTraitement($result, $params);
}
/**
* @access protected
* @created 12/12/2019
* @version V1.2.0
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*/
protected function _buttonDupliquerTraitement(array $result, array $params = [])
{
if ($this->Autorisation->isDpo() && !empty($params['duplicationOrganisation'])) {
$fiche_id = Hash::get($result, 'Fiche.id');
return $this->Html->link('<span class="fa fa-clipboard fa-lg"><!----></span>', ['#' => '#'], [
'data-id' => $fiche_id,
'escape' => false,
'data-toggle' => 'modal',
'data-target' => '#modalDupliquerTraitementOrganisations',
'class' => 'btn btn-default-primary btn_DuplicationTraitementOrganisations btn-sm my-tooltip',
'title' => __d('pannel', 'pannel.commentaireDupliquerTraitement')
]);
}
}
}
......@@ -81,49 +81,4 @@ $filters = $this->request->data;
$params = ['limit' => false];
// Banette mes déclarations en cours d'initialisation
echo $this->Banettes->allTraitement($banettes['allTraitements'], $params);
// Pop-up de duplication d'un traitement dans une autre entité
echo $this->element(
'modal',
[
'modalId' => 'modalDupliquerTraitementOrganisations',
'content' => [
'title' => __d('pannel', 'pannel.popupDuplicationTraitementOrganisations'),
'body' => $this->Html->tag(
'div',
$this->Form->create('Fiche', [
'url' => [
'controller' => 'fiches',
'action' => 'dupliquerTraitementInOrganisations'
]
])
. $this->Form->input('organisations', [
'options' => $mesOrganisations,
'class' => 'usersDeroulant transformSelect form-control',
'empty' => true,
'label' => __d('pannel', 'pannel.champDupliquerTraitementEntites'),
'data-placeholder' => __d('pannel', 'pannel.placeholderSelectionnerDupliquerTraitementEntites'),
'multiple' => true,
])
.$this->Form->hidden('fiche_id', ['id' => 'fiche_id']),
['class' => 'form-group']
),
'footer' => $this->Html->tag(
'div',
$this->Form->button(
'<i class="fa fa-times-circle fa-lg">&nbsp;</i>'
.__d('default', 'default.btnAnnuler'),
['class' => 'btn btn-default-default', 'data-dismiss' => 'modal']
)
.$this->Form->button("<i class='fa fa-send fa-lg'><!----></i>" . __d('default', 'default.btnEnvoyer'), [
'type' => 'submit',
'class' => 'btn btn-default-success',
'escape' => false
]),
['class' => 'btn-group']
)
.$this->Form->end()
]
]
);
\ No newline at end of file
echo $this->Banettes->allTraitement($banettes['allTraitements'], $params);
\ No newline at end of file
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