diff --git a/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationRenderer.php b/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationHandler.php similarity index 60% rename from src/Bundle/ChillActivityBundle/Notification/ActivityNotificationRenderer.php rename to src/Bundle/ChillActivityBundle/Notification/ActivityNotificationHandler.php index 2d3d333d9..31e68f95b 100644 --- a/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationRenderer.php +++ b/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationHandler.php @@ -12,11 +12,19 @@ declare(strict_types=1); namespace Chill\ActivityBundle\Notification; use Chill\ActivityBundle\Entity\Activity; +use Chill\ActivityBundle\Repository\ActivityRepository; use Chill\MainBundle\Entity\Notification; use Chill\MainBundle\Notification\NotificationHandlerInterface; -final class ActivityNotificationRenderer implements NotificationHandlerInterface +final class ActivityNotificationHandler implements NotificationHandlerInterface { + private ActivityRepository $activityRepository; + + public function __construct(ActivityRepository $activityRepository) + { + $this->activityRepository = $activityRepository; + } + public function getTemplate() { return '@ChillActivity/Activity/showInNotification.html.twig'; @@ -24,7 +32,10 @@ final class ActivityNotificationRenderer implements NotificationHandlerInterface public function getTemplateData(Notification $notification) { - return ['notification' => $notification]; + return [ + 'notification' => $notification, + 'activity' => $this->activityRepository->find($notification->getRelatedEntityId()), + ]; } public function supports(Notification $notification, array $options = []): bool diff --git a/src/Bundle/ChillActivityBundle/Resources/views/Activity/showInNotification.html.twig b/src/Bundle/ChillActivityBundle/Resources/views/Activity/showInNotification.html.twig index 79badfe26..af1b5d884 100644 --- a/src/Bundle/ChillActivityBundle/Resources/views/Activity/showInNotification.html.twig +++ b/src/Bundle/ChillActivityBundle/Resources/views/Activity/showInNotification.html.twig @@ -1,2 +1,10 @@ - -Go to Activity +{# available variables: notification, activity #} +{% if activity is not null %} + {% if is_granted('CHILL_ACTIVITY_SEE', activity) %} + Go to Activity + {% else %} + you are not allowed to see it details. This is the minimal data: {{ activity.id }} + {% endif %} +{% else %} + You get notified of an activity which does not exists any more. +{% endif %} diff --git a/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationRenderer.php b/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationHandler.php similarity index 57% rename from src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationRenderer.php rename to src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationHandler.php index 934f3f1c0..0297c5f39 100644 --- a/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationRenderer.php +++ b/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationHandler.php @@ -14,9 +14,17 @@ namespace Chill\PersonBundle\Notification; use Chill\MainBundle\Entity\Notification; use Chill\MainBundle\Notification\NotificationHandlerInterface; use Chill\PersonBundle\Entity\AccompanyingPeriod; +use Chill\PersonBundle\Repository\AccompanyingPeriodRepository; -final class AccompanyingPeriodNotificationRenderer implements NotificationHandlerInterface +final class AccompanyingPeriodNotificationHandler implements NotificationHandlerInterface { + private AccompanyingPeriodRepository $accompanyingPeriodRepository; + + public function __construct(AccompanyingPeriodRepository $accompanyingPeriodRepository) + { + $this->accompanyingPeriodRepository = $accompanyingPeriodRepository; + } + public function getTemplate() { return 'ChillPersonBundle:AccompanyingPeriod:showInNotification.html.twig'; @@ -24,7 +32,10 @@ final class AccompanyingPeriodNotificationRenderer implements NotificationHandle public function getTemplateData(Notification $notification) { - return ['notification' => $notification]; + return [ + 'notification' => $notification, + 'period' => $this->accompanyingPeriodRepository->find($notification->getRelatedEntityId()), + ]; } public function supports(Notification $notification) diff --git a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/showInNotification.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/showInNotification.html.twig index d92de8cba..92eb251b0 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/showInNotification.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/showInNotification.html.twig @@ -1,3 +1,12 @@ - - Go to Acc. period. - +{# variables availables: notification, period. #} +{% if period is not null %} + {% if is_granted('CHILL_PERSON_ACCOMPANYING_PERIOD_SEE', period) %} + + Go to Acc. period. + + {% else %} + You are getting a notification for a period you are not allowed to see. This is the minimal details: {{ period.id }} + {% endif %} +{% else %} +