Commit 514ddde5 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

- écran "Mes jalons" contenant la liste des jalons de la personne connectée,...

 - écran "Mes jalons" contenant la liste des jalons de la personne connectée, n'affiche que les jalons des activités où est référencée la personne ainsi que les jalons liès à la structure de cette personne
parent 0a1a4b1d
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -29,8 +29,10 @@
    "Liste des projets": "Liste des projets",
    "Liste des versements": "Liste des versements",
    "Maintenance": "Maintenance",
    "Membre de cette activit\u00e9": "Membre de cette activit\u00e9",
    "Membres": "Membres",
    "Mes activit\u00e9s": "Mes activit\u00e9s",
    "Mes jalons": "Mes jalons",
    "Mes projets": "Mes projets",
    "Mes projets\/activit\u00e9s": "Mes projets\/activit\u00e9s",
    "Mes structures": "Mes structures",
+26 −6
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ use Laminas\Http\Response;
use Oscar\Entity\Activity;
use Oscar\Entity\ActivityDate;
use Oscar\Entity\LogActivity;
use Oscar\Exception\OscarException;
use Oscar\Form\ActivityDateForm;
use Oscar\Formatter\json\MilestoneToJsonFormatter;
use Oscar\Provider\Privileges;
@@ -515,20 +516,35 @@ class ActivityDateController extends AbstractOscarController implements UseServi
            $currentPerson = $this->getOscarUserContextService()->getCurrentPerson();
            if( $currentPerson ){

                // Récupération des IDS
                // Récupération des IDS pour les activités "Directes"
                $idsActivityDirect = $this->getProjectGrantService()->getActivityRepository()
                    ->getIdsForPersons([$currentPerson->getId()]);

                // Récupération des IDS pour les activités de mes structures
                $organizations = $this->getOscarUserContextService()
                    ->getOrganizationsWithPrivilege(Privileges::ACTIVITY_MILESTONE_SHOW);
                $idsOrganizations = [];

                $organizationsNamed = [];
                $idsInOrganizations = [];
                foreach ($organizations as $organization){
                    $idsOrganizations[] = $organization->getId();
                    $organizationsNamedItem = [
                        'id' => $organization->getId(),
                        'code' => $organization->getCode(),
                        'shortname' => $organization->getShortName(),
                        'fullname' => $organization->getFullName(),
                        'activitiesIds' => [],
                    ];
                    $milestonesIdsOrganizations = $this->getProjectGrantService()->getActivityRepository()
                        ->getIdsForOrganizations([$organization->getId()]);

                    $organizationsNamedItem['activitiesIds'] = $milestonesIdsOrganizations;
                    $organizationsNamed[] = $organizationsNamedItem;
                    $idsInOrganizations = array_merge($idsInOrganizations, $milestonesIdsOrganizations);
                }

                $idsActivityInOrganization = $this->getProjectGrantService()->getActivityRepository()
                    ->getIdsForOrganizations($idsOrganizations);

                $idsActivities = array_merge($idsActivityDirect, $idsActivityInOrganization);

                $idsActivities = array_merge($idsActivityDirect, $idsInOrganizations);

                $milestones = $this->getProjectGrantService()->getActivityDateRepository()
                    ->getMilestonesByIdsActivity($idsActivities);
@@ -540,7 +556,11 @@ class ActivityDateController extends AbstractOscarController implements UseServi
                $formatter = new MilestoneToJsonFormatter($types);
                $formatter->setUrlPlugin($this->url());
                $out = $formatter->formatAllWithTypes($milestones, true);
                $out['organizationsDetails'] = $organizationsNamed;
                $out['direct'] = $idsActivityDirect;
                return new JsonModel($out);
            } else {
                throw new OscarException("Votre compte n'est associé à aucune personne");
            }
        }

+4 −1
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ class MilestoneToJsonFormatter
            'finished' => $milestone->getFinished(),
            'validable' => $milestone->getType()->isFinishable(),
            'finishable' => $milestone->isFinishable(),
            'finishedBy' => $milestone->getFinishedBy(),
            'late' => $milestone->isLate($now),
            //'hasProgression' => $data->getProgressInfo()
        ];
@@ -69,6 +70,7 @@ class MilestoneToJsonFormatter
                "label" => $milestone->getActivity()->getLabel(),
                "acronym" => $milestone->getActivity()->getAcronym(),
                "num" => $milestone->getActivity()->getOscarNum(),
                "context" => null
            ];
            if( $this->urlPlugin ){
                $data['activity']['url'] = $this->urlPlugin->fromRoute('contract/show', ['id' => $milestone->getActivity()->getId()]);
@@ -110,7 +112,8 @@ class MilestoneToJsonFormatter
    {
        return [
            'types' => $this->getTypesArray(),
            'milestones' => $this->formatAll($milestones, $withActivity)
            'milestones' => $this->formatAll($milestones, $withActivity),
            'progressions' => ActivityDate::progressLabels()
        ];
    }

+7 −2
Original line number Diff line number Diff line
@@ -131,8 +131,13 @@ echo getenv('APPLICATION_ENV') ?: 'development' ?>">
                                        <?= $this->oscarText('Mes structures') ?>
                                    </a>
                                </li>
                            <?php
                            endif; ?>
                            <?php endif; ?>
                            <li>
                                <a href="<?= $this->url('milestones/mine') ?>">
                                    <i class="icon-calendar"></i>
                                    <?= $this->oscarText('Mes jalons') ?>
                                </a>
                            </li>
                            <?php if ($this->grant()->hasPersonnelAccess()): ?>
                                <li>
                                    <a href="<?= $this->url('person/personnel') ?>">
+2 −1
Original line number Diff line number Diff line
import { createApp } from "vue";
import momentFilter from "./utils/MomentFilter.js";
import MilestonesUI from "./views/MilestonesUI.vue";

import {oscarText} from "./utils/OscarText.js";
let id = '#milestones';

// Récupération des données dans le DOM
@@ -12,6 +12,7 @@ const app = createApp(MilestonesUI, {
});

app.config.globalProperties.$filters = {
    oscarText,
    timeAgo(date){ return momentFilter.timeAgo(date); },
    date(date){ return momentFilter.date(date); },
    dateFull(date){ return momentFilter.dateFull(date); }
Loading