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

Correction : gestion des modèles pour les formulaires

parent 50741a43
......@@ -143,38 +143,21 @@ class ModelesController extends AppController {
*/
protected function _getFormulairesMyOrganisations($mesOrganisations)
{
// Soit on n'a pas encore l'entrée (pour des formulaires associés)
$sqlOrganisationIsAssociatedToFormulaire = [];
$sqlOrganisationHasModelForFormulaire = [];
foreach (array_keys($mesOrganisations) as $organisation_id) {
$sqlOrganisationIsAssociatedToFormulaire[] = $this->Formulaire->FormulaireOrganisation->sql([
'alias' => 'formulaires_organisations',
'fields' => [
'formulaires_organisations.formulaire_id'
],
'conditions' => [
'formulaires_organisations.formulaire_id = Formulaire.id',
'formulaires_organisations.organisation_id' => $organisation_id
]
]);
$sqlOrganisationHasModelForFormulaire[] = $this->Formulaire->FormulaireModeleOrganisation->sql([
'alias' => 'formulaires_modeles_organisations',
'fields' => [
'formulaires_modeles_organisations.formulaire_id'
],
'conditions' => [
'formulaires_modeles_organisations.formulaire_id = Formulaire.id',
'formulaires_modeles_organisations.organisation_id' => $organisation_id
]
]);
}
$sqlALeDroitUtiliseOrganisation = $this->Formulaire->FormulaireOrganisation->sql([
'alias' => 'formulaires_organisations',
'fields' => [
'formulaires_organisations.formulaire_id'
],
'conditions' => [
'formulaires_organisations.formulaire_id = Formulaire.id',
'formulaires_organisations.organisation_id' => array_keys($mesOrganisations)
]
]);
// Soit il est déjà utilisé dans un des mes traitements (pour des formulaires non associés)
$sqlOrganisationAlreadyUsedFormulaire = $this->Fiche->sql([
'alias' => 'fiches',
'fields' => [
'DISTINCT fiches.form_id'
'fiches.form_id'
],
'conditions' => [
'fiches.form_id = Formulaire.id',
......@@ -182,6 +165,17 @@ class ModelesController extends AppController {
]
]);
$sqlFormulaireLieOrganisation = $this->Formulaire->FormulaireModeleOrganisation->sql([
'alias' => 'formulaires_modeles_organisations',
'fields' => [
'formulaires_modeles_organisations.formulaire_id'
],
'conditions' => [
'formulaires_modeles_organisations.formulaire_id = Formulaire.id',
'formulaires_modeles_organisations.organisation_id' => array_keys($mesOrganisations)
]
]);
$query = [
'fields' => [
'Formulaire.id',
......@@ -189,17 +183,13 @@ class ModelesController extends AppController {
],
'conditions' => [
'OR' => [
// Mon entité est associée au formulaire
'Formulaire.id IN ( '. implode(' UNION ', $sqlOrganisationIsAssociatedToFormulaire) .' )',
[
// Mon entité n'est pas associée au formulaire
'Formulaire.id NOT IN ( '. implode(' UNION ', $sqlOrganisationIsAssociatedToFormulaire) .' )',
// Mais le formulaire a déjà été utilisé dans mon entité
"Formulaire.id IN ( {$sqlOrganisationAlreadyUsedFormulaire} )",
]
// Le formulaire a le droit d'être utilisé dans mon organisation
"Formulaire.id IN ( {$sqlALeDroitUtiliseOrganisation} )",
// le formulaire a déjà été utilisé dans une fiche de mon organisation
"Formulaire.id IN ( {$sqlOrganisationAlreadyUsedFormulaire} )"
],
// Il n'existe pas encore de modèle pour ce formulaire dans mon entité
'Formulaire.id NOT IN ( '. implode(' INTERSECT ', $sqlOrganisationHasModelForFormulaire) .' )',
// le formulaire n'est pas encore utilisé dans mon organisation
"Formulaire.id NOT IN ( {$sqlFormulaireLieOrganisation} )"
],
'order' => [
'Formulaire.libelle ASC'
......@@ -230,8 +220,11 @@ class ModelesController extends AppController {
$this->Modele->join('FormulaireModeleOrganisation'),
$this->Modele->FormulaireModeleOrganisation->join('Organisation')
],
// 'conditions' => [
// 'Formulaire.archive' => false
// ],
'fields' => [
'DISTINCT Modele.id',
'Modele.id',
'Modele.name_modele',
'Modele.fichier',
'Formulaire.id',
......@@ -239,7 +232,14 @@ class ModelesController extends AppController {
],
'order' => [
'Formulaire.libelle ASC',
]
],
'group' => [
'Modele.id',
'Modele.name_modele',
'Modele.fichier',
'Formulaire.id',
'Formulaire.libelle',
],
];
if ($this->request->params['action'] === 'entite') {
......
......@@ -5,9 +5,10 @@ $body = '<div class="row top17">'
'addFormulaire_id' => [
'id' => 'addFormulaire_id',
'options' => $mesFormulaires,
'class' => 'usersDeroulant form-control',
'required' => true,
'empty' => true,
'data-placeholder' => __d('registre', 'registre.placeholderSelectionnerUser'),
'data-placeholder' => 'Sélectionnez un formulaire',
],
'addOrganisation_id' => [
'id' => 'addOrganisation_id',
......
......@@ -2,7 +2,21 @@
$this->Breadcrumbs->breadcrumbs([
$title => []
]);
?>
<!--Bouton de création d'un modele -->
<div class="row text-left">
<div class="col-md-12 text-left">
<button id="btnAddModeleToForm" type="button" class="btn btn-outline-primary" data-toggle="modal" data-target="#modalAddModele">
<span class="fa fa-plus fa-lg"></span>
<?php
echo __d('modele', 'modele.btnCreerModele');
?>
</button>
</div>
</div>
<?php
$pagination = null;
$this->Paginator->options([
......@@ -10,9 +24,9 @@ $this->Paginator->options([
]);
$pagination = $this->element('pagination');
echo $pagination;
if (!empty($modeles)) {
echo $pagination;
echo $this->element('Buttons/affecterEntite', [
'titleBtn' => __d('modele', 'modele.popupTitreAffecterModeleFormulaire')
]);
......@@ -145,6 +159,7 @@ if (!empty($modeles)) {
</tbody>
</table>
<?php
echo $pagination;
} else {
?>
<div class='text-center'>
......
Supports Markdown
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