Commit fb395a10 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Export des projets en cours

parent 3a4dc2bb
Loading
Loading
Loading
Loading
Loading
+180 −69
Original line number Diff line number Diff line
<?php

use Oscar\Service\AccessResolverService;
use Oscar\View\Helpers\DateRenderer;
use Oscar\View\Helpers\UnicaenDoctrinePaginatorHelper;
@@ -18,7 +19,8 @@ return array(
            UnicaenAuth\Guard\PrivilegeController::class => [
                ////////////////////////////////////////////////////////////////////////
                // PUBLIC
                [ 'controller' =>  'Public',
                [
                    'controller' => 'Public',
                    'action' => ['index',],
                    'roles' => [],
                ],
@@ -29,17 +31,20 @@ return array(
                    'roles' => []
                ],

                [ 'controller' =>  'Public',
                [
                    'controller' => 'Public',
                    'action' => ['documentation', 'parameters', 'gitlog'],
                    'roles' => ['user'],
                ],

                [ 'controller' =>  'Notification',
                [
                    'controller' => 'Notification',
                    'action' => ['indexPerson', 'index', 'test', 'notifyPerson', 'history'],
                    'roles' => ['user'],
                ],

                [ 'controller' =>  'Administration',
                [
                    'controller' => 'Administration',
                    'action' => [
                        'access',
                        "accessAPI",
@@ -83,7 +88,8 @@ return array(
                    'roles' => ['user']
                ],

                [ 'controller' =>  'Connector',
                [
                    'controller' => 'Connector',
                    'action' => ['person', 'persons', 'organization', "organizations"],
                    'roles' => ['user']
                ],
@@ -91,24 +97,29 @@ return array(
                ////////////////////////////////////////////////////////////////
                // PROJET
                ////////////////////////////////////////////////////////////////
                [   'controller' =>   'Project',
                    'action' => ['show', 'new', 'edit', 'search', 'makeProject', 'persons', 'organizations'],
                [
                    'controller' => 'Project',
                    'action' => ['edit', 'export', 'makeProject', 'organizations', 'persons', 'new', 'search', 'show'],
                    'roles' => ['user'],
                ],
                [   'controller' =>   'Project',
                [
                    'controller' => 'Project',
                    'action' => ['currentUserProjects', 'currentUserStructureProjects'],
                    'privileges' => \Oscar\Provider\Privileges::PROJECT_DASHBOARD,
                    'roles' => ['user'],
                ],
                [   'controller' =>   'Project',
                [
                    'controller' => 'Project',
                    'action' => ['index', 'rebuildIndex', 'simplifyPartners', 'simplifyMembers', 'fusion'],
                    'privileges' => \Oscar\Provider\Privileges::PROJECT_INDEX
                ],
                [   'controller' =>   'Project',
                [
                    'controller' => 'Project',
                    'action' => ['addActivities'],
                    'privileges' => \Oscar\Provider\Privileges::ACTIVITY_CHANGE_PROJECT
                ],
                ['controller' => 'Project',
                [
                    'controller' => 'Project',
                    'action' => ['delete', 'empty'],
                    'privileges' => \Oscar\Provider\Privileges::MAINTENANCE_MENU_ADMIN
                ],
@@ -116,49 +127,88 @@ return array(
                ////////////////////////////////////////////////////////////////
                // ACTIVITÉS
                ////////////////////////////////////////////////////////////////
                [   'controller' =>   'Activity',
                    'action' => ['show', 'show2', 'edit', 'new', 'duplicate','persons', 'organizations', 'makeProject',
                        'delete', 'visualization', 'documentsJson', 'activitiesOrganizations', 'changeProject', 'jsonApi',
                        'notifications', 'generateNotifications', 'generatedDocument', 'pcru', 'requestFor', 'adminDemande', 'api', 'gant', 'estimatedSpent','estimatedSpentExport', 'spentList', 'newInStructure', 'spentSynthesisActivity', 'pcru', 'pcruInfos', "pcruList", "timesheet"],
                [
                    'controller' => 'Activity',
                    'action' => [
                        'show',
                        'show2',
                        'edit',
                        'new',
                        'duplicate',
                        'persons',
                        'organizations',
                        'makeProject',
                        'delete',
                        'visualization',
                        'documentsJson',
                        'activitiesOrganizations',
                        'changeProject',
                        'jsonApi',
                        'notifications',
                        'generateNotifications',
                        'generatedDocument',
                        'pcru',
                        'requestFor',
                        'adminDemande',
                        'api',
                        'gant',
                        'estimatedSpent',
                        'estimatedSpentExport',
                        'spentList',
                        'newInStructure',
                        'spentSynthesisActivity',
                        'pcru',
                        'pcruInfos',
                        "pcruList",
                        "timesheet"
                    ],

                    'roles' => ['user'],
                ],
                [ 'controller' =>   'Activity',
                [
                    'controller' => 'Activity',
                    'action' => ['advancedSearch', 'exportJSON', 'almostDone', 'almostStart'],
                    'privileges' => \Oscar\Provider\Privileges::ACTIVITY_INDEX
                ],
                [ 'controller' =>   'Activity',
                [
                    'controller' => 'Activity',
                    'action' => ['orphans'],
                    'privileges' => \Oscar\Provider\Privileges::ACTIVITY_CHANGE_PROJECT
                ],
                [ 'controller' =>   'Activity',
                [
                    'controller' => 'Activity',
                    'action' => ['debug'],
                    'roles' => ['Administrateur']
                ],

                // DEPENSES
                // --- VERSEMENTS
                [ 'controller' =>   'Depense',
                [
                    'controller' => 'Depense',
                    'action' => ['activity', 'manageSpendTypeGroup', 'activityApi', 'compteAffectation'],
                    'roles' => ['user'],
                ],

                // --- VERSEMENTS
                [ 'controller' =>   'ActivityPayment',
                [
                    'controller' => 'ActivityPayment',
                    'action' => ['index', 'indexRest', 'rest'],
                    'roles' => ['user'],
                ],
                [ 'controller' =>   'ActivityPayment',
                [
                    'controller' => 'ActivityPayment',
                    'action' => ['change', 'new', 'income', 'late', 'difference'],
                    'privileges' => \Oscar\Provider\Privileges::ACTIVITY_PAYMENT_MANAGE
                ],

                // --- DATES CLEFS
                [ 'controller' =>   'ActivityDate',
                [
                    'controller' => 'ActivityDate',
                    'action' => ['index', 'activity'],
                    'roles' => ['user'],
                ],
                [ 'controller' =>   'ActivityDate',
                [
                    'controller' => 'ActivityDate',
                    'action' => ['change', 'new'],
                    'privileges' => \Oscar\Provider\Privileges::ACTIVITY_MILESTONE_MANAGE
                ],
@@ -177,49 +227,73 @@ return array(
                ],

                // --- Type d'activités - { controller: ActivityType, action: [new, delete, edit, index, move, merge], roles: [user] }
                ['controller' => 'ActivityType',
                [
                    'controller' => 'ActivityType',
                    'action' => ['new', 'delete', 'edit', 'index', 'move', 'merge'],
                    'privileges' => \Oscar\Provider\Privileges::MAINTENANCE_MENU_ADMIN,
                ],

                // ---   - { controller: ActivityDate, action: [index, change, new], roles: [user] }
                ['controller' => 'DateType',
                [
                    'controller' => 'DateType',
                    'action' => ['index', 'change', 'new', 'edit', 'delete'],
                    'privileges' => \Oscar\Provider\Privileges::MAINTENANCE_MILESTONETYPE_MANAGE,
                ],

                // DOCUMENTS
                ['controller' => 'ContractDocument', // --- Upload
                [
                    'controller' => 'ContractDocument', // --- Upload
                    'action' => ['upload', 'delete', 'changeType', 'index', 'show', 'download'],
                    'roles' => ['user']
                ],

                // EXPORT
                ['controller' => 'Activity',
                [
                    'controller' => 'Activity',
                    'action' => ['csv', 'csvPayments'],
                    'roles' => ['user'],
                ],

                // TIMESHEET
                ['controller' => 'Timesheet',
                [
                    'controller' => 'Timesheet',
                    'action' => [
                        'indexPersonActivity', 'sauvegarde', 'declaration', 'validations', 'resume',
                        "declaration2", "indexActivity", "validateTimesheet",
                        'excel', 'organizationLeader',
                        'declarant', 'declarantAPI', 'validationActivity',
                        'validationActivity2', 'validationHWPPerson', 'validatePersonPeriod',
                        'importIcal', 'declarations', 'resumeActivity',
                        'resolveInvalidLabels', 'syntheseActivity', 'synthesisAll', 'synthesisActivityPeriod',
                        'exportActivityDates', 'checkperiod'
                        'indexPersonActivity',
                        'sauvegarde',
                        'declaration',
                        'validations',
                        'resume',
                        "declaration2",
                        "indexActivity",
                        "validateTimesheet",
                        'excel',
                        'organizationLeader',
                        'declarant',
                        'declarantAPI',
                        'validationActivity',
                        'validationActivity2',
                        'validationHWPPerson',
                        'validatePersonPeriod',
                        'importIcal',
                        'declarations',
                        'resumeActivity',
                        'resolveInvalidLabels',
                        'syntheseActivity',
                        'synthesisAll',
                        'synthesisActivityPeriod',
                        'exportActivityDates',
                        'checkperiod'
                    ],
                    'roles' => ['user']
                ],
                ['controller' => 'Timesheet',
                [
                    'controller' => 'Timesheet',
                    'action' => ['declarers', 'recallDeclarer'],
                    'roles' => ['Administrateur']
                ],

                ['controller' => 'Api',
                [
                    'controller' => 'Api',
                    'action' => [
                        'activity',
                        'activityType',
@@ -239,28 +313,53 @@ return array(
                ////////////////////////////////////////////////////////////////
                // PERSON
                ///////////////////////////////////////////////////////////////
                [ 'controller' =>   'Person',
                [
                    'controller' => 'Person',
                    'action' => ['personnel', 'access', 'delete', 'index', 'show', 'search', 'declarers'],
                    'roles' => ['user']
                ],
                [ 'controller' =>   'Person',
                [
                    'controller' => 'Person',
                    'action' => ['synchronize', 'boss'],
                    'privileges' => \Oscar\Provider\Privileges::PERSON_INDEX
                ],
                [ 'controller' =>   'Person',
                    'action' => ['edit', 'new', 'merge', 'organizationRole', 'notificationPerson', 'notificationPersonGenerate', 'affectation'],
                [
                    'controller' => 'Person',
                    'action' => [
                        'edit',
                        'new',
                        'merge',
                        'organizationRole',
                        'notificationPerson',
                        'notificationPersonGenerate',
                        'affectation'
                    ],
                    'privileges' => \Oscar\Provider\Privileges::PERSON_EDIT
                ],

                // Membre
                [ 'controller' =>   'Enroll',
                [
                    'controller' => 'Enroll',
                    'action' => [
                        'personProjectNew', 'personProjectDelete', 'personProjectEdit',
                        'organizationPersonNew', 'organizationPersonDelete', 'organizationPersonEdit',
                        'personActivityNew', 'personActivityDelete', 'personActivityEdit',
                        'organizationActivityNew', 'activityOrganizationDelete', 'activityOrganizationEdit',
                        'personProjectNew', 'personProjectDelete', 'personProjectEdit',
                        'organizationProjectNew', 'organizationProjectDelete', 'organizationProjectEdit', 'organizationPersonClose'
                        'personProjectNew',
                        'personProjectDelete',
                        'personProjectEdit',
                        'organizationPersonNew',
                        'organizationPersonDelete',
                        'organizationPersonEdit',
                        'personActivityNew',
                        'personActivityDelete',
                        'personActivityEdit',
                        'organizationActivityNew',
                        'activityOrganizationDelete',
                        'activityOrganizationEdit',
                        'personProjectNew',
                        'personProjectDelete',
                        'personProjectEdit',
                        'organizationProjectNew',
                        'organizationProjectDelete',
                        'organizationProjectEdit',
                        'organizationPersonClose'

                    ],
                    'roles' => ['user']
@@ -269,33 +368,40 @@ return array(
                ////////////////////////////////////////////////////////////////
                // ORGANIZATION
                ////////////////////////////////////////////////////////////////
                [ 'controller' =>   'Organization',
                [
                    'controller' => 'Organization',
                    'action' => ['delete', 'index', 'search'],
                    'roles' => ['user']

                ],

                [ 'controller' =>   'Organization',
                [
                    'controller' => 'Organization',
                    'action' => ['show'],
                    'privileges' => \Oscar\Provider\Privileges::ORGANIZATION_SHOW
                ],
                [ 'controller' =>   'Organization',
                [
                    'controller' => 'Organization',
                    'action' => ['edit', 'new', 'merge', 'close'],
                    'privileges' => \Oscar\Provider\Privileges::ORGANIZATION_EDIT
                ],
                [ 'controller' =>   'Organization',
                [
                    'controller' => 'Organization',
                    'action' => ['merge'],
                    'privileges' => \Oscar\Provider\Privileges::MAINTENANCE_MENU_ADMIN
                ],
                [ 'controller' =>   'Organization',
                [
                    'controller' => 'Organization',
                    'action' => ['sync'],
                    'privileges' => \Oscar\Provider\Privileges::MAINTENANCE_MENU_ADMIN
                ],
                [ 'controller' =>   'Organization',
                [
                    'controller' => 'Organization',
                    'action' => ['fusion', 'scission', 'exportCsv'],
                    'privileges' => \Oscar\Provider\Privileges::MAINTENANCE_MENU_ADMIN
                ],
                [ 'controller' =>   'Organization',
                [
                    'controller' => 'Organization',
                    'action' => ['synchronizeConnector', 'sync'],
                    'privileges' => \Oscar\Provider\Privileges::MAINTENANCE_MENU_ADMIN
                ],
@@ -303,15 +409,18 @@ return array(
                ////////////////////////////////////////////////////////////////
                // DOCUMENTS ADMINISTRATIFS
                ////////////////////////////////////////////////////////////////
                [ 'controller' =>   'AdministrativeDocument',
                [
                    'controller' => 'AdministrativeDocument',
                    'action' => ['index', 'download'],
                    'roles' => ['user']
                ],
                [ 'controller' =>   'AdministrativeDocument',
                [
                    'controller' => 'AdministrativeDocument',
                    'action' => ['upload'],
                    'privileges' => \Oscar\Provider\Privileges::ADMINISTRATIVE_DOCUMENT_NEW
                ],
                [ 'controller' =>   'AdministrativeDocument',
                [
                    'controller' => 'AdministrativeDocument',
                    'action' => ['delete'],
                    'privileges' => \Oscar\Provider\Privileges::ADMINISTRATIVE_DOCUMENT_DELETE
                ],
@@ -319,15 +428,18 @@ return array(
                ////////////////////////////////////////////////////////////////
                // PUBLIC
                ////////////////////////////////////////////////////////////////
                [ 'controller' =>   'Public',
                [
                    'controller' => 'Public',
                    'action' => ['changelog'],
                    'roles' => ['user'],
                ],
                [ 'controller' =>   'Public',
                [
                    'controller' => 'Public',
                    'action' => ['test'],
                    'roles' => ['Administrateur'],
                ],
                [ 'controller' =>   'Console',
                [
                    'controller' => 'Console',
                    'roles' => [],
                ],

@@ -457,7 +569,6 @@ return array(
                ],



                'json_auth_token' => [
                    'options' => [
                        'route' => 'oscar json:user <token>',
+8 −0
Original line number Diff line number Diff line
@@ -449,6 +449,14 @@ project:
                route: /si-seul
                defaults:
                    action: empty
        ### Fiche du projet :id
        export:
            type: segment
            options:
                route: '/export/:id'
                defaults:
                    action: export
            may_terminate: true

        ### Fiche du projet :id
        show:
+33 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ use Oscar\Entity\ProjectRepository;
use Oscar\Exception\OscarException;
use Oscar\Form\ProjectForm;
use Oscar\Form\ProjectIdentificationForm;
use Oscar\Formatter\ProjectToArrayFormatter;
use Oscar\Provider\Privileges;
use Oscar\Service\ProjectGrantService;
use Oscar\Service\ProjectService;
@@ -120,6 +121,38 @@ class ProjectController extends AbstractOscarController
        $this->redirect()->toRoute('project/mine');
    }

    public function exportAction()
    {
        $id = $this->params()->fromRoute('id', null);
        if (!$id) {
            throw new OscarException(sprintf("Impossible de charger le projet, paramètre ID manquant."));
        }
        try {
            $project = $this->getProjectService()->getProject($id);
            $formatter = new ProjectToArrayFormatter();

            $rolesPerson = $this->getOscarUserContextService()->getAvailabledRolesPersonActivity();
            $rolesOrganizations = $this->getOscarUserContextService()->getAvailabledRolesOrganizationActivity();
            $milestones = $this->getProjectGrantService()->getMilestoneService()->getMilestoneTypeFlat();

            $formatter->configure($rolesPerson, $rolesOrganizations, $milestones);
            $data = $formatter->format($project);
            echo '<table border="1">';
            foreach ($data as $key=>$value) {
                echo "<tr>";
                echo "<th>".$key."</th>";
                echo "<td>".$value."</td>";
                echo "</tr>";
            }
            echo "</table>";
            die();
        } catch (\Exception $e) {
            throw new OscarException(sprintf("Impossible de charger le projet(%s)", $id));
        }
        die("DONNEES");
        return $data;
    }

    /**
     * Fiche projet.
     *
+45 −0
Original line number Diff line number Diff line
@@ -1063,6 +1063,19 @@ class Activity implements ResourceInterface
        return $this;
    }

    /**
     * @param string $format
     * @return string
     */
    public function getDateOpenedStr( $format = 'Y-m-d') :string
    {
        if ($this->getDateOpened()) {
            return $this->getDateOpened()->format($format);
        } else {
            return "";
        }
    }

    /**
     * @return Project
     */
@@ -2125,6 +2138,19 @@ class Activity implements ResourceInterface
        }
    }

    /**
     * @param string $format
     * @return string
     */
    public function getDateSignedStr( $format = 'Y-m-d') :string
    {
        if ($this->getDateSigned()) {
            return $this->getDateSigned()->format($format);
        } else {
            return "";
        }
    }

    /**
     * Retourne les données préparées pour le génération des documents
     */
@@ -2345,6 +2371,25 @@ class Activity implements ResourceInterface
        return $this->totalEcartPaiement;
    }

    private $ecartPaiementExplain = null;

    public function getEcartPaimentExplain() :string
    {
        if ($this->ecartPaiementExplain === null) {
            $this->ecartPaiementExplain = [];
            /** @var ActivityPayment $payment */
            foreach ($this->getPayments() as $payment) {
                if ($payment->getStatus() === ActivityPayment::STATUS_ECART && $payment->getComment()) {
                    $this->ecartPaiementExplain[] = $payment->getComment();
                }
            }

            $this->ecartPaiementExplain = implode(', ', $this->ecartPaiementExplain);
        }

        return $this->ecartPaiementExplain;
    }

    private $justificatifEcartPaiement;

    public function getJustificatifEcartPaiement()
+7 −0
Original line number Diff line number Diff line
@@ -206,6 +206,13 @@ class ActivityDate implements ITrackable
        return $this->dateStart;
    }

    public function getDateStartStr( $format = 'Y-m-d' ) :string
    {
        if( $this->getDateStart() )
            return $this->getDateStart()->format($format);
        return "";
    }

    /**
     * @param datetime $dateStart
     */
Loading