Loading module/Oscar/config/module.config.php +2 −1 Original line number Diff line number Diff line Loading @@ -473,7 +473,8 @@ return array( 'reindexOne', 'search', 'suborganization', 'create' 'create', 'api' ], 'roles' => ['user'] Loading module/Oscar/config/routes.yml +7 −0 Original line number Diff line number Diff line Loading @@ -875,6 +875,13 @@ organization: defaults: action: suborganization api: type: segment options: route: '/api' defaults: action: api delete: type: segment options: Loading module/Oscar/src/Oscar/Controller/CheminDecisionnelController.php +35 −2 Original line number Diff line number Diff line Loading @@ -28,6 +28,9 @@ class CheminDecisionnelController extends AbstractOscarController implements Use $this->activityService = $activityService; } /** @var \Oscar\Service\OrganizationService */ public $organizationService; public function demarrerAction() { $this->getOscarUserContextService()->check(Privileges::MAINTENANCE_PARAMETERS_MANAGE); Loading Loading @@ -77,6 +80,10 @@ class CheminDecisionnelController extends AbstractOscarController implements Use $activityFormToShow = []; if ($formulaire) { $allActivityForm = $this->getOscarConfigurationService()->getActivityFormConfigKeying(); $partenaireForm = []; $partenaireForm['name'] = 'partenaire'; $partenaireForm['label'] = 'Partenaire'; $allActivityForm['partenaire'] = $partenaireForm; foreach (CheminDecisionnelFormulaire::CHAMPS_VALIDES as $v) { if (array_key_exists($v, $allActivityForm)) { $activityFormToShow[$v] = $allActivityForm[$v]; Loading Loading @@ -109,6 +116,32 @@ class CheminDecisionnelController extends AbstractOscarController implements Use $this->getEntityManager()->persist($newActivity); $this->getEntityManager()->flush(); if ($this->params()->fromPost('partenaire_id')) { if (str_starts_with($this->params()->fromPost('partenaire_id'), 'OSCAR-')) { $orgaID = substr($this->params()->fromPost('partenaire_id'), strlen('OSCAR-')); $orga = $this->getEntityManager()->getRepository(\Oscar\Entity\Organization::class)->getOrganisationById($orgaID); $roleObj = $this->getEntityManager()->getRepository(\Oscar\Entity\OrganizationRole::class)->createQueryBuilder('r')->where('r.label = :label')->getQuery()->setParameters(['label' => 'Partenaire'])->getSingleResult(); $activityOrganization = new \Oscar\Entity\ActivityOrganization(); $this->getEntityManager()->persist($activityOrganization); $activityOrganization->setOrganization($orga) ->setActivity($newActivity) ->setRoleObj($roleObj); $this->getEntityManager()->flush($activityOrganization); } else if (str_starts_with($this->params()->fromPost('partenaire_id'), 'SIRET-')) { $siret = substr($this->params()->fromPost('partenaire_id'), strlen('SIRET-')); $orga = $this->organizationService->creerParSIRET($siret); if ($orga) { $roleObj = $this->getEntityManager()->getRepository(\Oscar\Entity\OrganizationRole::class)->createQueryBuilder('r')->where('r.label = :label')->getQuery()->setParameters(['label' => 'Partenaire'])->getSingleResult(); $activityOrganization = new \Oscar\Entity\ActivityOrganization(); $this->getEntityManager()->persist($activityOrganization); $activityOrganization->setOrganization($orga) ->setActivity($newActivity) ->setRoleObj($roleObj); $this->getEntityManager()->flush($activityOrganization); } } } // Mise à jour de l'index de recherche try { $this->activityService->jobSearchUpdate($newActivity); Loading Loading @@ -139,7 +172,7 @@ class CheminDecisionnelController extends AbstractOscarController implements Use $pdf_path = $this->getOscarConfigurationService()->getDocumentDropLocation() . DIRECTORY_SEPARATOR . $renamed; $html = $this->getConventionHtml($formulaire->getTexteConvention(), $this->params()->fromPost('dateStart'), $this->params()->fromPost('dateEnd'), $this->params()->fromPost('amount'), $this->params()->fromQuery('partenaire')); $html = $this->getConventionHtml($formulaire->getTexteConvention(), $this->params()->fromPost('dateStart'), $this->params()->fromPost('dateEnd'), $this->params()->fromPost('amount'), $this->params()->fromPost('partenaire')); if (!file_put_contents($html_tmp, $html)) { throw new OscarException("Impossible de créer le fichier temporaire '$html_tmp'"); Loading module/Oscar/src/Oscar/Controller/CheminDecisionnelControllerFactory.php +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ class CheminDecisionnelControllerFactory implements FactoryInterface $c->setOscarConfigurationService($container->get(OscarConfigurationService::class)); $c->setLoggerService($container->get('Logger')); $c->setActivityService($container->get(ProjectGrantService::class)); $c->organizationService = $container->get(\Oscar\Service\OrganizationService::class); return $c; } } module/Oscar/src/Oscar/Controller/OrganizationController.php +23 −0 Original line number Diff line number Diff line Loading @@ -1044,4 +1044,27 @@ class OrganizationController extends AbstractOscarController implements UseOrgan ]; } public function apiAction() { try { if ($this->getRequest()->getMethod() == "GET") { $recherche = trim($this->params()->fromQuery('recherche')) ? trim($this->params()->fromQuery('recherche')) : NULL; $response = new \Laminas\View\Model\JsonModel(); $variables = []; $variables['organizations'] = $this->getOrganizationService()->recherche($recherche); $response->setVariables($variables); return $response; } $response = new \Laminas\Http\Response(); $response->setStatusCode(\Laminas\Http\Response::STATUS_CODE_405); $response->setContent("Method Not Allowed."); return $response; } catch (Throwable $e) { $response = new \Laminas\Http\Response(); $response->setStatusCode(\Laminas\Http\Response::STATUS_CODE_500); $response->setContent($e->getMessage()); return $response; } } } Loading
module/Oscar/config/module.config.php +2 −1 Original line number Diff line number Diff line Loading @@ -473,7 +473,8 @@ return array( 'reindexOne', 'search', 'suborganization', 'create' 'create', 'api' ], 'roles' => ['user'] Loading
module/Oscar/config/routes.yml +7 −0 Original line number Diff line number Diff line Loading @@ -875,6 +875,13 @@ organization: defaults: action: suborganization api: type: segment options: route: '/api' defaults: action: api delete: type: segment options: Loading
module/Oscar/src/Oscar/Controller/CheminDecisionnelController.php +35 −2 Original line number Diff line number Diff line Loading @@ -28,6 +28,9 @@ class CheminDecisionnelController extends AbstractOscarController implements Use $this->activityService = $activityService; } /** @var \Oscar\Service\OrganizationService */ public $organizationService; public function demarrerAction() { $this->getOscarUserContextService()->check(Privileges::MAINTENANCE_PARAMETERS_MANAGE); Loading Loading @@ -77,6 +80,10 @@ class CheminDecisionnelController extends AbstractOscarController implements Use $activityFormToShow = []; if ($formulaire) { $allActivityForm = $this->getOscarConfigurationService()->getActivityFormConfigKeying(); $partenaireForm = []; $partenaireForm['name'] = 'partenaire'; $partenaireForm['label'] = 'Partenaire'; $allActivityForm['partenaire'] = $partenaireForm; foreach (CheminDecisionnelFormulaire::CHAMPS_VALIDES as $v) { if (array_key_exists($v, $allActivityForm)) { $activityFormToShow[$v] = $allActivityForm[$v]; Loading Loading @@ -109,6 +116,32 @@ class CheminDecisionnelController extends AbstractOscarController implements Use $this->getEntityManager()->persist($newActivity); $this->getEntityManager()->flush(); if ($this->params()->fromPost('partenaire_id')) { if (str_starts_with($this->params()->fromPost('partenaire_id'), 'OSCAR-')) { $orgaID = substr($this->params()->fromPost('partenaire_id'), strlen('OSCAR-')); $orga = $this->getEntityManager()->getRepository(\Oscar\Entity\Organization::class)->getOrganisationById($orgaID); $roleObj = $this->getEntityManager()->getRepository(\Oscar\Entity\OrganizationRole::class)->createQueryBuilder('r')->where('r.label = :label')->getQuery()->setParameters(['label' => 'Partenaire'])->getSingleResult(); $activityOrganization = new \Oscar\Entity\ActivityOrganization(); $this->getEntityManager()->persist($activityOrganization); $activityOrganization->setOrganization($orga) ->setActivity($newActivity) ->setRoleObj($roleObj); $this->getEntityManager()->flush($activityOrganization); } else if (str_starts_with($this->params()->fromPost('partenaire_id'), 'SIRET-')) { $siret = substr($this->params()->fromPost('partenaire_id'), strlen('SIRET-')); $orga = $this->organizationService->creerParSIRET($siret); if ($orga) { $roleObj = $this->getEntityManager()->getRepository(\Oscar\Entity\OrganizationRole::class)->createQueryBuilder('r')->where('r.label = :label')->getQuery()->setParameters(['label' => 'Partenaire'])->getSingleResult(); $activityOrganization = new \Oscar\Entity\ActivityOrganization(); $this->getEntityManager()->persist($activityOrganization); $activityOrganization->setOrganization($orga) ->setActivity($newActivity) ->setRoleObj($roleObj); $this->getEntityManager()->flush($activityOrganization); } } } // Mise à jour de l'index de recherche try { $this->activityService->jobSearchUpdate($newActivity); Loading Loading @@ -139,7 +172,7 @@ class CheminDecisionnelController extends AbstractOscarController implements Use $pdf_path = $this->getOscarConfigurationService()->getDocumentDropLocation() . DIRECTORY_SEPARATOR . $renamed; $html = $this->getConventionHtml($formulaire->getTexteConvention(), $this->params()->fromPost('dateStart'), $this->params()->fromPost('dateEnd'), $this->params()->fromPost('amount'), $this->params()->fromQuery('partenaire')); $html = $this->getConventionHtml($formulaire->getTexteConvention(), $this->params()->fromPost('dateStart'), $this->params()->fromPost('dateEnd'), $this->params()->fromPost('amount'), $this->params()->fromPost('partenaire')); if (!file_put_contents($html_tmp, $html)) { throw new OscarException("Impossible de créer le fichier temporaire '$html_tmp'"); Loading
module/Oscar/src/Oscar/Controller/CheminDecisionnelControllerFactory.php +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ class CheminDecisionnelControllerFactory implements FactoryInterface $c->setOscarConfigurationService($container->get(OscarConfigurationService::class)); $c->setLoggerService($container->get('Logger')); $c->setActivityService($container->get(ProjectGrantService::class)); $c->organizationService = $container->get(\Oscar\Service\OrganizationService::class); return $c; } }
module/Oscar/src/Oscar/Controller/OrganizationController.php +23 −0 Original line number Diff line number Diff line Loading @@ -1044,4 +1044,27 @@ class OrganizationController extends AbstractOscarController implements UseOrgan ]; } public function apiAction() { try { if ($this->getRequest()->getMethod() == "GET") { $recherche = trim($this->params()->fromQuery('recherche')) ? trim($this->params()->fromQuery('recherche')) : NULL; $response = new \Laminas\View\Model\JsonModel(); $variables = []; $variables['organizations'] = $this->getOrganizationService()->recherche($recherche); $response->setVariables($variables); return $response; } $response = new \Laminas\Http\Response(); $response->setStatusCode(\Laminas\Http\Response::STATUS_CODE_405); $response->setContent("Method Not Allowed."); return $response; } catch (Throwable $e) { $response = new \Laminas\Http\Response(); $response->setStatusCode(\Laminas\Http\Response::STATUS_CODE_500); $response->setContent($e->getMessage()); return $response; } } }