src/Event/ApplicationEvents.php line 82

Open in your IDE?
  1. <?php
  2. namespace App\Event;
  3. use App\Entity\Application;
  4. use App\Service\EmailSender;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\Workflow\Event\Event;
  7. use Symfony\Component\Workflow\Event\GuardEvent;
  8. class ApplicationEvents implements EventSubscriberInterface
  9. {
  10. private $sender;
  11. public function __construct(EmailSender $sender)
  12. {
  13. $this->sender = $sender;
  14. }
  15. public static function getSubscribedEvents()
  16. {
  17. return [
  18. 'workflow.application.guard.complete' => ['guardCompletion'],
  19. 'workflow.application.completed.complete' => ['hasCompleted'],
  20. 'workflow.application.guard.approve_tier_one' => ['guardTierOneApproval'],
  21. 'workflow.application.completed.approve_tier_one' => ['hasTierOneApproval'],
  22. 'workflow.application.guard.approve_tier_two' => ['guardTierTwoApproval'],
  23. 'workflow.application.completed.approve_tier_two' => ['hasTierTwoApproval'],
  24. 'workflow.application.guard.submit' => ['guardSubmission'],
  25. 'workflow.application.completed.submit' => ['hasSubmitted'],
  26. 'workflow.application.completed.alter' => ['hasAltered'],
  27. ];
  28. }
  29. public function guardCompletion(GuardEvent $event)
  30. {
  31. /* @var Application $application */
  32. $application = $event->getSubject();
  33. if (!$application->canComplete()) {
  34. $event->setBlocked(true);
  35. }
  36. }
  37. public function hasCompleted(Event $event)
  38. {
  39. /* @var Application $application */
  40. $application = $event->getSubject();
  41. $this->sender->sendApplicationCompleteEmail($application);
  42. }
  43. public function guardTierOneApproval(GuardEvent $event)
  44. {
  45. /* @var Application $application */
  46. $application = $event->getSubject();
  47. if (!$application->hasTierOneApproval()) {
  48. $event->setBlocked(true);
  49. }
  50. }
  51. public function hasTierOneApproval(Event $event)
  52. {
  53. /* @var Application $application */
  54. $application = $event->getSubject();
  55. if ($application->getAward()->getAwardType()->getAcronym() !== "VAC") {
  56. $this->sender->sendTierOneApprovedEmail($application);
  57. }
  58. }
  59. public function guardTierTwoApproval(GuardEvent $event)
  60. {
  61. /* @var Application $application */
  62. $application = $event->getSubject();
  63. if (!$application->hasTierTwoApproval()) {
  64. $event->setBlocked(true);
  65. }
  66. }
  67. public function hasTierTwoApproval(Event $event)
  68. {
  69. /* @var Application $application */
  70. $application = $event->getSubject();
  71. $awardTypeAcronym = $application->getAward()->getAwardType()->getAcronym() ?? "";
  72. if ($awardTypeAcronym == "PHD") {
  73. // $this->sender->sendTierTwoApprovedEmail($application);
  74. }
  75. }
  76. public function guardSubmission(GuardEvent $event)
  77. {
  78. /* @var Application $application */
  79. $application = $event->getSubject();
  80. if (!$application->hasTierTwoApproval()) {
  81. $event->setBlocked(true);
  82. }
  83. }
  84. public function hasSubmitted(Event $event)
  85. {
  86. /* @var Application $application */
  87. $application = $event->getSubject();
  88. $this->sender->sendSubmittedEmail($application);
  89. }
  90. public function hasAltered(Event $event)
  91. {
  92. /* @var Application $application */
  93. $application = $event->getSubject();
  94. $application->removeCurrentSignatories();
  95. $this->sender->sendAlterationEmail($application);
  96. }
  97. }