PluginProbe
Fluent Support – Helpdesk & Customer Support Ticket System / trunk
Fluent Support – Helpdesk & Customer Support Ticket System vtrunk
2.4.0 2.3.2 2.3.1 2.3.0 2.2.1 2.2.0 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.10.5 1.4.0 1.4.1 1.4.2 1.4.5 1.4.6 1.4.7 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 All 68 releases
fluent-support / app / Http / Controllers / NotificationController.php

NotificationController.php in Fluent Support – Helpdesk & Customer Support Ticket System trunk, at app/Http/Controllers/NotificationController.php

125 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentSupport\App\Http\Controllers;
4
5 use FluentSupport\App\Services\Helper;
6 use FluentSupport\App\Services\Notifications\NotificationCategory;
7 use FluentSupport\App\Services\Notifications\NotificationFormatter;
8 use FluentSupport\App\Services\Notifications\NotificationService;
9 use FluentSupport\Framework\Http\Request\Request;
10
11 class NotificationController extends Controller
12 {
13 public function index(Request $request)
14 {
15 $agent = Helper::getAgentByUserId();
16
17 if (!$agent) {
18 return $this->sendError([
19 'message' => __('Sorry, You do not have permission. Please add yourself as support agent first', 'fluent-support')
20 ]);
21 }
22
23 $notificationService = new NotificationService();
24 $formatter = new NotificationFormatter();
25
26 return array_merge([
27 'notifications' => $formatter->formatPaginated($notificationService->paginateForPerson($agent->id, $this->getFilters($request))),
28 'unread_count' => $notificationService->getUnreadCount($agent->id)
29 ], $this->getNotificationMeta());
30 }
31
32 public function unread(Request $request)
33 {
34 $agent = Helper::getAgentByUserId();
35
36 if (!$agent) {
37 return $this->sendError([
38 'message' => __('Sorry, You do not have permission. Please add yourself as support agent first', 'fluent-support')
39 ]);
40 }
41
42 $filters = array_merge($this->getFilters($request), [
43 'status' => 'unread',
44 'limit' => $request->getSafe('limit', 'intval')
45 ]);
46
47 $notificationService = new NotificationService();
48 $formatter = new NotificationFormatter();
49
50 return array_merge([
51 'notifications' => $formatter->formatMany($notificationService->getRecentForPerson($agent->id, $filters)),
52 'unread_count' => $notificationService->getUnreadCount($agent->id)
53 ], $this->getNotificationMeta());
54 }
55
56 public function unreadCount(Request $request)
57 {
58 $agent = Helper::getAgentByUserId();
59
60 if (!$agent) {
61 return $this->sendError([
62 'message' => __('Sorry, You do not have permission. Please add yourself as support agent first', 'fluent-support')
63 ]);
64 }
65
66 return [
67 'count' => (new NotificationService())->getUnreadCount($agent->id, $this->getFilters($request))
68 ];
69 }
70
71 public function markRead(Request $request, $notification_id)
72 {
73 $agent = Helper::getAgentByUserId();
74
75 if (!$agent) {
76 return $this->sendError([
77 'message' => __('Sorry, You do not have permission. Please add yourself as support agent first', 'fluent-support')
78 ]);
79 }
80
81 return [
82 'updated' => (new NotificationService())->markAsRead((int) $notification_id, $agent->id),
83 'unread_count' => (new NotificationService())->getUnreadCount($agent->id)
84 ];
85 }
86
87 public function markAllRead(Request $request)
88 {
89 $agent = Helper::getAgentByUserId();
90
91 if (!$agent) {
92 return $this->sendError([
93 'message' => __('Sorry, You do not have permission. Please add yourself as support agent first', 'fluent-support')
94 ]);
95 }
96
97 return [
98 'updated' => (new NotificationService())->markAllAsRead($agent->id),
99 'unread_count' => (new NotificationService())->getUnreadCount($agent->id)
100 ];
101 }
102
103 protected function getFilters(Request $request)
104 {
105 return [
106 'category' => $request->getSafe('category', 'sanitize_text_field'),
107 'status' => $request->getSafe('status', 'sanitize_text_field'),
108 'ticket_id' => $request->getSafe('ticket_id', 'intval'),
109 'per_page' => $request->getSafe('per_page', 'intval')
110 ];
111 }
112
113 protected function getNotificationMeta()
114 {
115 $categories = NotificationCategory::options();
116
117 return [
118 'meta' => [
119 'categories' => $categories
120 ],
121 'notification_categories' => $categories
122 ];
123 }
124 }
125