MemberController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. namespace Opentalent\OtTemplating\Controller;
  3. use Opentalent\OtTemplating\Domain\Repository\MemberRepository;
  4. class MemberController extends OtController
  5. {
  6. /**
  7. * @var MemberRepository
  8. *
  9. */
  10. protected $memberRepository;
  11. /** @noinspection PhpUnused */
  12. /**
  13. * action getMembersAction
  14. *
  15. * @param array $options
  16. * @return void
  17. * @throws \Exception
  18. */
  19. public function getMembersAction(array $options = []) {
  20. $organizationId = (int) $this->settings['organizationId'];
  21. // Get members of the structure
  22. $members = $this->memberRepository->findByOrganizationId($organizationId);
  23. // Sort alphabetically by name
  24. usort($members, function($a, $b) {return strcmp($a->getName(), $b->getName());});
  25. // Instruments to display in first place (next will be sorted alphabetically)
  26. $stack1 = ['CONDUCTOR' => []];
  27. $stack2 = [];
  28. foreach ($members as $member) {
  29. // If that Instrument exist in stack1: put it in this one
  30. if (array_key_exists($member->getInstrument(), $stack1)) {
  31. array_push($stack1[$member->getInstrument()], $member);
  32. } else {
  33. // Create the new array if needed in stack2, then put the member in it
  34. if (!array_key_exists($member->getInstrument(), $stack2)) {
  35. $stack2[$member->getInstrument()] = [];
  36. }
  37. array_push($stack2[$member->getInstrument()], $member);
  38. }
  39. }
  40. // remove empty instruments in stack 1
  41. $stack1 = array_filter($stack1);
  42. // sort by instrument stack2
  43. ksort($stack2);
  44. $membersByInstrument = array_merge($stack1, $stack2);
  45. $this->view->assign('membersByInstrument', $membersByInstrument);
  46. $this->setTemplate('GetMembers');
  47. }
  48. /** @noinspection PhpUnused */
  49. /**
  50. * action getCaMembersAction
  51. *
  52. * @param array $options
  53. * @return void
  54. * @throws \Exception
  55. */
  56. public function getMembersCaAction(array $options = []) {
  57. $organizationId = (int) $this->settings['organizationId'];
  58. // Get members of the structure (only CA members)
  59. $members = $this->memberRepository->findByOrganizationId($organizationId, true);
  60. // Sort alphabetically by name
  61. usort($members, function($a, $b) {return strcmp($a->getName(), $b->getName());});
  62. // Missions to display (sorted)
  63. $membersByMission = [
  64. 'PRESIDENT' => [],
  65. 'HONORARY_PRESIDENT' => [],
  66. 'VICE_PRESIDENT' => [],
  67. 'VICE_PRESIDENT_OF_HONOR' => [],
  68. 'PRESIDENT_ASSISTANT' => [],
  69. 'HOUR_PRESIDENT' => [],
  70. 'MEMBER_OF_THE_BOARD' => [],
  71. 'MEMBER_OF_BOARD_OF_HONOR' => [],
  72. 'ACTIVE_COOPTED_BOARD_MEMBER' => [],
  73. 'TREASURER' => [],
  74. 'TREASURER_ASSISTANT' => [],
  75. 'SECRETARY' => [],
  76. 'ASSISTANT_SECRETARY' => [],
  77. 'ACTIVE_MEMBER_OF_THE_CA' => [],
  78. 'HONORARY_MEMBER' => [],
  79. 'YOUTH_REPRESENTATIVE' => []
  80. ];
  81. // Put members into their categorie(s)
  82. foreach ($members as $member) {
  83. if (array_key_exists($member->getMission(), $membersByMission)) {
  84. array_push($membersByMission[$member->getMission()], $member);
  85. }
  86. }
  87. // Remove empty sections
  88. $membersByMission = array_filter($membersByMission);
  89. $this->view->assign('membersByMission', $membersByMission);
  90. $this->setTemplate('GetMembersCa');
  91. }
  92. /**
  93. * @param MemberRepository $memberRepository
  94. */
  95. public function injectMemberRepository(MemberRepository $memberRepository)
  96. {
  97. $this->memberRepository = $memberRepository;
  98. }
  99. }