Commit 5e48be34 authored by tguillon's avatar tguillon
Browse files

Ajout : de l'initialisation d'un traitement par le DPO

parent fd677f99
......@@ -22,6 +22,7 @@ Le format est basé sur le modèle [Keep a Changelog](http://keepachangelog.com/
### Ajouts
- Mise en place d'une FAQ.
- Mise en place de nouveau droits en rapport avec le FAQ.
- Mise en place de l'initialisation d'un traitement par le DPO
### Evolutions
......
......@@ -46,5 +46,12 @@ INSERT INTO liste_droits (libelle, value, created, modified) VALUES
('Consulter la FAQ', 30, NOW(), NOW()),
('Supprimer un article dans la FAQ', 31, NOW(), NOW());
--
-- Insertion de valeur dans la table etats
--
INSERT INTO etats (libelle, value, created, modified) VALUES
('Initialisation du traitement par le DPO', 11, NOW(), NOW()),
('Rédaction du traitement initialisé', 12, NOW(), NOW());
COMMIT;
......@@ -152,7 +152,8 @@ class BanettesComponent extends Component {
'EtatFiche.etat_id' => [
EtatFiche::ENCOURS_REDACTION,
EtatFiche::REPONSE_AVIS,
EtatFiche::REPLACER_REDACTION
EtatFiche::REPLACER_REDACTION,
EtatFiche::REDACTION_TRAITEMENT_INITIALISE
],
'EtatFiche.actif' => true,
'EtatFiche.user_id' => $this->Session->read('Auth.User.id')
......@@ -320,4 +321,40 @@ class BanettesComponent extends Component {
return $query;
}
/**
* Traitement initialisé par le DPO
*
* @return array()
*
* @access public
* @created 10/12/2019
* @version V1.2.0
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*/
public function queryInitialisationTraitement() {
$query = $this->_query();
$query['conditions'] += [
[
'OR' => [
[
'EtatFiche.etat_id' => [
EtatFiche::INITIALISATION_TRAITEMENT
],
'EtatFiche.actif' => true,
'EtatFiche.user_id' => $this->Session->read('Auth.User.id')
],
[
'EtatFiche.etat_id' => EtatFiche::DEMANDE_AVIS,
'EtatFiche.actif' => true,
'EtatFiche.previous_user_id' => $this->Session->read('Auth.User.id'),
$this->_queryConditionNotEtatsParalleles(EtatFiche::DEMANDE_AVIS)
]
]
]
];
return $query;
}
}
......@@ -220,7 +220,10 @@ class DroitsComponent extends Component {
$infoValidateur = $EtatFiche->find('first', [
'conditions' => [
'fiche_id' => $id,
'etat_id' => EtatFiche::ENCOURS_VALIDATION,
'etat_id' => [
EtatFiche::ENCOURS_VALIDATION,
EtatFiche::REDACTION_TRAITEMENT_INITIALISE
],
'actif' => true
]
]);
......
This diff is collapsed.
......@@ -193,8 +193,12 @@ class FichesController extends AppController
* @access public
* @created 17/06/2015
* @version V1.0.0
*
* @modified 11/12/2019
* @version V1.2.0
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*/
public function add($id)
public function add($id, $initialisation = false)
{
if (true !== $this->Droits->authorized(ListeDroit::REDIGER_TRAITEMENT)) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
......@@ -254,9 +258,17 @@ class FichesController extends AppController
$last = $this->Fiche->getLastInsertID();
if ($success == true) {
if ($initialisation == true) {
$commentaireHistorique = __d('historique', 'historique.initialisationTraitement');
$etat_id_traitement = EtatFiche::INITIALISATION_TRAITEMENT;
} else {
$commentaireHistorique = __d('historique', 'historique.creationTraitement');
$etat_id_traitement = EtatFiche::ENCOURS_REDACTION;
}
$this->Historique->create([
'Historique' => [
'content' => __d('historique', 'historique.creationTraitement') . ' ' . $this->Auth->user('prenom') . ' ' . $this->Auth->user('nom'),
'content' => $commentaireHistorique . ' ' . $this->Auth->user('prenom') . ' ' . $this->Auth->user('nom'),
'fiche_id' => $last
]
]);
......@@ -265,7 +277,7 @@ class FichesController extends AppController
$this->EtatFiche->create([
'EtatFiche' => [
'fiche_id' => $last,
'etat_id' => EtatFiche::ENCOURS_REDACTION,
'etat_id' => $etat_id_traitement,
'previous_user_id' => $this->Auth->user('id'),
'user_id' => $this->Auth->user('id')
]
......
......@@ -488,8 +488,7 @@ class PannelController extends AppController {
],
'User' => [
'id',
'nom',
'prenom'
'nom_complet'
],
'Commentaire' => [
'User' => [
......@@ -793,5 +792,78 @@ class PannelController extends AppController {
debug($result);
$this->autoRender = false;
}
/**
* Fonction qui récupère tous les traitements en cours de rédaction
*
* @access public
* @created 10/12/2019
* @version V1.2.0
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*/
public function initialisation() {
if (true !== $this->Droits->authorized($this->Droits->isDpo())) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
// Superadmin non autorisé
if ($this->Droits->isSu() == true) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$this->set('title', __d('pannel', 'pannel.titreInitialisationTraitement'));
$redacteurs = $this->_listRedacteurs();
// Initialisation d'un traitement
$query = $this->Banettes->queryInitialisationTraitement();
$banettes['initialisation'] = [
'results' => $this->Fiche->find('all', $query + ['limit' => 0]),
'count' => $this->Fiche->find('count', $query),
'nbUserValideur' => 0,
'nbUserConsultant' => 0,
'enumsNormes' => $this->_enumsNorme()
];
$this->set(compact('banettes', 'redacteurs'));
}
/**
* Liste des rédacteurs de l'entité
*
* @return type
*
* @access protected
* @created 11/12/2019
* @version V1.2.0
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*/
protected function _listRedacteurs() {
// Requète récupérant les utilisateurs ayant le droit de rédaction
$queryRedacteurs = [
'fields' => [
'User.id',
'User.nom',
'User.prenom'
],
'joins' => [
$this->Droit->join('OrganisationUser', ['type' => "INNER"]),
$this->Droit->OrganisationUser->join('User', ['type' => "INNER"])
],
'recursive' => -1,
'conditions' => [
'OrganisationUser.organisation_id' => $this->Session->read('Organisation.id'),
'User.id != ' . $this->Auth->user('id'),
'Droit.liste_droit_id' => ListeDroit::REDIGER_TRAITEMENT
],
];
$droitsRedacteurs = $this->Droit->find('all', $queryRedacteurs);
$redacteurs = Hash::combine($droitsRedacteurs, '{n}.User.id', [
'%s %s',
'{n}.User.prenom',
'{n}.User.nom'
]);
return $redacteurs;
}
}
......@@ -42,6 +42,9 @@ msgstr "Mes déclarations validées et insérées au registre"
msgid "default.sousTitreTraitementVu"
msgstr "Déclarations passées en ma possession"
msgid "default.sousTitreInitialisationTraitement"
msgstr "Initialisation des déclarations"
msgid "default.titreRegistre"
msgstr "Registre"
......@@ -283,6 +286,10 @@ msgstr " a été refusé"
msgid "default.notificationCommentaireAjouterTraitement"
msgstr "Un commentaire a été ajouté au traitement"
msgid "default.notificationTraitementInitialise"
msgstr " a été initialisé pour vous par le DPO"
###############################################################
######### Session->setFlash plusieurs page ##########
......
......@@ -72,6 +72,12 @@ msgid "element.ReplacerRedaction"
msgstr "Replacé en rédaction"
msgid "element.ReplacerRedactionPar"
msgstr "Replacé en rédaction par"
msgstr "Replacé en rédaction par"
msgid "element.Initialisation"
msgstr "Initialisation du traitement par le DPO"
msgid "element.RedactionInitialisation"
msgstr "Rédaction du traitement, initialisé par le DPO"
###############################################################################
\ No newline at end of file
......@@ -52,6 +52,9 @@ msgstr "Le traitement a été verrouillé"
msgid "etat_fiche.flashsuccessCommentaireEnregistre"
msgstr "Commentaire enregistré"
msgid "etat_fiche.flashsuccessTraitementEnvoyerRedaction"
msgstr "Le traitement a été envoyé en rédaction"
###############################################################
###############################################################################
\ No newline at end of file
......@@ -23,6 +23,9 @@ msgstr "a modifié le traitement"
msgid "historique.verrouillerTraitement"
msgstr "a verrouillé le traitement"
msgid "historique.initialisationTraitement"
msgstr "Initialisation du traitement par"
###############################################################################
......@@ -49,4 +52,15 @@ msgstr "a demandé l'avis de"
msgid "historique.annulerDemandeAvis"
msgstr "a annulé la demande d'avis à"
msgid "historique.envoieTraitementInitialiserAuRedacteur"
msgstr "le DPO, a envoyé le traitement initialisé à"
msgid "historique.redaction"
msgstr "pour rédaction"
msgid "historique.redactionInitialisationTraitement"
msgstr "Rédaction par"
msgid "historique.redactiontraitementInitialisationTraitement"
msgstr "du traitement initialisé par le DPO"
###############################################################################
......@@ -59,6 +59,14 @@ msgstr "Envoyer le traitement pour consultation"
msgid "pannel.popupEnvoyerTraitementValidation"
msgstr "Envoyer le traitement pour validation"
msgid "pannel.btnInitialisationTraitement"
msgstr "Initialisation d'un traitement"
msgid "pannel.textEnvoyerRedacteur"
msgstr "Envoyer au rédacteur"
msgid "pannel.popupEnvoyerTraitementRedaction"
msgstr "Envoyer le traitement pour rédaction"
###############################################################################
......@@ -91,6 +99,9 @@ msgstr "Déclarations reçues pour consultation"
msgid "pannel.titreTraitementVu"
msgstr "Toutes les déclarations passées en ma possession"
msgid "pannel.titreInitialisationTraitement"
msgstr "Mes déclarations initialisé"
###############################################################################
......@@ -220,6 +231,9 @@ msgstr "Visualiser l'historique complet"
msgid "pannel.popupReorienterTraitement"
msgstr "Réorienter le traitement"
msgid "pannel.textSelectUserRedacteur"
msgstr "Sélectionnez un rédacteur "
###############################################################################
......@@ -319,6 +333,12 @@ msgstr "Générer le traitement"
msgid "pannel.commentaireDownloadFileTraitementTraitement"
msgstr "Télécharger le traitement"
msgid "pannel.textEtatInitialisationTraitement"
msgstr "Initialisation du traitement"
msgid "pannel.textEtatRedactionTraitementInitialise"
msgstr "Rédaction du traitement initialisé par le DPO"
# Banette En cours de rédaction
msgid "pannel.aucunTraitementEncoursRedaction"
......@@ -393,4 +413,15 @@ msgid "pannel.btnVoirTraitementConsulte"
msgstr "Visualiser toutes les déclarations passées en ma possession"
msgid "pannel.traitementConsulte"
msgstr "État des déclarations passées en ma possession (%d)"
\ No newline at end of file
msgstr "État des déclarations passées en ma possession (%d)"
# Banette Initialisation traitement
msgid "pannel.aucunTraitementInitialisation"
msgstr "Vous n'avez aucune déclaration en cours d'initialisation"
msgid "pannel.btnVoirTraitementInitialisation"
msgstr "Visualiser toutes mes déclarations en cours d'initialisation"
msgid "pannel.traitementInitialisation"
msgstr "Mes déclarations en cours d'initialisation (%d)"
\ No newline at end of file
......@@ -36,6 +36,8 @@ class EtatFiche extends AppModel {
const REPLACER_REDACTION = 8; // Replacer en rédaction
const MODIFICATION_TRAITEMENT_REGISTRE = 9; // Modification du traitement inséré au registre
const REPONSE_AVIS = 10; // Réponse à la demande d avis
const INITIALISATION_TRAITEMENT = 11; // Initialisation du traitement par le DPO
const REDACTION_TRAITEMENT_INITIALISE = 12; // Rédaction du traitement initialisé
/**
* belongsTo associations
......
......@@ -26,6 +26,14 @@ class Notification extends AppModel {
public $name = 'Notification';
const DEMANDE_AVIS = 1; // Demande d'avis
const VALIDATION_DEMANDEE = 2; // Validation demandée
const TRAITEMENT_VALIDE = 3; // Traitement validé
const TRAITEMENT_REFUSE = 4; // Traitement refusé
const COMMENTAIRE_AJOUTE = 5; // Commentaire ajouté sur le traitement
const TRAITEMENT_INITIALISE = 6; // Traitement initialisé par le DPO
/**
* belongsTo associations
*
......
......@@ -24,7 +24,7 @@
foreach ($parcours as $value) {
switch ($value['EtatFiche']['etat_id']) {
//Rectangle bleu Rédaction
case 1:
case EtatFiche::ENCOURS_REDACTION:
?>
<div class='bg-info tuilesStatuts col-md-10 col-md-offset-1'>
<div class='text-center'>
......@@ -37,7 +37,7 @@
<div class='tuilesStatutsNom'>
<?php echo __d('element', 'element.CreePar'); ?>
<b>
<?php echo $value['User']['prenom'] . " " . $value['User']['nom']; ?>
<?php echo $value['User']['nom_complet'] ?>
</b>
<?php echo __d('element', 'element.Le'); ?>
<b>
......@@ -88,7 +88,7 @@
break;
//Rectangle orange En attente de validation
case 2:
case EtatFiche::ENCOURS_VALIDATION:
?>
<div class='bg-warning tuilesStatuts col-md-10 col-md-offset-1'>
<div class='text-center'>
......@@ -101,7 +101,7 @@
<div class='tuilesStatutsNom'>
<?php echo __d('element', 'element.RecuePar'); ?>
<b>
<?php echo $value['User']['prenom'] . " " . $value['User']['nom']; ?>
<?php echo $value['User']['nom_complet'] ?>
</b>
<?php echo __d('element', 'element.Le'); ?>
<b>
......@@ -246,7 +246,7 @@
break;
//Rectangle vert Validée
case 3:
case EtatFiche::VALIDER:
?>
<div class='bg-success tuilesStatuts col-md-10 col-md-offset-1'>
<div class='text-center'>
......@@ -259,7 +259,7 @@
<div class='tuilesStatutsNom'>
<?php echo __d('element', 'element.ValideePar'); ?>
<b>
<?php echo $value['User']['prenom'] . " " . $value['User']['nom']; ?>
<?php echo $value['User']['nom_complet'] ?>
</b>
<?php echo __d('element', 'element.Le'); ?>
<b>
......@@ -303,7 +303,7 @@
break;
//Rectangle rouge Refusée
case 4:
case EtatFiche::REFUSER:
if (!empty($value['Commentaire'])) {
foreach ($value['Commentaire'] as $val) {
?>
......@@ -355,7 +355,7 @@
break;
//Rectangle Validéé Inseréé dans le registre
case 5:
case EtatFiche::VALIDER_DPO:
?>
<div class='bg-success tuilesStatuts col-md-10 col-md-offset-1'>
<div class='text-center'>
......@@ -368,7 +368,7 @@
<div class='tuilesStatutsNom'>
<?php echo __d('element', 'element.ValideePar'); ?>
<b>
<?php echo $value['User']['prenom'] . " " . $value['User']['nom']; ?>
<?php echo $value['User']['nom_complet'] ?>
</b>
<?php echo __d('element', 'element.Le'); ?>
<b>
......@@ -414,7 +414,7 @@
break;
//Rectangle orange En attente de consultation
case 6:
case EtatFiche::DEMANDE_AVIS:
?>
<div class='bg-warning tuilesStatuts col-md-10 col-md-offset-1'>
<div class='text-center'>
......@@ -427,7 +427,7 @@
<div class='tuilesStatutsNom'>
<?php echo __d('element', 'element.RecuePar'); ?>
<b>
<?php echo $value['User']['prenom'] . " " . $value['User']['nom']; ?>
<?php echo $value['User']['nom_complet'] ?>
</b>
<?php echo __d('element', 'element.Le'); ?>
<b>
......@@ -473,7 +473,7 @@
break;
//Rectangle vert Archivée
case 7:
case EtatFiche::ARCHIVER:
?>
<div class='bg-success tuilesStatuts col-md-10 col-md-offset-1'>
<div class='text-center'>
......@@ -486,7 +486,7 @@
<div class='tuilesStatutsNom'>
<?php echo __d('element', 'element.VerrouilleePar'); ?>
<b>
<?php echo $value['User']['prenom'] . " " . $value['User']['nom']; ?>
<?php echo $value['User']['nom_complet'] ?>
</b>
<?php echo __d('element', 'element.Le'); ?>
<b>
......@@ -530,7 +530,7 @@
break;
//Rectangle bleu Replacer en rédaction
case 8:
case EtatFiche::REPLACER_REDACTION:
?>
<div class='bg-info tuilesStatuts col-md-10 col-md-offset-1'>
<div class='text-center'>
......@@ -543,7 +543,7 @@
<div class='tuilesStatutsNom'>
<?php echo __d('element', 'element.ReplacerRedactionPar') ?>
<b>
<?php echo $value['User']['prenom'] . " " . $value['User']['nom']; ?>
<?php echo $value['User']['nom_complet'] ?>
</b>
<?php echo __d('element', 'element.Le'); ?>
<b>
......@@ -593,8 +593,8 @@
<?php
break;
//Rectangle orange Modification du traitement inséré au registre
case 9:
// Rectangle orange Modification du traitement inséré au registre
case EtatFiche::MODIFICATION_TRAITEMENT_REGISTRE:
?>
<div class='bg-warning tuilesStatuts col-md-10 col-md-offset-1'>
<div class='text-center'>
......@@ -607,7 +607,7 @@
<div class='tuilesStatutsNom'>
<?php echo __d('element', 'element.ModificationTraitementRegistrePar'); ?>
<b>
<?php echo $value['User']['prenom'] . " " . $value['User']['nom']; ?>
<?php echo $value['User']['nom_complet'] ?>
</b>
<?php echo __d('element', 'element.Le'); ?>
<b>
......@@ -643,6 +643,136 @@
<?php
break;
// Rectangle bleu Initialisation d'un traitement par le DPO
// EtatFiche 11
case EtatFiche::INITIALISATION_TRAITEMENT:
?>
<div class='bg-info tuilesStatuts col-md-10 col-md-offset-1'>
<div class='text-center'>
<h3>
<b>
<?php echo __d('element', 'element.Initialisation'); ?>
</b>
</h3>
</div>
<div class='tuilesStatutsNom'>
<?php echo __d('element', 'element.CreePar'); ?>
<b>
<?php echo $value['User']['nom_complet'] ?>
</b>
<?php echo __d('element', 'element.Le'); ?>
<b>
<?php echo $this->Time->format($value['Fiche']['created'], FORMAT_DATE_HEURE); ?>
</b>
</div>
<?php
if (!empty($value['Commentaire'])) {
?>
<div>
<br/>
<hr class='hrComms'/>
<div class='text-center'>
<h4>
<?php echo __d('element', 'element.Commentaire'); ?>
</h4>
</div>
<?php
foreach ($value['Commentaire'] as $val) {
?>
<div style="margin-left: 60px; ">
<p>
<?php echo $val['content']; ?>
</p>
<footer>
<?php echo __d('element', 'element.CommenterPar'); ?>
<b>
<?php echo $val['User']['prenom'] . " " . $val['User']['nom']; ?>
</b>
<?php echo __d('element', 'element.Le'); ?>
<b>
<?php echo $this->Time->format($val['created'], FORMAT_DATE_HEURE); ?>
</b>
</footer>
</div>
<br/>
<hr class='hrComms'/>
<?php
}
?>
</div>
<?php
}
?>
</div>
<?php
break;
// Rectangle bleu Rédaction du traitement initialisé par le DPO
// EtatFiche 12
case EtatFiche::REDACTION_TRAITEMENT_INITIALISE:
?>
<div class='bg-info tuilesStatuts col-md-10 col-md-offset-1'>
<div class='text-center'>
<h3>
<b>
<?php echo __d('element', 'element.RedactionInitialisation'); ?>
</b>
</h3>
</div>
<div class='tuilesStatutsNom'>
<?php echo __d('element', 'element.CreePar'); ?>
<b>
<?php echo $value['User']['nom_complet'] ?>
</b>
<?php echo __d('element', 'element.Le'); ?>
<b>
<?php echo $this->Time->format($value['Fiche']['created'], FORMAT_DATE_HEURE); ?>
</b>
</div>
<?php
if (!empty($value['Commentaire'])) {
?>
<div>
<br/>
<hr class='hrComms'/>
<div class='text-center'>
<h4>