Loading module/Oscar/src/Oscar/Controller/EnrollController.php +63 −68 Changes for module/Oscar/src/Oscar/Controller/EnrollController.php: 63 added lines, 68 removed lines. Original line number Diff line number Diff line Loading @@ -919,6 +919,8 @@ class EnrollController extends AbstractOscarController implements UsePersonServi // Person <> Activity //////////////////////////////////////////////////////////////////////////// /** * Ajout d'une nouvelle personne dans une activité. * * @return \Zend\Http\Response * @throws OscarException */ Loading Loading @@ -946,6 +948,11 @@ class EnrollController extends AbstractOscarController implements UsePersonServi } } /** * Suppression d'une personne dans une activité. * * @return \Zend\Http\Response */ public function personActivityDeleteAction() { try { Loading @@ -965,6 +972,11 @@ class EnrollController extends AbstractOscarController implements UsePersonServi } } /** * Modification d'une personne dans une activité. * * @return \Zend\Http\Response */ public function personActivityEditAction() { try { Loading Loading @@ -996,49 +1008,57 @@ class EnrollController extends AbstractOscarController implements UsePersonServi //////////////////////////////////////////////////////////////////////////// // Organization <> Activity //////////////////////////////////////////////////////////////////////////// /** * @return \Zend\Http\Response */ public function organizationActivityNewAction() { try { /** @var Organization $organization */ $organization = $this->getOrganizationService()->getOrganization($this->params()->fromPost('enroled')); /** @var $activity */ $activity = $this->getActivityEntity(); /** @var RoleOrganization\ $role */ $role = $this->getOrganizationRoleEntity(); $this->getOscarUserContextService()->check(Privileges::ACTIVITY_ORGANIZATION_MANAGE, $activity); $this->getActivityService()->organizationActivityAdd( try { $organization = $this->getOrganizationService()->getOrganization( $this->getPostedInteger('enroled') ); $role = $this->getOrganizationService()->getRoleOrganizationById($this->getPostedInteger('role')); $dateStart = $this->getPostedDateTime('dateStart'); $dateEnd = $this->getPostedDateTime('dateEnd'); $this->getProjectGrantService()->organizationActivityAdd( $organization, $activity, $role, $this->getDateStartPosted(), $this->getDateEndPosted(), true $dateStart, $dateEnd ); return $this->redirect()->toRoute('contract/show', ['id' => $activity->getId()]); return $this->getResponseOk("La personne a bien été ajouté"); } catch (\Exception $e) { return $this->getResponseInternalError( "Impossible d'ajouter l'organisation dans l'activité : " . $e->getMessage() ); $msg = "Impossible d'ajouter l'organisation à l'activité"; $this->getLoggerService()->error("$msg : " . $e->getMessage()); return $this->getResponseInternalError($msg); } } /** * @return \Zend\Http\Response */ public function activityOrganizationDeleteAction() { try { $organizationActivity = $this->getPostedActivityOrganization(); $activity = $organizationActivity->getActivity(); $this->getOscarUserContextService()->check(Privileges::ACTIVITY_ORGANIZATION_MANAGE, $activity); $this->getActivityService()->activityOrganizationRemove($organizationActivity); return $this->redirect()->toRoute('contract/show', ['id' => $activity->getId()]); } catch (\Exception $e) { return $this->getResponseInternalError( "Impossible de supprimer l'affectation de cette organisation dans l'activité : " . $e->getMessage() /** @var ActivityPerson $personActivity */ $activityOrganization = $this->getOrganizationService()->getActivityOrganization($this->getRoutedInteger('idenroll')); $this->getOscarUserContextService()->check( Privileges::ACTIVITY_PERSON_MANAGE, $activityOrganization->getActivity() ); $this->getProjectGrantService()->activityOrganizationRemove($activityOrganization); return $this->getResponseOk("L'organisation a bien été supprimée de l'activité"); } catch (\Exception $e) { $msg = "Impossible de supprimer l'affectation de cette organisation dans l'activité"; $this->getLoggerService()->error("$msg : " . $e->getMessage()); return $this->getResponseInternalError($msg); } } Loading @@ -1046,33 +1066,27 @@ class EnrollController extends AbstractOscarController implements UsePersonServi { try { /** @var ActivityOrganization $activityOrganization */ $organizationActivity = $this->getEntityManager()->getRepository(ActivityOrganization::class)->find( $this->params()->fromRoute('idenroll') ); if (!$organizationActivity) { throw new OscarException("Affectation introuvable"); } if (!$this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_ORGANIZATION_MANAGE, $organizationActivity->getActivity() )) { throw new OscarException("Droits insufisants"); } $activityOrganization = $this->getOrganizationService()->getActivityOrganization($this->getRoutedInteger('idenroll')); $this->getOscarUserContextService()->check( Privileges::ACTIVITY_PERSON_MANAGE, $activityOrganization->getActivity() ); $role = $this->getOrganizationService()->getRoleOrganizationById( $this->getPostedInteger('role'), true ); $this->getProjectGrantService()->organizationActivityEdit( $organizationActivity, $this->getPostedOrganizationRole(), $this->getDateStartPosted(), $this->getDateEndPosted() $activityOrganization, $role, $this->getPostedDateTime('dateStart'), $this->getPostedDateTime('dateEnd') ); return $this->redirect()->toRoute('contract/show', ['id' => $organizationActivity->getActivity()->getId()]); return $this->getResponseOk("L'organisation a bien été modifiée dans l'activité"); } catch (\Exception $e) { return $this->getResponseInternalError( "Impossible de modifier l'affectation de cette organisation dans l'activité : " . $e->getMessage() ); $msg = "Impossible de modifier l'affectation de cette organisation dans l'activité"; $this->getLoggerService()->error("$msg : " . $e->getMessage()); return $this->getResponseInternalError($msg); } } Loading Loading @@ -1101,7 +1115,6 @@ class EnrollController extends AbstractOscarController implements UsePersonServi } } /** * @return Role * @throws OscarException Loading Loading @@ -1136,24 +1149,6 @@ class EnrollController extends AbstractOscarController implements UsePersonServi } } // public function getPosted($type){ // $idEnroll = $this->params()->fromRoute('idenroll'); // try { // return $this->getEntityManager()->getRepository($type)->find($idEnroll); // } catch (\Exception $e) { // throw new OscarException(sprintf(_("Impossible de charger l'affectation [%s]%s : %s", $idEnroll, $type, $e->getMessage()))); // } // } // public function organizationActivityEditAction() // { // $this->getOscarUserContextService()->check(Privileges::ACTIVITY_ORGANIZATION_MANAGE, $this->getActivityEntity()); // return $this->editEnroll(ActivityOrganization::class); // } //////////////////////////////////////////////////////////////////////////// // Fin des rôles public function organizationPersonCloseAction() Loading module/Oscar/src/Oscar/Service/OrganizationService.php +52 −0 Changes for module/Oscar/src/Oscar/Service/OrganizationService.php: 52 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ use Oscar\Entity\Activity; use Oscar\Entity\ActivityOrganization; use Oscar\Entity\Organization; use Oscar\Entity\OrganizationRole; use Oscar\Entity\OrganizationRoleRepository; use Oscar\Entity\OrganizationType; use Oscar\Entity\OrganizationTypeRepository; use Oscar\Entity\ProjectPartner; Loading Loading @@ -93,6 +94,56 @@ class OrganizationService implements UseOscarConfigurationService, UseEntityMana return $this->getEntityManager()->getRepository(OrganizationRole::class)->findAll(); } /** * Retourne le OrganizationRole via l'ID * * @param int $organizationRoleId * @param bool $throw * @return OrganizationRole * @throws OscarException */ public function getRoleOrganizationById(int $organizationRoleId, $throw = true): OrganizationRole { /** @var OrganizationRoleRepository $repo */ $repo = $this->getEntityManager()->getRepository(OrganizationRole::class); $role = $repo->find($organizationRoleId); if ($role === null && $throw === true) { throw new OscarException("Impossible de charger le rôle d'organisation '$organizationRoleId'"); } return $role; } /** * Retourne l'ActivityOrganization via l'ID. * * @param int $activityOrganizationId * @param bool $throw * @return ActivityOrganization * @throws OscarException */ public function getActivityOrganization(int $activityOrganizationId, $throw = true): ActivityOrganization { $repo = $this->getEntityManager()->getRepository(ActivityOrganization::class); $activityOrganization = $repo->find($activityOrganizationId); if ($activityOrganization === null && $throw === true) { throw new OscarException("Impossible de charger le rôle d'organisation '$activityOrganizationId'"); } return $activityOrganization; } /** * @param $id * @throws OscarException * @throws \Doctrine\ORM\ORMException * @throws \Doctrine\ORM\OptimisticLockException * @deprecated */ public function deleteOrganization($id) { $o = $this->getOrganization($id); Loading @@ -102,6 +153,7 @@ class OrganizationService implements UseOscarConfigurationService, UseEntityMana /** * Retourne la liste des Organizations pour la personne * * @param Person $person * @param null $specifiqueRoleIds * @param bool $rolePrincipaux Loading module/Oscar/src/Oscar/Service/ProjectGrantService.php +15 −18 Changes for module/Oscar/src/Oscar/Service/ProjectGrantService.php: 15 added lines, 18 removed lines. Original line number Diff line number Diff line Loading @@ -1833,17 +1833,21 @@ class ProjectGrantService implements UseOscarConfigurationService, UseEntityMana $buildIndex = true ) { try { $updateNotification = $activityorganization->getRoleObj()->isPrincipal() !== $roleOrganization->isPrincipal(); $activityorganization->setRoleObj($roleOrganization) ->setDateStart($dateStart) ->setDateEnd($dateEnd); $this->getEntityManager()->flush($activityorganization); $activity = $activityorganization->getActivity(); $organization = $activityorganization->getOrganization(); $this->jobSearchUpdate($activity); $this->getOrganizationService()->updateIndex($organization); $this->getNotificationService()->jobUpdateNotificationsActivity($activity); $this->getGearmanJobLauncherService()->triggerUpdateSearchIndexActivity($activity); $this->getGearmanJobLauncherService()->triggerUpdateSearchIndexOrganization($organization); if( $updateNotification ){ $this->getGearmanJobLauncherService()->triggerUpdateNotificationActivity($activity); } $this->getActivityLogService()->addUserInfo( sprintf( Loading @@ -1856,17 +1860,7 @@ class ProjectGrantService implements UseOscarConfigurationService, UseEntityMana $activity->getId() ); } catch (\Exception $e) { throw new OscarException( sprintf( _( "Impossible de mettre à jour le rôle de l'organisation %s comme %s dans %s : %s", $activityorganization->getOrganization(), $roleOrganization, $activityorganization->getActivity(), $e->getMessage() ) ) ); throw $e; } } Loading Loading @@ -1922,12 +1916,15 @@ class ProjectGrantService implements UseOscarConfigurationService, UseEntityMana try { $activity = $activityOrganization->getActivity(); $organization = $activityOrganization->getOrganization(); $updateNotification = $activityOrganization->getRoleObj()->isPrincipal(); $this->getEntityManager()->remove($activityOrganization); $this->getEntityManager()->flush($activityOrganization); $this->getEntityManager()->flush(); $this->jobSearchUpdate($activity); $this->getOrganizationService()->updateIndex($organization); $this->getNotificationService()->jobUpdateNotificationsActivity($activity); $this->getGearmanJobLauncherService()->triggerUpdateSearchIndexActivity($activity); $this->getGearmanJobLauncherService()->triggerUpdateSearchIndexOrganization($organization); if ($updateNotification) { $this->getGearmanJobLauncherService()->triggerUpdateNotificationActivity($activity); } $this->getActivityLogService()->addUserInfo( sprintf(" a supprimé l'organisation %s de l'activité %s", $organization->log(), $activity->log()), Loading Loading
module/Oscar/src/Oscar/Controller/EnrollController.php +63 −68 Changes for module/Oscar/src/Oscar/Controller/EnrollController.php: 63 added lines, 68 removed lines. Original line number Diff line number Diff line Loading @@ -919,6 +919,8 @@ class EnrollController extends AbstractOscarController implements UsePersonServi // Person <> Activity //////////////////////////////////////////////////////////////////////////// /** * Ajout d'une nouvelle personne dans une activité. * * @return \Zend\Http\Response * @throws OscarException */ Loading Loading @@ -946,6 +948,11 @@ class EnrollController extends AbstractOscarController implements UsePersonServi } } /** * Suppression d'une personne dans une activité. * * @return \Zend\Http\Response */ public function personActivityDeleteAction() { try { Loading @@ -965,6 +972,11 @@ class EnrollController extends AbstractOscarController implements UsePersonServi } } /** * Modification d'une personne dans une activité. * * @return \Zend\Http\Response */ public function personActivityEditAction() { try { Loading Loading @@ -996,49 +1008,57 @@ class EnrollController extends AbstractOscarController implements UsePersonServi //////////////////////////////////////////////////////////////////////////// // Organization <> Activity //////////////////////////////////////////////////////////////////////////// /** * @return \Zend\Http\Response */ public function organizationActivityNewAction() { try { /** @var Organization $organization */ $organization = $this->getOrganizationService()->getOrganization($this->params()->fromPost('enroled')); /** @var $activity */ $activity = $this->getActivityEntity(); /** @var RoleOrganization\ $role */ $role = $this->getOrganizationRoleEntity(); $this->getOscarUserContextService()->check(Privileges::ACTIVITY_ORGANIZATION_MANAGE, $activity); $this->getActivityService()->organizationActivityAdd( try { $organization = $this->getOrganizationService()->getOrganization( $this->getPostedInteger('enroled') ); $role = $this->getOrganizationService()->getRoleOrganizationById($this->getPostedInteger('role')); $dateStart = $this->getPostedDateTime('dateStart'); $dateEnd = $this->getPostedDateTime('dateEnd'); $this->getProjectGrantService()->organizationActivityAdd( $organization, $activity, $role, $this->getDateStartPosted(), $this->getDateEndPosted(), true $dateStart, $dateEnd ); return $this->redirect()->toRoute('contract/show', ['id' => $activity->getId()]); return $this->getResponseOk("La personne a bien été ajouté"); } catch (\Exception $e) { return $this->getResponseInternalError( "Impossible d'ajouter l'organisation dans l'activité : " . $e->getMessage() ); $msg = "Impossible d'ajouter l'organisation à l'activité"; $this->getLoggerService()->error("$msg : " . $e->getMessage()); return $this->getResponseInternalError($msg); } } /** * @return \Zend\Http\Response */ public function activityOrganizationDeleteAction() { try { $organizationActivity = $this->getPostedActivityOrganization(); $activity = $organizationActivity->getActivity(); $this->getOscarUserContextService()->check(Privileges::ACTIVITY_ORGANIZATION_MANAGE, $activity); $this->getActivityService()->activityOrganizationRemove($organizationActivity); return $this->redirect()->toRoute('contract/show', ['id' => $activity->getId()]); } catch (\Exception $e) { return $this->getResponseInternalError( "Impossible de supprimer l'affectation de cette organisation dans l'activité : " . $e->getMessage() /** @var ActivityPerson $personActivity */ $activityOrganization = $this->getOrganizationService()->getActivityOrganization($this->getRoutedInteger('idenroll')); $this->getOscarUserContextService()->check( Privileges::ACTIVITY_PERSON_MANAGE, $activityOrganization->getActivity() ); $this->getProjectGrantService()->activityOrganizationRemove($activityOrganization); return $this->getResponseOk("L'organisation a bien été supprimée de l'activité"); } catch (\Exception $e) { $msg = "Impossible de supprimer l'affectation de cette organisation dans l'activité"; $this->getLoggerService()->error("$msg : " . $e->getMessage()); return $this->getResponseInternalError($msg); } } Loading @@ -1046,33 +1066,27 @@ class EnrollController extends AbstractOscarController implements UsePersonServi { try { /** @var ActivityOrganization $activityOrganization */ $organizationActivity = $this->getEntityManager()->getRepository(ActivityOrganization::class)->find( $this->params()->fromRoute('idenroll') ); if (!$organizationActivity) { throw new OscarException("Affectation introuvable"); } if (!$this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_ORGANIZATION_MANAGE, $organizationActivity->getActivity() )) { throw new OscarException("Droits insufisants"); } $activityOrganization = $this->getOrganizationService()->getActivityOrganization($this->getRoutedInteger('idenroll')); $this->getOscarUserContextService()->check( Privileges::ACTIVITY_PERSON_MANAGE, $activityOrganization->getActivity() ); $role = $this->getOrganizationService()->getRoleOrganizationById( $this->getPostedInteger('role'), true ); $this->getProjectGrantService()->organizationActivityEdit( $organizationActivity, $this->getPostedOrganizationRole(), $this->getDateStartPosted(), $this->getDateEndPosted() $activityOrganization, $role, $this->getPostedDateTime('dateStart'), $this->getPostedDateTime('dateEnd') ); return $this->redirect()->toRoute('contract/show', ['id' => $organizationActivity->getActivity()->getId()]); return $this->getResponseOk("L'organisation a bien été modifiée dans l'activité"); } catch (\Exception $e) { return $this->getResponseInternalError( "Impossible de modifier l'affectation de cette organisation dans l'activité : " . $e->getMessage() ); $msg = "Impossible de modifier l'affectation de cette organisation dans l'activité"; $this->getLoggerService()->error("$msg : " . $e->getMessage()); return $this->getResponseInternalError($msg); } } Loading Loading @@ -1101,7 +1115,6 @@ class EnrollController extends AbstractOscarController implements UsePersonServi } } /** * @return Role * @throws OscarException Loading Loading @@ -1136,24 +1149,6 @@ class EnrollController extends AbstractOscarController implements UsePersonServi } } // public function getPosted($type){ // $idEnroll = $this->params()->fromRoute('idenroll'); // try { // return $this->getEntityManager()->getRepository($type)->find($idEnroll); // } catch (\Exception $e) { // throw new OscarException(sprintf(_("Impossible de charger l'affectation [%s]%s : %s", $idEnroll, $type, $e->getMessage()))); // } // } // public function organizationActivityEditAction() // { // $this->getOscarUserContextService()->check(Privileges::ACTIVITY_ORGANIZATION_MANAGE, $this->getActivityEntity()); // return $this->editEnroll(ActivityOrganization::class); // } //////////////////////////////////////////////////////////////////////////// // Fin des rôles public function organizationPersonCloseAction() Loading
module/Oscar/src/Oscar/Service/OrganizationService.php +52 −0 Changes for module/Oscar/src/Oscar/Service/OrganizationService.php: 52 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ use Oscar\Entity\Activity; use Oscar\Entity\ActivityOrganization; use Oscar\Entity\Organization; use Oscar\Entity\OrganizationRole; use Oscar\Entity\OrganizationRoleRepository; use Oscar\Entity\OrganizationType; use Oscar\Entity\OrganizationTypeRepository; use Oscar\Entity\ProjectPartner; Loading Loading @@ -93,6 +94,56 @@ class OrganizationService implements UseOscarConfigurationService, UseEntityMana return $this->getEntityManager()->getRepository(OrganizationRole::class)->findAll(); } /** * Retourne le OrganizationRole via l'ID * * @param int $organizationRoleId * @param bool $throw * @return OrganizationRole * @throws OscarException */ public function getRoleOrganizationById(int $organizationRoleId, $throw = true): OrganizationRole { /** @var OrganizationRoleRepository $repo */ $repo = $this->getEntityManager()->getRepository(OrganizationRole::class); $role = $repo->find($organizationRoleId); if ($role === null && $throw === true) { throw new OscarException("Impossible de charger le rôle d'organisation '$organizationRoleId'"); } return $role; } /** * Retourne l'ActivityOrganization via l'ID. * * @param int $activityOrganizationId * @param bool $throw * @return ActivityOrganization * @throws OscarException */ public function getActivityOrganization(int $activityOrganizationId, $throw = true): ActivityOrganization { $repo = $this->getEntityManager()->getRepository(ActivityOrganization::class); $activityOrganization = $repo->find($activityOrganizationId); if ($activityOrganization === null && $throw === true) { throw new OscarException("Impossible de charger le rôle d'organisation '$activityOrganizationId'"); } return $activityOrganization; } /** * @param $id * @throws OscarException * @throws \Doctrine\ORM\ORMException * @throws \Doctrine\ORM\OptimisticLockException * @deprecated */ public function deleteOrganization($id) { $o = $this->getOrganization($id); Loading @@ -102,6 +153,7 @@ class OrganizationService implements UseOscarConfigurationService, UseEntityMana /** * Retourne la liste des Organizations pour la personne * * @param Person $person * @param null $specifiqueRoleIds * @param bool $rolePrincipaux Loading
module/Oscar/src/Oscar/Service/ProjectGrantService.php +15 −18 Changes for module/Oscar/src/Oscar/Service/ProjectGrantService.php: 15 added lines, 18 removed lines. Original line number Diff line number Diff line Loading @@ -1833,17 +1833,21 @@ class ProjectGrantService implements UseOscarConfigurationService, UseEntityMana $buildIndex = true ) { try { $updateNotification = $activityorganization->getRoleObj()->isPrincipal() !== $roleOrganization->isPrincipal(); $activityorganization->setRoleObj($roleOrganization) ->setDateStart($dateStart) ->setDateEnd($dateEnd); $this->getEntityManager()->flush($activityorganization); $activity = $activityorganization->getActivity(); $organization = $activityorganization->getOrganization(); $this->jobSearchUpdate($activity); $this->getOrganizationService()->updateIndex($organization); $this->getNotificationService()->jobUpdateNotificationsActivity($activity); $this->getGearmanJobLauncherService()->triggerUpdateSearchIndexActivity($activity); $this->getGearmanJobLauncherService()->triggerUpdateSearchIndexOrganization($organization); if( $updateNotification ){ $this->getGearmanJobLauncherService()->triggerUpdateNotificationActivity($activity); } $this->getActivityLogService()->addUserInfo( sprintf( Loading @@ -1856,17 +1860,7 @@ class ProjectGrantService implements UseOscarConfigurationService, UseEntityMana $activity->getId() ); } catch (\Exception $e) { throw new OscarException( sprintf( _( "Impossible de mettre à jour le rôle de l'organisation %s comme %s dans %s : %s", $activityorganization->getOrganization(), $roleOrganization, $activityorganization->getActivity(), $e->getMessage() ) ) ); throw $e; } } Loading Loading @@ -1922,12 +1916,15 @@ class ProjectGrantService implements UseOscarConfigurationService, UseEntityMana try { $activity = $activityOrganization->getActivity(); $organization = $activityOrganization->getOrganization(); $updateNotification = $activityOrganization->getRoleObj()->isPrincipal(); $this->getEntityManager()->remove($activityOrganization); $this->getEntityManager()->flush($activityOrganization); $this->getEntityManager()->flush(); $this->jobSearchUpdate($activity); $this->getOrganizationService()->updateIndex($organization); $this->getNotificationService()->jobUpdateNotificationsActivity($activity); $this->getGearmanJobLauncherService()->triggerUpdateSearchIndexActivity($activity); $this->getGearmanJobLauncherService()->triggerUpdateSearchIndexOrganization($organization); if ($updateNotification) { $this->getGearmanJobLauncherService()->triggerUpdateNotificationActivity($activity); } $this->getActivityLogService()->addUserInfo( sprintf(" a supprimé l'organisation %s de l'activité %s", $organization->log(), $activity->log()), Loading