Commit 95ccbd06 authored by Jean-Baptiste Oellers's avatar Jean-Baptiste Oellers
Browse files

Ajout champ partenaire

parent 1d63b80a
Loading
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -473,7 +473,8 @@ return array(
                        'reindexOne',
                        'search',
                        'suborganization',
                        'create'
                        'create',
                        'api'
                    ],
                    'roles' => ['user']

+7 −0
Original line number Diff line number Diff line
@@ -875,6 +875,13 @@ organization:
        defaults:
          action: suborganization

    api:
      type: segment
      options:
        route: '/api'
        defaults:
          action: api

    delete:
      type: segment
      options:
+35 −2
Original line number Diff line number Diff line
@@ -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);
@@ -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];
@@ -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);
@@ -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'");
+1 −0
Original line number Diff line number Diff line
@@ -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;
    }
}
+23 −0
Original line number Diff line number Diff line
@@ -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