PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.20
Booking for Appointments and Events Calendar – Amelia v1.2.20
2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Application / Commands / Notification / GetNotificationsCommandHandler.php
ameliabooking / src / Application / Commands / Notification Last commit date
GetNotificationsCommand.php 7 years ago GetNotificationsCommandHandler.php 2 years ago GetSMSNotificationsHistoryCommand.php 7 years ago GetSMSNotificationsHistoryCommandHandler.php 2 years ago SendAmeliaSmsApiRequestCommand.php 7 years ago SendAmeliaSmsApiRequestCommandHandler.php 2 years ago SendTestEmailCommand.php 7 years ago SendTestEmailCommandHandler.php 2 years ago SendUndeliveredNotificationsCommand.php 4 years ago SendUndeliveredNotificationsCommandHandler.php 2 years ago UpdateNotificationCommand.php 7 years ago UpdateNotificationCommandHandler.php 2 years ago UpdateNotificationStatusCommand.php 7 years ago UpdateNotificationStatusCommandHandler.php 2 years ago UpdateSMSNotificationHistoryCommand.php 7 years ago UpdateSMSNotificationHistoryCommandHandler.php 1 year ago
GetNotificationsCommandHandler.php
100 lines
1 <?php
2
3 namespace AmeliaBooking\Application\Commands\Notification;
4
5 use AmeliaBooking\Application\Commands\CommandResult;
6 use AmeliaBooking\Application\Commands\CommandHandler;
7 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
8 use AmeliaBooking\Application\Services\Notification\AbstractWhatsAppNotificationService;
9 use AmeliaBooking\Domain\Collection\AbstractCollection;
10 use AmeliaBooking\Domain\Collection\Collection;
11 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
12 use AmeliaBooking\Domain\Entity\Entities;
13 use AmeliaBooking\Domain\Entity\Notification\Notification;
14 use AmeliaBooking\Domain\ValueObjects\String\Html;
15 use AmeliaBooking\Domain\ValueObjects\String\Name;
16 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
17 use AmeliaBooking\Infrastructure\Repository\Notification\NotificationRepository;
18 use AmeliaBooking\Infrastructure\Repository\Notification\NotificationsToEntitiesRepository;
19
20 /**
21 * Class GetNotificationsCommandHandler
22 *
23 * @package AmeliaBooking\Application\Commands\Notification
24 */
25 class GetNotificationsCommandHandler extends CommandHandler
26 {
27 /**
28 * @return CommandResult
29 * @throws \Slim\Exception\ContainerValueNotFoundException
30 * @throws AccessDeniedException
31 * @throws InvalidArgumentException
32 * @throws QueryExecutionException
33 * @throws \Interop\Container\Exception\ContainerException
34 */
35 public function handle(GetNotificationsCommand $command)
36 {
37 if (!$command->getPermissionService()->currentUserCanRead(Entities::NOTIFICATIONS)) {
38 throw new AccessDeniedException('You are not allowed to read notifications');
39 }
40
41 $result = new CommandResult();
42
43 /** @var NotificationRepository $notificationRepo */
44 $notificationRepo = $this->container->get('domain.notification.repository');
45 /** @var NotificationsToEntitiesRepository $notificationEntitiesRepo */
46 $notificationEntitiesRepo = $this->container->get('domain.notificationEntities.repository');
47 /** @var AbstractWhatsAppNotificationService $whatsAppNotificationService */
48 $whatsAppNotificationService = $this->container->get('application.whatsAppNotification.service');
49
50 $whatsAppTemplates = [];
51 if ($whatsAppNotificationService->checkRequiredFields()) {
52 $whatsAppTemplates = $whatsAppNotificationService->getTemplates();
53 }
54
55 /** @var Collection $notifications */
56 $notifications = $notificationRepo->getAll();
57 /** @var Notification $notification */
58 foreach ($notifications->getItems() as $notification) {
59 if ($notification->getCustomName()) {
60 $notification->setEntityIds($notificationEntitiesRepo->getEntities($notification->getId()->getValue()));
61 $notification->setEntityIds(array_map('intval', $notification->getEntityIds()));
62 }
63 if (!empty($whatsAppTemplates[0]) && !empty($notification->getWhatsAppTemplate()) && !empty($whatsAppTemplates[0])) {
64 if (!in_array($notification->getWhatsAppTemplate(), array_column($whatsAppTemplates[0], 'name'))) {
65 $notification->setWhatsAppTemplate('');
66 $notification->setSubject(new Name(''));
67 $notification->setContent(new Html(''));
68 $notificationRepo->updateFieldById($notification->getId()->getValue(), null, 'whatsAppTemplate');
69 $notificationRepo->updateFieldById($notification->getId()->getValue(), '', 'subject');
70 $notificationRepo->updateFieldById($notification->getId()->getValue(), '', 'content');
71 }
72 }
73 }
74
75 if (!$notifications instanceof AbstractCollection) {
76 $result->setResult(CommandResult::RESULT_ERROR);
77 $result->setMessage('Could not get notifications');
78
79 return $result;
80 }
81
82 $notificationsArray = $notifications->toArray();
83
84 $notificationsArray = apply_filters('amelia_get_notifications_filter', $notificationsArray);
85
86 do_action('amelia_get_notifications', $notificationsArray);
87
88 $result->setResult(CommandResult::RESULT_SUCCESS);
89 $result->setMessage('Successfully retrieved notifications.');
90 $result->setData(
91 [
92 Entities::NOTIFICATIONS => $notificationsArray,
93 'whatsAppTemplates' => !empty($whatsAppTemplates[1]) ? $whatsAppTemplates[1] : []
94 ]
95 );
96
97 return $result;
98 }
99 }
100