| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- namespace Opentalent\OtTemplating\Controller;
- use Opentalent\OtTemplating\Domain\Repository\MemberRepository;
- class MemberController extends OtController
- {
- /**
- * @var MemberRepository
- *
- */
- protected $memberRepository;
- /** @noinspection PhpUnused */
- /**
- * action getMembersAction
- *
- * @param array $options
- * @return void
- * @throws \Exception
- */
- public function getMembersAction(array $options = []) {
- $organizationId = (int) $this->settings['organizationId'];
- // Get members of the structure
- $members = $this->memberRepository->findByOrganizationId($organizationId);
- // Sort alphabetically by name
- usort($members, function($a, $b) {return strcmp($a->getName(), $b->getName());});
- // Instruments to display in first place (next will be sorted alphabetically)
- $stack1 = ['CONDUCTOR' => []];
- $stack2 = [];
- foreach ($members as $member) {
- // If that Instrument exist in stack1: put it in this one
- if (array_key_exists($member->getInstrument(), $stack1)) {
- array_push($stack1[$member->getInstrument()], $member);
- } else {
- // Create the new array if needed in stack2, then put the member in it
- if (!array_key_exists($member->getInstrument(), $stack2)) {
- $stack2[$member->getInstrument()] = [];
- }
- array_push($stack2[$member->getInstrument()], $member);
- }
- }
- // remove empty instruments in stack 1
- $stack1 = array_filter($stack1);
- // sort by instrument stack2
- ksort($stack2);
- $membersByInstrument = array_merge($stack1, $stack2);
- $this->view->assign('membersByInstrument', $membersByInstrument);
- $this->setTemplate('GetMembers');
- }
- /** @noinspection PhpUnused */
- /**
- * action getCaMembersAction
- *
- * @param array $options
- * @return void
- * @throws \Exception
- */
- public function getMembersCaAction(array $options = []) {
- $organizationId = (int) $this->settings['organizationId'];
- // Get members of the structure (only CA members)
- $members = $this->memberRepository->findByOrganizationId($organizationId, true);
- // Sort alphabetically by name
- usort($members, function($a, $b) {return strcmp($a->getName(), $b->getName());});
- // Missions to display (sorted)
- $membersByMission = [
- 'PRESIDENT' => [],
- 'HONORARY_PRESIDENT' => [],
- 'VICE_PRESIDENT' => [],
- 'VICE_PRESIDENT_OF_HONOR' => [],
- 'PRESIDENT_ASSISTANT' => [],
- 'HOUR_PRESIDENT' => [],
- 'MEMBER_OF_THE_BOARD' => [],
- 'MEMBER_OF_BOARD_OF_HONOR' => [],
- 'ACTIVE_COOPTED_BOARD_MEMBER' => [],
- 'TREASURER' => [],
- 'TREASURER_ASSISTANT' => [],
- 'SECRETARY' => [],
- 'ASSISTANT_SECRETARY' => [],
- 'ACTIVE_MEMBER_OF_THE_CA' => [],
- 'HONORARY_MEMBER' => [],
- 'YOUTH_REPRESENTATIVE' => []
- ];
- // Put members into their categorie(s)
- foreach ($members as $member) {
- if (array_key_exists($member->getMission(), $membersByMission)) {
- array_push($membersByMission[$member->getMission()], $member);
- }
- }
- // Remove empty sections
- $membersByMission = array_filter($membersByMission);
- $this->view->assign('membersByMission', $membersByMission);
- $this->setTemplate('GetMembersCa');
- }
- /**
- * @param MemberRepository $memberRepository
- */
- public function injectMemberRepository(MemberRepository $memberRepository)
- {
- $this->memberRepository = $memberRepository;
- }
- }
|