MemberController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace Opentalent\OtWidgets\Controller;
  3. use Opentalent\OtWidgets\Domain\Repository\MemberRepository;
  4. use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
  5. class MemberController extends ActionController
  6. {
  7. /**
  8. * @var MemberRepository
  9. *
  10. */
  11. protected $memberRepository;
  12. /** @noinspection PhpUnused */
  13. /**
  14. * action getMembersAction
  15. *
  16. * @param array $options
  17. * @return void
  18. * @throws \Exception
  19. */
  20. public function getMembersAction(array $options = []) {
  21. $organizationId = (int) $this->settings['organizationId'];
  22. // Get members of the structure
  23. $members = $this->memberRepository->findByOrganizationId($organizationId);
  24. // Sort alphabetically by name
  25. usort($members, function($a, $b) {return strcmp($a->getName(), $b->getName());});
  26. // Instruments to display in first place (next will be sorted alphabetically)
  27. $stack1 = ['CONDUCTOR' => []];
  28. $stack2 = [];
  29. foreach ($members as $member) {
  30. // If that Instrument exist in stack1: put it in this one
  31. if (array_key_exists($member->getInstrument(), $stack1)) {
  32. array_push($stack1[$member->getInstrument()], $member);
  33. } else {
  34. // Create the new array if needed in stack2, then put the member in it
  35. if (!array_key_exists($member->getInstrument(), $stack2)) {
  36. $stack2[$member->getInstrument()] = [];
  37. }
  38. array_push($stack2[$member->getInstrument()], $member);
  39. }
  40. }
  41. // remove empty instruments in stack 1
  42. $stack1 = array_filter($stack1);
  43. // sort by instrument stack2
  44. ksort($stack2);
  45. $membersByInstrument = array_merge($stack1, $stack2);
  46. $this->view->assign('membersByInstrument', $membersByInstrument);
  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. }
  91. /**
  92. * @param MemberRepository $memberRepository
  93. */
  94. public function injectMemberRepository(MemberRepository $memberRepository)
  95. {
  96. $this->memberRepository = $memberRepository;
  97. }
  98. }