Commit 2a26dd74 authored by Stéphane Bouvry's avatar Stéphane Bouvry
Browse files

Ajout d'un filtre pour les jalons dans la liste des activités

parent 72323005
Loading
Loading
Loading
Loading
+27 −10
Original line number Diff line number Diff line
@@ -1110,31 +1110,27 @@ class ProjectGrantController extends AbstractOscarController
                'ap' => "Impliquant la personne",
                'sp' => "N'impliquant pas la personne",
                'pm' => "Impliquant une de ces personnes",

                'ao' => "Impliquant l'organisation",
                'so' => "N'impliquant pas l'organisation",

                'as' => 'Ayant le statut',
                'ss' => 'N\'ayant pas le statut',

                'cnt' => "Pays (d'une organisation)",

                'af' => 'Ayant comme incidence financière',
                'sf' => 'N\'ayant pas comme incidence financière',

                'mp' => 'Montant prévu',

                'at' => 'est de type',
                'st' => 'n\'est pas de type',

                'add' => 'Date de début',
                'adf' => 'Date de fin',
                'adc' => 'Date de création',
                'adm' => 'Date de dernière mise à jour',
                'ads' => 'Date de signature',
                'adp' => 'Date d\'ouverture du PFI dans SIFAC',

                'pp' => 'Activités sans projet',

                // Ajout d'un filtre sur les jalons
                'aj' => 'Ayant le jalon'

            ];

            // Correspondance des champs de type date
@@ -1157,6 +1153,21 @@ class ProjectGrantController extends AbstractOscarController
                'dateOpened' => "Date d'ouverture du PFI dans SIFAC",
            ];

            $milestonesCriterias = [

            ];

            $jalonsFilters = [];
            $jalons = $this->getEntityManager()->getRepository(DateType::class)->findAll();
            /** @var DateType $jalon */
            foreach ($jalons as $jalon) {
                $jalonsFilters[] = [
                  'id' => $jalon->getId(),
                  'label' => $jalon->getLabel(),
                  'finishable' => $jalon->isFinishable()
                ];
            }

            // Trie
            $sortDirections = [
                'desc' => 'Décroissant',
@@ -1256,13 +1267,14 @@ class ProjectGrantController extends AbstractOscarController
                // Requêtes de base
                /** @var QueryBuilder $qb */
                $qb = $this->getEntityManager()->createQueryBuilder()
                    ->select('c, m1, p1, pr, m2, p2, d1, t1, orga1, orga2, pers1, pers2, dis')
                    ->select('c, m1, p1, pr, m2, p2, d1, t1, orga1, orga2, pers1, pers2, dis, ml')
                    ->from(Activity::class, 'c')
                    ->leftJoin('c.persons', 'm1')
                    ->leftJoin('m1.person', 'pers1')
                    ->leftJoin('c.disciplines', 'dis')
                    ->leftJoin('c.activityType', 't1')
                    ->leftJoin('c.organizations', 'p1')
                    ->leftJoin('c.milestones', 'ml')
                    ->leftJoin('p1.organization', 'orga1')
                    ->leftJoin('c.documents', 'd1')
                    ->leftJoin('c.project', 'pr')
@@ -1493,6 +1505,10 @@ class ProjectGrantController extends AbstractOscarController
                                $parameters['countries'] = $value1;
                            }
                            break;
                        case 'aj':
                            $filterIds = $this->getActivityService()->getActivityIdsByJalon($crit['val1']);
                            break;

                        case 'add' :
                        case 'adf' :
                        case 'adm' :
@@ -1600,7 +1616,6 @@ class ProjectGrantController extends AbstractOscarController
                $activities = new UnicaenDoctrinePaginator($qb, $page);
            }


            $view = new ViewModel([
                'projectview' => $projectview,
                'exportIds' => implode(',', $ids),
@@ -1610,6 +1625,7 @@ class ProjectGrantController extends AbstractOscarController
                'countries' => $this->getOrganizationService()->getCountriesList(),
                'fieldsCSV' => $this->getActivityService()->getFieldsCSV(),
                'persons' => $persons,
                'filterJalons' => $jalonsFilters,
                'activities' => $activities,
                'search' => $search,
                'filterPersons' => $filterPersons,
@@ -1832,6 +1848,7 @@ class ProjectGrantController extends AbstractOscarController
            'contracts' => $paginator,
            'search' => $search,
            'filterStatus' => $filterStatus,
            'filterJalons' => $jalons,
            'filterType' => $filterType,
            'filterYear' => $filterYears,
            'sorts' => $sortCriteria,
+11 −0
Original line number Diff line number Diff line
@@ -63,6 +63,17 @@ class ProjectGrantService implements ServiceLocatorAwareInterface, EntityManager
    }


    public function getActivityIdsByJalon( $jalonTypeId ){
        $q = $this->getActivityRepository()->createQueryBuilder('c')
            ->select('c.id')
            ->innerJoin('c.milestones', 'm')
            ->where('m.type = :jalonId')
            ->setParameter('jalonId', $jalonTypeId);

         $activities = $q->getQuery()->getResult();
        return array_map('current', $activities);
    }

    /**
     * @param $ids
     * @param int $page
+30 −0
Original line number Diff line number Diff line
@@ -138,6 +138,8 @@
        </article>
    </script>



    <?php /*
        ---------------------------------------------
        TEMPLATE des critères des types de convention
@@ -183,6 +185,30 @@
        </article>
    </script>

    <script type="text/x-handlebars" id="milestones-criteria-tpl">
        <article class="criteria criteria-{{type}} card">
            <div class="icon-calendar"></div>
            <small>{{typeLabel}}</small>
            {{#if error}}<strong class="text-danger"><i class="icon-attention-1"></i> {{error}}</strong>{{/if}}
            <select class="select2 form-control val1 changer types" id="filter_jalon">
                <?php foreach( $filterJalons as $jalon ): ?>
                    <option value="<?= $jalon['id'] ?>"><?= $jalon['label'] ?></option>
                <?php endforeach; ?>
            </select>
            <input type="hidden" name="criteria[]" class="criteria" value="{{criteria}}"/>
            <!--
            <strong>Annnée</strong>
            <small>Optionnel</small>
            <input type="text" value="{{val2}}"class=" changer val2">
            -->
            <nav>
                <a href="#" class="delete">
                    <i class="icon-cancel-outline"></i>
                </a>
            </nav>
        </article>
    </script>

    <script type="text/x-handlebars" id="static-criteria-tpl">
        <article class="criteria criteria-static card">
            <div class="icon-tag"></div>
@@ -634,6 +660,9 @@
                    else if(datas.type == 'pm' ) {
                        dom = $(tplPersons(datas));
                    }
                    else if(datas.type == 'aj' ){
                        dom = $(tplMilestone(datas));
                    }
                    else {
                        console.error("le type", datas.type, "n'est pas pris en charge", datas);
                        return;
@@ -760,6 +789,7 @@
                    tplStatic = Handlebars.compile($('#static-criteria-tpl').html()),
                    tplNumber = Handlebars.compile($('#number-criteria-tpl').html()),
                    tplPersons = Handlebars.compile($('#persons-criteria-tpl').html()),
                    tplMilestone = Handlebars.compile($('#milestones-criteria-tpl').html()),
                    id = 1;

                //