Commit 472e2a1a authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Scission controller

parent 9199ce44
Loading
Loading
Loading
Loading
+5 −55
Changes for front/Mission/Suivi.vue: 5 added lines, 55 removed lines.
Original line number Diff line number Diff line
<template>
    <u-calendar :date="date" @changeDate="changeDate" @addEvent="addVolumeHoraire" :can-add-event="true" :events="suivi"/>
    <u-calendar :date="date" @changeDate="changeDate" @addEvent="ajoutVolumeHoraire" :can-add-event="true" :events="suivi"/>
</template>

<script>
@@ -23,16 +23,6 @@ export default {
        return {
            date: new Date(),
            suivi: [],
            // component: markRaw(SuiviEvent),
            // color: 'yellow',
            // date: new Date(2023, 1, 5),
            // missionId: null,
            // horaireDebut: null,
            // horaireFin: null,
            // heures: null,
            // nocturne: false,
            // formation: false,
            // description: '5',
        };
    },
    methods: {
@@ -41,58 +31,18 @@ export default {
            this.date = dateObj;
        },

        toto()
        {
            console.log('prout');
        },

        addVolumeHoraire(dateObj, event)
        ajoutVolumeHoraire(dateObj, event)
        {
            const urlParams = {
                intervenant: this.intervenant,
                date: dateObj.toISOString().slice(0, 10) // date au format Y-m-d
            };
            event.currentTarget.dataset.url = unicaenVue.url('intervenant/:intervenant/missions-suivi-ajout/:date', urlParams);
            modAjax(event.currentTarget, (widget) => {
                this.refresh();
            });
        },

        editVolumeHoraire(calEvent, event)
        {
            const urlParams = {
                intervenant: this.intervenant,
                id: calEvent.id
            };
            event.currentTarget.dataset.url = unicaenVue.url('intervenant/:intervenant/missions-suivi-modification/:id', urlParams);
            event.currentTarget.dataset.url = unicaenVue.url('mission/suivi/ajout/:intervenant/:date', urlParams);
            modAjax(event.currentTarget, (widget) => {
                this.refresh();
            });
        },

        saveVolumeHoraire(event)
        {
            console.log('submit!!!');
            event.preventDefault();

            this.modal.hide();
            this.vhr.date = new Date(this.vhr.date);
            if (this.vhrIndex === undefined) {
                this.realise.push(this.vhr);
            } else {
                this.realise[this.vhrIndex] = this.vhr;
            }

            // reste le passage et le retour du serveur...
        },

        deleteVolumeHoraire(calEvent, event)
        {
            const index = this.realise.indexOf(calEvent);
            this.realise.splice(index, 1);
            console.log(index);
            console.log(this.realise);
        },
        refresh()
        {
            const colors = [
@@ -108,9 +58,8 @@ export default {
            let colorIndex = 0;
            let missionsColors = [];

            //  SuiviEvent.data.suivi = this;
            unicaenVue.axios.get(
                unicaenVue.url("intervenant/:intervenant/missions-suivi-data", {intervenant: this.intervenant})
                unicaenVue.url("mission/suivi/data/:intervenant", {intervenant: this.intervenant})
            ).then(response => {
                let newSuivi = [];
                for (let i in response.data) {
@@ -123,6 +72,7 @@ export default {
                    missionSuivi.color = missionsColors[missionSuivi.mission.id];
                    missionSuivi.component = markRaw(SuiviEvent);
                    missionSuivi.date = new Date(missionSuivi.date);
                    missionSuivi.intervenant = this.intervenant;
                    newSuivi.push(missionSuivi);
                }
                this.suivi = newSuivi;
+67 −11
Changes for front/Mission/SuiviEvent.vue: 67 added lines, 11 removed lines.
Original line number Diff line number Diff line
<template>
    <div class="event-content">
        <p>{{ event.mission.libelleCourt }}</p>
        <p>
            de {{ event.heureDebut }} à {{ event.heureFin }}, {{ event.heures }} heures
        <p class="mission">{{ event.mission.libelleCourt }}</p>
        <p class="horaires">
            de {{ heureDebut }} à {{ heureFin }}, soient {{ heures }} heures
            <b-badge v-if="event.nocturne">Nocturne</b-badge>
            <b-badge v-if="event.formation">En formation</b-badge>
        </p>
        <p v-if="event.description">{{ event.description }}</p>
        <p class="description" v-if="event.description">{{ event.description }}</p>
    </div>
    <div class="event-actions">
        <div class="btn-group btn-group-sm">
            <button class="btn btn-light" @click="editEvent">
            <button class="btn btn-light" @click="modifier" title="Modifier le suivi">
                <u-icon name="pen-to-square"/>
            </button>
            <button class="btn btn-light" @click="deleteEvent">
            <button class="btn btn-light" @click="valider" title="Valider le suivi">
                <u-icon name="check" class="text-success"/>
            </button>
            <button class="btn btn-light" @click="devalider" title="Dévalider le suivi"
                    data-content="Voulez-vous vraiment dévalider ce suivi ?">
                <u-icon name="xmark" class="text-danger"/>
            </button>
            <button class="btn btn-light" @click="supprimer" title="Supprimer le suivi"
                    data-content="Voulez-vous vraiment supprimer ce suivi ?">
                <u-icon name="trash-can" class="text-danger"/>
            </button>
        </div>
@@ -26,21 +34,56 @@ export default {
    props: {
        event: {type: Object, required: true},
    },
    data(){
    data()
    {
        return {
            suivi: this.$parent.$parent,
        };
    },
    computed: {
        heureDebut()
        {
            return this.event.heureDebut.toString().replace(':', 'h');
        },
        heureFin()
        {
            return this.event.heureFin.toString().replace(':', 'h');
        },
        heures()
        {
            return Util.floatToString(this.event.heures);
        },
    },
    methods: {
        modifier(event)
        {
            const urlParams = {
                intervenant: this.event.intervenant,
                id: this.event.id
            };
            event.currentTarget.dataset.url = unicaenVue.url('mission/suivi/modification/:id', urlParams);
            modAjax(event.currentTarget, (widget) => {
                this.suivi.refresh();
            });
        },

        supprimer(event)
        {
            popConfirm(event.currentTarget, (response) => {
                this.suivi.refresh();
            });
        },

        editEvent(event)
        valider(event)
        {
            this.suivi.editVolumeHoraire(this.event, event);
            this.suivi.refresh();
        },

        deleteEvent(event)
        devalider(event)
        {
            this.suivi.deleteVolumeHoraire(this.event, event);
            popConfirm(event.currentTarget, (response) => {
                this.suivi.refresh();
            });
        },

    },
@@ -53,6 +96,19 @@ export default {
    flex-grow: 1;
}

.event-content p {
    margin-bottom: .2rem;
}

.event-content p.mission {
    font-weight: bold;
}

.event-content p.horaires {
    font-style: italic;
    font-weight: lighter;
}

.event-actions {
    align-self: flex-start;
}
+2 −160
Changes for module/Mission/config/module.config.php: 2 added lines, 160 removed lines.
Original line number Diff line number Diff line
@@ -2,134 +2,13 @@

namespace Mission;

use Application\Entity\Db\WfEtape;
use Application\Provider\Privilege\Privileges;
use Mission\Controller\MissionController;
use Mission\Controller\MissionTypeController;
use Mission\Service\MissionTypeService;
use Mission\Service\MissionTypeServiceFactory;
use UnicaenPrivilege\Assertion\AssertionFactory;
use UnicaenPrivilege\Guard\PrivilegeController;


return [
    'routes' => [
        'intervenant'   => [
            'child_routes' => [
                'missions'       => [
                    'route'      => '/:intervenant/missions',
                    'controller' => MissionController::class,
                    'action'     => 'index',
                    'privileges' => Privileges::MISSION_VISUALISATION,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'missions-suivi' => [
                    'route'      => '/:intervenant/missions-suivi',
                    'controller' => MissionController::class,
                    'action'     => 'suivi',
                    'privileges' => Privileges::MISSION_EDITION_REALISE,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'missions-suivi-data' => [
                    'route'      => '/:intervenant/missions-suivi-data',
                    'controller' => MissionController::class,
                    'action'     => 'suivi-data',
                    'privileges' => Privileges::MISSION_VISUALISATION,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'missions-suivi-ajout' => [
                    'route'      => '/:intervenant/missions-suivi-ajout[/:date]',
                    'controller' => MissionController::class,
                    'action'     => 'suivi-ajout',
                    'privileges' => Privileges::MISSION_EDITION_REALISE,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'missions-suivi-modification' => [
                    'route'      => '/:intervenant/missions-suivi-modification/:volumeHoraireMission',
                    'controller' => MissionController::class,
                    'action'     => 'suivi-modification',
                    'privileges' => Privileges::MISSION_EDITION_REALISE,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
            ],
        ],
        'mission'       => [
            'route'         => '/mission',
            'may_terminate' => false,
            'child_routes'  => [
                'liste'          => [
                    'route'      => '/liste/:intervenant',
                    'controller' => MissionController::class,
                    'action'     => 'liste',
                    'privileges' => Privileges::MISSION_VISUALISATION,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'get'            => [
                    'route'      => '/get/:mission',
                    'controller' => MissionController::class,
                    'action'     => 'get',
                    'privileges' => Privileges::MISSION_VISUALISATION,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'ajout'          => [
                    'route'      => '/ajout/:intervenant',
                    'controller' => MissionController::class,
                    'action'     => 'ajout',
                    'privileges' => Privileges::MISSION_EDITION,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'saisie'         => [
                    'route'      => '/saisie/:mission',
                    'controller' => MissionController::class,
                    'action'     => 'saisie',
                    'privileges' => Privileges::MISSION_EDITION,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'supprimer'      => [
                    'route'      => '/supprimer/:mission',
                    'controller' => MissionController::class,
                    'action'     => 'supprimer',
                    'privileges' => Privileges::MISSION_EDITION,
                ],
                'valider'        => [
                    'route'      => '/valider/:mission',
                    'controller' => MissionController::class,
                    'action'     => 'valider',
                    'privileges' => Privileges::MISSION_VALIDATION,
                ],
                'devalider'      => [
                    'route'      => '/devalider/:mission',
                    'controller' => MissionController::class,
                    'action'     => 'devalider',
                    'privileges' => Privileges::MISSION_DEVALIDATION,
                ],
                'volume-horaire' => [
                    'route'         => '/volume-horaire',
                    'controller'    => MissionController::class,
                    'may_terminate' => false,
                    'child_routes'  => [
                        'supprimer' => [
                            'route'      => '/supprimer/:volumeHoraireMission',
                            'controller' => MissionController::class,
                            'action'     => 'volume-horaire-supprimer',
                            'privileges' => Privileges::MISSION_EDITION,
                        ],
                        'valider'   => [
                            'route'      => '/valider/:volumeHoraireMission',
                            'controller' => MissionController::class,
                            'action'     => 'volume-horaire-valider',
                            'privileges' => Privileges::MISSION_VALIDATION,
                        ],
                        'devalider' => [
                            'route'      => '/devalider/:volumeHoraireMission',
                            'controller' => MissionController::class,
                            'action'     => 'volume-horaire-devalider',
                            'privileges' => Privileges::MISSION_DEVALIDATION,
                        ],
                    ],
                ],
            ],
        ],
        'missions-type' => [
            'route'         => '/missions-type',
            'controller'    => MissionTypeController::class,
@@ -155,34 +34,6 @@ return [


    'navigation' => [
        'intervenant'    => [
            'pages' => [
                'missions'       => [
                    'label'               => "Missions",
                    'title'               => "Missions",
                    'route'               => 'intervenant/missions',
                    'paramsInject'        => [
                        'intervenant',
                    ],
                    'workflow-etape-code' => WfEtape::CODE_MISSION_SAISIE,
                    'withtarget'          => true,
                    'visible'             => Assertion\MissionAssertion::class,
                    'order'               => 8,
                ],
                'missions-suivi' => [
                    'label'               => "Suivi de missions",
                    'title'               => "Suivi de missions",
                    'route'               => 'intervenant/missions-suivi',
                    'paramsInject'        => [
                        'intervenant',
                    ],
                    'workflow-etape-code' => WfEtape::CODE_MISSION_SAISIE_REALISE,
                    'withtarget'          => true,
                    'visible'             => Assertion\MissionAssertion::class,
                    'order'               => 10,
                ],
            ],
        ],
        'administration' => [
            'pages' => [
                'intervenants' => [
@@ -203,21 +54,12 @@ return [
    ],

    'controllers' => [
        MissionController::class     => Controller\MissionControllerFactory::class,
        MissionTypeController::class => Controller\MissionTypeControllerFactory::class,
        Controller\MissionTypeController::class => Controller\MissionTypeControllerFactory::class,
    ],

    'services' => [
        MissionTypeService::class         => MissionTypeServiceFactory::class,
        Service\MissionTypeService::class         => Service\MissionTypeServiceFactory::class,
        Assertion\MissionAssertion::class => AssertionFactory::class,
        Service\MissionService::class     => Service\MissionServiceFactory::class,
    ],

    'forms' => [
        Form\MissionForm::class => Form\MissionFormFactory::class,
        Form\MissionSuiviForm::class => Form\MissionSuiviFormFactory::class,
    ],

    'view_helpers' => [
    ],
];
 No newline at end of file
+129 −0
Changes for module/Mission/config/saisie.config.php: 129 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Mission;

use Application\Entity\Db\WfEtape;
use Application\Provider\Privilege\Privileges;
use UnicaenPrivilege\Assertion\AssertionFactory;
use UnicaenPrivilege\Guard\PrivilegeController;


return [
    'routes' => [
        'intervenant' => [
            'child_routes' => [
                'missions' => [
                    'route'      => '/:intervenant/missions',
                    'controller' => Controller\SaisieController::class,
                    'action'     => 'index',
                    'privileges' => Privileges::MISSION_VISUALISATION,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
            ],
        ],
        'mission'     => [
            'route'         => '/mission',
            'may_terminate' => false,
            'child_routes'  => [
                'liste'          => [
                    'route'      => '/liste/:intervenant',
                    'controller' => Controller\SaisieController::class,
                    'action'     => 'liste',
                    'privileges' => Privileges::MISSION_VISUALISATION,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'get'            => [
                    'route'      => '/get/:mission',
                    'controller' => Controller\SaisieController::class,
                    'action'     => 'get',
                    'privileges' => Privileges::MISSION_VISUALISATION,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'ajout'          => [
                    'route'      => '/ajout/:intervenant',
                    'controller' => Controller\SaisieController::class,
                    'action'     => 'ajout',
                    'privileges' => Privileges::MISSION_EDITION,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'saisie'         => [
                    'route'      => '/saisie/:mission',
                    'controller' => Controller\SaisieController::class,
                    'action'     => 'saisie',
                    'privileges' => Privileges::MISSION_EDITION,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
                'supprimer'      => [
                    'route'      => '/supprimer/:mission',
                    'controller' => Controller\SaisieController::class,
                    'action'     => 'supprimer',
                    'privileges' => Privileges::MISSION_EDITION,
                ],
                'valider'        => [
                    'route'      => '/valider/:mission',
                    'controller' => Controller\SaisieController::class,
                    'action'     => 'valider',
                    'privileges' => Privileges::MISSION_VALIDATION,
                ],
                'devalider'      => [
                    'route'      => '/devalider/:mission',
                    'controller' => Controller\SaisieController::class,
                    'action'     => 'devalider',
                    'privileges' => Privileges::MISSION_DEVALIDATION,
                ],
                'volume-horaire' => [
                    'route'         => '/volume-horaire',
                    'controller'    => Controller\SaisieController::class,
                    'may_terminate' => false,
                    'child_routes'  => [
                        'supprimer' => [
                            'route'      => '/supprimer/:volumeHoraireMission',
                            'controller' => Controller\SaisieController::class,
                            'action'     => 'volume-horaire-supprimer',
                            'privileges' => Privileges::MISSION_EDITION,
                        ],
                        'valider'   => [
                            'route'      => '/valider/:volumeHoraireMission',
                            'controller' => Controller\SaisieController::class,
                            'action'     => 'volume-horaire-valider',
                            'privileges' => Privileges::MISSION_VALIDATION,
                        ],
                        'devalider' => [
                            'route'      => '/devalider/:volumeHoraireMission',
                            'controller' => Controller\SaisieController::class,
                            'action'     => 'volume-horaire-devalider',
                            'privileges' => Privileges::MISSION_DEVALIDATION,
                        ],
                    ],
                ],
            ],
        ],
    ],

    'navigation' => [
        'intervenant' => [
            'pages' => [
                'missions' => [
                    'label'               => "Missions",
                    'title'               => "Missions",
                    'route'               => 'intervenant/missions',
                    'paramsInject'        => [
                        'intervenant',
                    ],
                    'workflow-etape-code' => WfEtape::CODE_MISSION_SAISIE,
                    'withtarget'          => true,
                    'visible'             => Assertion\MissionAssertion::class,
                    'order'               => 8,
                ],
            ],
        ],
    ],

    'controllers' => [
        Controller\SaisieController::class => Controller\SaisieControllerFactory::class,
    ],

    'forms' => [
        Form\MissionForm::class => Form\MissionFormFactory::class,
    ],
];
 No newline at end of file
+86 −0
Changes for module/Mission/config/suivi.config.php: 86 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Mission;

use Application\Entity\Db\WfEtape;
use Application\Provider\Privilege\Privileges;
use UnicaenPrivilege\Assertion\AssertionFactory;
use UnicaenPrivilege\Guard\PrivilegeController;


return [
    'routes' => [
        'intervenant' => [
            'child_routes' => [
                'missions-suivi' => [
                    'route'      => '/:intervenant/missions-suivi',
                    'controller' => Controller\SuiviController::class,
                    'action'     => 'index',
                    'privileges' => Privileges::MISSION_EDITION_REALISE,
                    //'assertion'  => Assertion\MissionAssertion::class,
                ],
            ],
        ],
        'mission'     => [
            'child_routes' => [
                'suivi' => [
                    'route'        => '/suivi',
                    'child_routes' => [
                        'data' => [
                            'route'      => '/data/:intervenant',
                            'controller' => Controller\SuiviController::class,
                            'action'     => 'data',
                            'privileges' => Privileges::MISSION_VISUALISATION,
                            //'assertion'  => Assertion\MissionAssertion::class,
                        ],
                        'ajout' => [
                            'route'      => '/ajout/:intervenant/:date',
                            'controller' => Controller\SuiviController::class,
                            'action'     => 'ajout',
                            'privileges' => Privileges::MISSION_EDITION_REALISE,
                            //'assertion'  => Assertion\MissionAssertion::class,
                        ],
                        'modification' => [
                            'route'      => '/modification/:volumeHoraireMission',
                            'controller' => Controller\SuiviController::class,
                            'action'     => 'modification',
                            'privileges' => Privileges::MISSION_EDITION_REALISE,
                            //'assertion'  => Assertion\MissionAssertion::class,
                        ],
                    ],
                ],
            ],
        ],
    ],


    'navigation' => [
        'intervenant' => [
            'pages' => [
                'missions-suivi' => [
                    'label'               => "Suivi de missions",
                    'title'               => "Suivi de missions",
                    'route'               => 'intervenant/missions-suivi',
                    'paramsInject'        => [
                        'intervenant',
                    ],
                    'workflow-etape-code' => WfEtape::CODE_MISSION_SAISIE_REALISE,
                    'withtarget'          => true,
                    'visible'             => Assertion\MissionAssertion::class,
                    'order'               => 10,
                ],
            ],
        ],
    ],

    'controllers' => [
        Controller\SuiviController::class => Controller\SuiviControllerFactory::class,
    ],

    'forms' => [
        Form\MissionSuiviForm::class => Form\MissionSuiviFormFactory::class,
    ],

    'view_helpers' => [
    ],
];
 No newline at end of file
Loading