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

- Ajout d'un exemple pour l'obtention de certains membres précis

 - Ajout d'une méthode générique de récupération des membres avec un rôle spécifique
parent 03175fc8
Loading
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -90,6 +90,16 @@ return [
         * Note : firstname/lastname sont optionnels
         */
        'get_recipients_methods' => [
            /** Exemple 'membres des organisations indiquées dans options > organisation' **/
            [
                'key'    => 'fixed_organisation_dri',
                'label'  => 'membre de la DRI',
                'description' => 'Liste des membres de la DRI',
                'options' => [],
                'getRecipients'     => function ($sc, $options) {
                    return $sc->get(\Oscar\Service\ProjectGrantService::class)->getCentralOrganizationsMembers($options);
                }
            ],
            [
                ///// key : Clef unique pour identifier le méthode
                'key'               => 'persons_by_role',
+33 −0
Original line number Diff line number Diff line
@@ -1277,4 +1277,37 @@ class OrganizationService implements UseOscarConfigurationService, UseEntityMana
    {
        return $this->getOscarConfigurationService()->getOrganisationCentral();
    }

    public function getMembers( array $ids_organization, ?array $roles = null)
    {
        $out = [];
        $repo = $this->getEntityManager()->getRepository(OrganizationPerson::class);

        $qb = $repo->createQueryBuilder('op');
        $qb
            ->innerJoin('op.organization', 'o')
            ->where('o.id IN(:ids)')
            ->setParameter('ids', $ids_organization)
        ;
        if( $roles != null && false){
            $qb->innerJoin('op.role', 'r')
                ->andWhere('r.roleId IN(:roles)')
                ->setParameter('roles', $roles);
        }


        $result = $qb->getQuery()->getResult();
        $out = [];
        /** @var OrganizationPerson $r */
        foreach ($result as $r) {
            $out[] = [
                'id' => $r->getPerson()->getId(),
                'firstname' => $r->getPerson()->getFirstname(),
                'lastname' => $r->getPerson()->getLastname(),
                'fullname' => $r->getPerson()->getFullname(),
                'email' => $r->getPerson()->getEmail(),
            ];
        }
        return $out;
    }
}