Loading module/Oscar/config/module.config.php +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; Loading @@ -18,7 +19,8 @@ return array( UnicaenAuth\Guard\PrivilegeController::class => [ //////////////////////////////////////////////////////////////////////// // PUBLIC [ 'controller' => 'Public', [ 'controller' => 'Public', 'action' => ['index',], 'roles' => [], ], Loading @@ -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", Loading Loading @@ -83,7 +88,8 @@ return array( 'roles' => ['user'] ], [ 'controller' => 'Connector', [ 'controller' => 'Connector', 'action' => ['person', 'persons', 'organization', "organizations"], 'roles' => ['user'] ], Loading @@ -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 ], Loading @@ -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 ], Loading @@ -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', Loading @@ -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'] Loading @@ -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 ], Loading @@ -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 ], Loading @@ -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' => [], ], Loading Loading @@ -457,7 +569,6 @@ return array( ], 'json_auth_token' => [ 'options' => [ 'route' => 'oscar json:user <token>', Loading module/Oscar/config/routes.yml +8 −0 Original line number Diff line number Diff line Loading @@ -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: Loading module/Oscar/src/Oscar/Controller/ProjectController.php +33 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. * Loading module/Oscar/src/Oscar/Entity/Activity.php +45 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading @@ -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 */ Loading Loading @@ -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() Loading module/Oscar/src/Oscar/Entity/ActivityDate.php +7 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
module/Oscar/config/module.config.php +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; Loading @@ -18,7 +19,8 @@ return array( UnicaenAuth\Guard\PrivilegeController::class => [ //////////////////////////////////////////////////////////////////////// // PUBLIC [ 'controller' => 'Public', [ 'controller' => 'Public', 'action' => ['index',], 'roles' => [], ], Loading @@ -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", Loading Loading @@ -83,7 +88,8 @@ return array( 'roles' => ['user'] ], [ 'controller' => 'Connector', [ 'controller' => 'Connector', 'action' => ['person', 'persons', 'organization', "organizations"], 'roles' => ['user'] ], Loading @@ -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 ], Loading @@ -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 ], Loading @@ -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', Loading @@ -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'] Loading @@ -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 ], Loading @@ -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 ], Loading @@ -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' => [], ], Loading Loading @@ -457,7 +569,6 @@ return array( ], 'json_auth_token' => [ 'options' => [ 'route' => 'oscar json:user <token>', Loading
module/Oscar/config/routes.yml +8 −0 Original line number Diff line number Diff line Loading @@ -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: Loading
module/Oscar/src/Oscar/Controller/ProjectController.php +33 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. * Loading
module/Oscar/src/Oscar/Entity/Activity.php +45 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading @@ -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 */ Loading Loading @@ -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() Loading
module/Oscar/src/Oscar/Entity/ActivityDate.php +7 −0 Original line number Diff line number Diff line Loading @@ -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