PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.31
Booking for Appointments and Events Calendar – Amelia v1.2.31
2.4.5 2.4.4 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 1 year ago GetNotificationsCommandHandler.php 2 years ago GetSMSNotificationsHistoryCommand.php 1 year ago GetSMSNotificationsHistoryCommandHandler.php 1 year ago SendAmeliaSmsApiRequestCommand.php 1 year ago SendAmeliaSmsApiRequestCommandHandler.php 2 years ago SendTestEmailCommand.php 1 year ago SendTestEmailCommandHandler.php 1 year ago SendUndeliveredNotificationsCommand.php 1 year ago SendUndeliveredNotificationsCommandHandler.php 2 years ago UpdateNotificationCommand.php 1 year ago UpdateNotificationCommandHandler.php 1 year ago UpdateNotificationStatusCommand.php 1 year ago UpdateNotificationStatusCommandHandler.php 2 years ago UpdateSMSNotificationHistoryCommand.php 1 year 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