Commit 65b002e1 authored by Théo GUILLON's avatar Théo GUILLON
Browse files

Correction : modification type d'annexe

Ajout : menu typage admin et superadmin
Modification : de l'emplacement de la dissociation d'un type à une organisation
parent b5b487ee
......@@ -638,7 +638,8 @@ class FichesController extends AppController
$this->redirect($this->Referers->get());
}
// debug($this->request->data);die;
// debug($this->request->data);
// die;
$success = true;
$this->Fiche->begin();
......@@ -726,6 +727,7 @@ class FichesController extends AppController
$success = false !== $this->Historique->save(null, ['atomic' => false]) && $success;
if (isset($this->request->data['delfiles']) && !empty($this->request->data['delfiles'])) {
debug("lalal");die;
foreach (array_unique($this->request->data['delfiles']) as $val) {
$success = $success && $this->Fichier->deleteFichier($val);
}
......@@ -751,6 +753,23 @@ class FichesController extends AppController
);
}
}
$filesBDD = $this->Fichier->find('all', [
'conditions' => [
'fiche_id' => $id
]
]);
if (!empty($filesBDD)) {
foreach ($filesBDD as $key => $file) {
if (isset($data['Fichier']['typage_'.$key]) && !empty($data['Fichier']['typage_'.$key]) && $success === true) {
if ($file['Fichier']['typage_id'] !== $data['Fichier']['typage_'.$key]) {
$file['Fichier']['typage_id'] = $data['Fichier']['typage_' . $key];
$success = $success && $this->Fichier->save($file, ['atomic' => false]);
}
}
}
}
}
if ($success == true &&
......@@ -912,6 +931,7 @@ class FichesController extends AppController
// On récupère les fichiers en annexe
$this->getFilesSave($id);
$typages = $this->_typages();
$formulaireOLD = $this->Formulaire->find('first', [
'conditions' => [
......@@ -961,7 +981,7 @@ class FichesController extends AppController
$this->_soustraitances($id);
$this->set('formulaire_id', $fiche['Fiche']['form_id']); //@TODO
$this->set(compact('showRegistre', 'formulaireOLD'));
$this->set(compact('showRegistre', 'formulaireOLD', 'typages'));
}
/**
......
......@@ -25,7 +25,8 @@ App::uses('ListeDroit', 'Model');
class TypagesController extends AppController {
public $uses = [
'Typage'
'Typage',
'TypageOrganisation'
];
/**
......@@ -120,6 +121,52 @@ class TypagesController extends AppController {
$this->set(compact('typages', 'mesOrganisations'));
}
/**
* @author Théo GUILLON <theo.guillon@libriciel.coop>
* @access public
* @created 28/04/2020
* @version V1.2.0
*/
public function entite() {
if (true !== $this->Droits->authorized(ListeDroit::GESTION_TYPAGE)) {
throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
}
$this->set('title', __d('typage', 'typage.titreGestionTypageEntitee'));
$organisation_id = $this->Session->read('Organisation.id');
debug($organisation_id);
$condition = [];
$query = [
'conditions' => $condition,
'fields' => [
'Typage.id',
'Typage.libelle'
],
'order' => [
'Typage.libelle ASC'
]
];
$subQuery = [
'alias' => 'typages_organisations',
'fields' => [
'typages_organisations.typage_id'
],
'conditions' => [
'typages_organisations.organisation_id' => $organisation_id
]
];
$sql = $this->TypageOrganisation->sql($subQuery);
$query['conditions'][] = "Typage.id IN ( {$sql} )";
$this->paginate = $query;
$typages = $this->paginate($this->Typage);
$this->set(compact('typages'));
}
/**
* Fonction qui permet l'ajout d'une nouvelle norme
......
......@@ -154,6 +154,9 @@ msgstr "Typages"
msgid "default.sousTitreTypagesAnnexes"
msgstr "Typages des annexes"
msgid "default.sousTitreMesTypesAnnexes"
msgstr "Mes types d'annexes"
msgid "default.titreNormes"
msgstr "Normes"
......
......@@ -24,6 +24,9 @@ msgstr "Ajout d'un type d'annexe"
msgid "typage.titreeditType"
msgstr "Modification d'un type d'annexe"
msgid "typage.titreGestionTypageEntitee"
msgstr "Liste des types d'annexe associés à mon l'entité"
###############################################################################
############################## Session->setFlash ##############################
......
......@@ -539,7 +539,8 @@ class Fiche extends AppModel {
$donnees = $this->_preparationGenerationHistorique($id, $donnees);
}
// debug(array_keys(Hash::flatten($donnees)));
// var_dump($donnees);
// die;
......@@ -1057,12 +1058,6 @@ class Fiche extends AppModel {
private function _preparationAnnexe($id, $donnees) {
// On chercher si le traitement comporte des annexe(s)
// $fileAnnexes = $this->Fichier->find('all', [
// 'conditions' => [
// 'fiche_id' => $id
// ]
// ]);
$fileAnnexes = $this->Fichier->find('all', [
'contain' => [
'Typage'
......@@ -1109,17 +1104,17 @@ class Fiche extends AppModel {
'type' => 'file'
];
$donnees['fichiers'][$key]['valeur_nom'] = [
$donnees['info_fichiers'][$key]['valeur_nom_fichier'] = [
'value' => $fileAnnexe['Fichier']['nom'],
'type' => 'text'
];
$donnees['fichiers'][$key]['valeur_depot'] = [
$donnees['info_fichiers'][$key]['valeur_date_depot'] = [
'value' => $fileAnnexe['Fichier']['created'],
'type' => 'text'
];
$donnees['fichiers'][$key]['valeur_type'] = [
$donnees['info_fichiers'][$key]['valeur_type_fichier'] = [
'value' => $fileAnnexe['Typage']['libelle'],
'type' => 'text'
];
......
......@@ -139,11 +139,12 @@ class Fichier extends AppModel {
}
/**
*
*
* @param int $idFiche
* @param boolean $useAllExtensionFiles
* @param type $uuidDossier
* @param string $uuidDossier
* @param int $idUser
* @param array $typages
* @param boolean $transaction La méthode doit-elle gérer elle-même une
* transaction (par défaut: false) ?
* @return boolean
......@@ -190,6 +191,7 @@ class Fichier extends AppModel {
if (array_key_exists('typage_tmp_'.$key, $typages) === true) {
$typeFile = $typages['typage_tmp_'.$key];
} elseif (array_key_exists('typage_'.$key, $typages) === true) {
debug("SOS");die;
$typeFile = $typages['typage_'.$key];
}
}
......@@ -224,7 +226,7 @@ class Fichier extends AppModel {
}
return true;
}
return false;
}
......
......@@ -135,7 +135,6 @@
<td class="col-md-4 tdleft">
<?php
if (!empty($typages)) {
// echo "Type d'annexe : " . $typages[$val['Fichier']['typage_id']];
echo $this->WebcilForm->input('Fichier.typage_' . $key, [
'id' => 'typage_' . $key,
'label' => [
......@@ -266,36 +265,44 @@
});
function deleteFile(file, key) {
$.ajax({
url: '/fiches/deleteFile',
method: 'POST',
data: {filename: file},
success: function () {
var row = document.getElementById("rowFiche" + key);
row.parentNode.removeChild(row);
},
error: function () {
alert('Erreur lors de la suppression du fichier');
}
});
let validation = confirm("Voulez vous supprimer l'annexe ?");
if (validation === true) {
$.ajax({
url: '/fiches/deleteFile',
method: 'POST',
data: {filename: file},
success: function () {
let row = document.getElementById("rowFiche" + key);
row.parentNode.removeChild(row);
},
error: function () {
alert('Erreur lors de la suppression du fichier');
}
});
}
}
function deleteFileSave(idFile, urlFile) {
$.ajax({
url: '/fiches/deleteRecordingFile',
method: 'POST',
data: {
idFile: idFile,
urlFile: urlFile
},
success: function () {
var row = document.getElementById("rowFichier" + idFile);
row.parentNode.removeChild(row);
},
error: function () {
alert('Erreur lors de la suppression du fichier');
}
});
let validation = confirm("Voulez vous supprimer l'annexe ?");
if (validation === true) {
$.ajax({
url: '/fiches/deleteRecordingFile',
method: 'POST',
data: {
idFile: idFile,
urlFile: urlFile
},
success: function () {
let row = document.getElementById("rowFichier" + idFile);
row.parentNode.removeChild(row);
},
error: function () {
alert('Erreur lors de la suppression du fichier');
}
});
}
}
</script>
\ No newline at end of file
......@@ -320,6 +320,13 @@
'controller' => 'typages',
'action' => 'index'
]
],
__d('default', 'default.sousTitreMesTypesAnnexes') => [
'class' => 'fa-link',
'url' => [
'controller' => 'typages',
'action' => 'entite'
]
]
],
__d('default', 'default.titreNormes') => [
......
......@@ -16,6 +16,14 @@
</a>
</li>
<li>
<a href="#onglet_typages" role="tab" data-toggle="tab">
<?php
echo __d('default', 'default.titreTypages');
?>
</a>
</li>
<li>
<a href="#onglet_normes" role="tab" data-toggle="tab">
<?php
......@@ -112,8 +120,31 @@
</div>
</div>
<div id="onglet_normes" class="tab-pane">
<div id="onglet_typages" class="tab-pane">
<div class="col-md-12">
<a type="button" class="btn btn-default-menu" href="/typages/index/">
<div class="fa fa-list-alt fa-primary fa-2x"></div>
<div>
<?php
echo __d('default', 'default.sousTitreTypagesAnnexes');
?>
</div>
</a>
<a type="button" class="btn btn-default-menu" href="/typages/entite/">
<div class="fa fa-link fa-primary fa-2x"></div>
<div>
<?php
echo __d('default', 'default.sousTitreMesTypesAnnexes');
?>
</div>
</a>
</div>
</div>
<div id="onglet_normes" class="tab-pane">
<div class="col-md-12">
<a type="button" class="btn btn-default-menu" href="/normes/index/">
<div class="fa fa-certificate fa-primary fa-2x"></div>
......
......@@ -64,6 +64,18 @@
</div>
</a>
<a type="button" class="btn btn-default-menu text-center" href="/typages/index/">
<div class="fa fa-list-alt fa-primary fa-2x"></div>
<div>
<span style="word-wrap: break-word; text-align: center">
<?php
echo __d('default', 'default.sousTitreTypagesAnnexes');
?>
</span>
</div>
</a>
<a type="button" class="btn btn-default-menu text-center" href="/organisations/gestionrgpd/">
<div class="fa fa-user-secret fa-primary fa-2x"></div>
......
<?php
echo $this->Html->script('filtre.js');
echo $this->Html->css('filtre.css');
// Bouton du filtre de la liste
echo $this->Form->button('<span class="fa fa-filter fa-lg"><!----></span>' . __d('responsable', 'responsable.btnFiltrerResponsable'), [
'type' => 'button',
'class' => 'btn btn-default-default pull-right',
'id' => 'filtrage'
]);
$filters = $this->request->data;
unset($filters['sort'], $filters['direction'], $filters['page']);
if(empty($filters['Filtre'])) {
unset($filters['Filtre']);
}
?>
<div id="divFiltrage" <?php if(true === empty($filters)) {echo 'style="display: none;"';}?>>
<?php
echo $this->Form->create('Filtre', [
'url' => [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
], 'class' => 'search-form'
]);
?>
<div class="row">
<?php
// Filtrer par organisation
echo $this->Form->input('siretstructure', [
'id' => 'siretstructure',
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('responsable', 'responsable.champFiltreNbSiret'),
'empty' => true,
'data-placeholder' => __d( 'responsable', 'responsable.placeholderChampFiltreNbSiret' ),
'options' => $options['siretstructure'],
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
// Filtrer sur le nombre de sous-traitant à l'affichage
echo $this->Form->input('apestructure', [
'id' => 'apestructure',
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('responsable', 'responsable.champFiltreCodeAPE'),
'empty' => true,
'data-placeholder' => __d( 'responsable', 'responsable.placeholderChampFiltreCodeAPE' ),
'options' => $options['apestructure'],
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<br>
<div class="row">
<?php
// Filtrer par raison sociale
echo $this->Form->input('raisonsocialestructure', [
'id' => 'raisonsocialestructure',
'class' => 'usersDeroulant transformSelect form-control',
'label' => __d('responsable', 'responsable.champFiltreRaisonSociale'),
'empty' => true,
'data-placeholder' => __d( 'responsable', 'responsable.placeholderChampFiltreRaisonSociale' ),
'options' => $options['raisonsocialestructure'],
'before' => '<div class="col-md-6">',
'after' => '</div>'
]);
?>
</div>
<!-- Groupe de bouton -->
<div class="row top30">
<div class="col-md-4 col-md-offset-5 btn-group">
<?php
// Bouton Réinitialiser le filtre
echo $this->Html->link('<i class="fa fa-undo fa-lg"><!----></i> ' . __d('registre', 'registre.btnReinitialiserFiltre'), [
'controller' => $this->request->params['controller'],
'action' => $this->request->params['action']
],[
'class' => 'btn btn-default-danger', //search-reset
'escape' => false,
]);
// Bouton Appliquer les filtres
echo $this->Form->button('<i class="fa fa-filter fa-lg"><!----></i> ' . __d('registre', 'registre.btnFiltre'), [
'type' => 'submit',
'class' => 'btn btn-default-primary'
]);
?>
</div>
</div>
<?php
echo $this->Form->end();
?>
</div>
<?php
$pagination = null;
if (!empty($responsables)) {
if (!empty($typages)) {
$this->Paginator->options(
array( 'url' => Hash::flatten( (array)$this->request->data, '.' ) )
);
......@@ -114,23 +12,13 @@
<table class="table ">
<thead>
<tr>
<!-- Responsable-->
<th class="thleft col-md-2">
<!-- Libelle-->
<th class="thleft col-md-10">
<?php echo __d('responsable', 'responsable.titreTableauResponsable'); ?>
</th>
<!-- Information sur le Responsable -->
<th class="thleft col-md-2">
<?php echo __d('responsable', 'responsable.titreTableauInfoResponsable'); ?>
</th>
<!-- Structure -->
<th class="thleft col-md-2">
<?php echo __d('responsable', 'responsable.titreTableauStructure'); ?>
</th>
<!-- Actions -->
<th class="thleft col-md-1">
<th class="thleft col-md-2">
<?php echo __d('responsable', 'responsable.titreTableauAction'); ?>
</th>
</tr>
......@@ -138,84 +26,29 @@
<tbody>
<?php
foreach ($responsables as $responsable) {
foreach ($typages as $typage) {
?>
<tr>
<!-- Prenom Nom co-responsable -->
<td class="tdleft">
<!-- Libelle -->
<td>
<?php
echo sprintf('%s %s', ucfirst($responsable['Responsable' ]['prenomresponsable']), strtoupper($responsable['Responsable']['nomresponsable']));
?>
</td>
<!-- Information sur le co-responsable -->
<td class="tdleft">
<?php
$items = Hash::extract($responsable, 'Responsable.fonctionresponsable');
if (empty($items) === false) {
echo '<li><strong>Fonction : </strong>' . implode('</li><li>', $items) . '</li>';
}
$items = Hash::extract($responsable, 'Responsable.telephoneresponsable');
if (empty($items) === false) {
echo '<li><strong>Téléphone : </strong>'.implode('</li><li>', $items).'</li>';
}
$items = Hash::extract($responsable, 'Responsable.emailresponsable');
if (empty($items) === false) {
echo '<li><strong>E-mail : </strong>'.implode('</li><li>', $items).'</li>';
}
?>
</td>
<!-- Structure -->
<td class="tdleft">
<?php
$items = Hash::extract($responsable, 'Responsable.raisonsocialestructure');
if (empty($items) === false) {
echo '<li><strong>Structure : </strong>' . implode('</li><li>', $items) . '</li>';
}
$items = Hash::extract($responsable, 'Responsable.telephonestructure');
if (empty($items) === false) {
echo '<li><strong>Téléphone : </strong>'.implode('</li><li>', $items).'</li>';
}
$items = Hash::extract($responsable, 'Responsable.faxstructure');
if (empty($items) === false) {
echo '<li><strong>Fax : </strong>'.implode('</li><li>', $items).'</li>';
}
$items = Hash::extract($responsable, 'Responsable.emailstructure');
if (empty($items) === false) {
echo '<li><strong>E-mail : </strong>'.implode('</li><li>', $items).'</li>';
}
echo $typage['Typage']['libelle'];
?>
</td>
<!-- Actions -->
<td class="tdleft col-md-2">
<td>
<div class="btn-group">
<?php
echo $this->Html->link('<span class="fa fa-eye fa-lg"><!----></span>', [
'controller' => 'responsables',
'action' => 'show',
$responsable['Responsable']['id']
], [
'class' => 'btn btn-default-default btn-sm my-tooltip',
'title' => __d('responsable', 'responsable.commentaireBtnVisualiserResponsable'),
'escape' => false,
]);
echo $this->Html->link('<span class="fa fa-chain-broken fa-lg"><!----></span>', [
'controller' => 'responsables',
'action' => 'dissocierResponsable',
$responsable['Responsable']['id']
], [
'controller' => 'typages',
'action' => 'dissocier',
$typage['Typage']['id']
], [
'class' => 'btn btn-default-danger btn-sm my-tooltip',
'escapeTitle' => false,
'title' => __d('responsable', 'responsable.commentaireBtnSupprimerResponsableEntite')
], __d('responsable', 'responsable.confirmationSupprimerResponsableEntite') . ' " ' . $responsable['Responsable']['raisonsocialestructure'] . ' " de votre entité ?');
'title' => __d('typage', 'typage.btnDissocier')
], __d('typage', 'typage.confirmationDissocierType') . ' " ' . $typage['Typage']['libelle'] . ' " de votre entité ?');
?>
</div>
</td>
......@@ -229,14 +62,12 @@
echo $pagination;
} else {
?>