Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4155 | Rev 4300 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
4113 efrain 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Controller;
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
9
use Laminas\Mvc\Controller\AbstractActionController;
10
use Laminas\Log\LoggerInterface;
11
use Laminas\View\Model\ViewModel;
12
use Laminas\View\Model\JsonModel;
13
use LeadersLinked\Mapper\UserMapper;
4131 efrain 14
use LeadersLinked\Mapper\ChatUserMapper;
15
use LeadersLinked\Mapper\ChatGroupMapper;
16
use LeadersLinked\Mapper\ChatGroupUserMapper;
4141 efrain 17
use LeadersLinked\Mapper\CalendarEventMapper;
18
use LeadersLinked\Mapper\ZoomMeetingMapper;
19
use LeadersLinked\Model\CalendarEvent;
20
use LeadersLinked\Library\Functions;
4113 efrain 21
 
4131 efrain 22
 
4113 efrain 23
class CalendarController extends AbstractActionController
24
{
25
    /**
26
     *
27
     * @var AdapterInterface
28
     */
29
    private $adapter;
30
 
31
 
32
    /**
33
     *
34
     * @var AbstractAdapter
35
     */
36
    private $cache;
37
 
38
    /**
39
     *
40
     * @var  LoggerInterface
41
     */
42
    private $logger;
43
 
44
 
45
    /**
46
     *
47
     * @var array
48
     */
49
    private $config;
50
 
51
    /**
52
     *
53
     * @param AdapterInterface $adapter
54
     * @param AbstractAdapter $cache
55
     * @param LoggerInterface $logger
56
     * @param array $config
57
     */
58
    public function __construct($adapter, $cache, $logger,  $config)
59
    {
60
        $this->adapter      = $adapter;
61
        $this->cache        = $cache;
62
        $this->logger       = $logger;
63
        $this->config       = $config;
64
    }
65
 
66
 
67
 
68
    public function indexAction()
69
    {
4131 efrain 70
        $currentUserPlugin = $this->plugin('currentUserPlugin');
71
        $currentUser = $currentUserPlugin->getUser();
72
 
4113 efrain 73
 
74
 
75
        $this->layout()->setTemplate('layout/layout.phtml');
76
        $viewModel = new ViewModel();
77
        $viewModel->setTemplate('leaders-linked/calendar/index.phtml');
4131 efrain 78
 
4113 efrain 79
        return $viewModel;
80
    }
81
 
82
 
83
 
84
 
85
    public function eventsAction()
86
    {
87
 
4141 efrain 88
        $request = $this->getRequest();
89
        if($request->isGet()) {
90
 
91
            $currentUserPlugin = $this->plugin('currentUserPlugin');
92
            $currentUser = $currentUserPlugin->getUser();
93
 
4155 efrain 94
            $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
95
            $currentNetwork = $currentNetworkPlugin->getNetwork();
4141 efrain 96
 
4155 efrain 97
 
98
 
4141 efrain 99
            $start  = $this->params()->fromQuery('start');
100
            $end    = $this->params()->fromQuery('end');
101
 
102
            if(!empty($start) && !empty($end)) {
103
 
104
                $dtStart = \DateTime::createFromFormat('Y-m-d', $start);
105
                $dtEnd = \DateTime::createFromFormat('Y-m-d', $end);
106
            } else {
107
                $dtStart = null;
108
                $dtEnd = null;
109
            }
110
 
111
            if(!$dtStart || !$dtEnd) {
112
              $t = time();
113
              $year = intval(date('Y', $t), 10);
114
              $month = intval(date('m', $t), 10);
115
              $last_day = intval(date('t', $t), 10);
116
 
117
              $start = mktime(0, 0, 0, $month, 1, $year);
118
              $start = date('Y-m-d H:i:s');
119
 
120
              $start = mktime(23, 56, 59, $month, $last_day, $year);
121
              $end = date('Y-m-d H:i:s');
122
 
123
            } else {
124
                $dtStart->setTime(0, 0, 0);
125
                $start = $dtStart->format('Y-m-d H:i:s');
126
 
127
                $dtEnd->setTime(23, 59, 59);
128
                $end  = $dtEnd->format('Y-m-d H:i:s');
129
            }
130
 
131
 
132
            $events = [];
4113 efrain 133
 
4141 efrain 134
 
4155 efrain 135
 
136
            //3 días
4156 efrain 137
            $expirePeriod = 86400 * 3;
4155 efrain 138
            $t1 = time();
139
 
4141 efrain 140
 
141
            $zoomMeetingMapper = ZoomMeetingMapper::getInstance($this->adapter);
142
 
143
            $calendarEventMapper = CalendarEventMapper::getInstance($this->adapter);
144
            $records = $calendarEventMapper->fetchAllByUserIdAndStartTimeAndEndTime($currentUser->id, $start, $end);
145
            foreach($records as $record)
146
            {
147
                switch($record->type)
148
                {
149
                    case CalendarEvent::TYPE_ZOOM :
150
                        $zoomMeeting = $zoomMeetingMapper->fetchOne($record->relational_id);
151
                        if($zoomMeeting) {
152
 
4155 efrain 153
                            $backgroundColor = $currentNetwork->css_calendar_zoom_bg_color ;
154
                            $textColor = $currentNetwork->css_calendar_zoom_text_color;
4141 efrain 155
 
4155 efrain 156
                            $dtStart = \DateTime::createFromFormat('Y-m-d H:i:s', $zoomMeeting->start_time);
157
                            $t2 = $dtStart->getTimestamp();
158
 
159
                            if($t2 > $t1) {
160
 
161
                                $t3 = $t1 + $expirePeriod;
162
                                if($t3 > $t2) {
163
                                    $backgroundColor = $currentNetwork->css_calendar_expire_bg_color;
164
                                    $textColor = $currentNetwork->css_calendar_expire_text_color;
165
                                }
166
 
167
                            }
168
 
169
 
170
 
4141 efrain 171
                            if($currentUser->timezone && $currentUser->timezone != $zoomMeeting->timezone) {
172
 
173
                                $start =  str_replace(' ', 'T', Functions::convertDateTimeBetweenTimeZones($zoomMeeting->start_time, $zoomMeeting->timezone, $currentUser->timezone));
174
                                $end =  str_replace(' ', 'T', Functions::convertDateTimeBetweenTimeZones($zoomMeeting->end_time, $zoomMeeting->timezone, $currentUser->timezone));
175
 
176
 
177
 
178
 
179
 
180
                            } else {
181
                                $start = str_replace(' ', 'T', $zoomMeeting->start_time);
182
                                $end = str_replace(' ', 'T', $zoomMeeting->end_time);
183
                            }
184
 
185
 
4155 efrain 186
 
187
 
188
 
189
 
4141 efrain 190
                            $agenda = "<a href=\"{$zoomMeeting->join_url}\" target=\"_blank\">" .  $zoomMeeting->agenda . "<br>" .
191
                                " LABEL_ZOOM_MEETING_START_DATE : " . $dtStart->format('Y-m-d') . "<br>" .
192
                                " LABEL_ZOOM_MEETING_START_TIME : " . $dtStart->format('H:i a') . "<br>" .
193
                                " LABEL_ZOOM_MEETING_TIMEZONE : " . $zoomMeeting->timezone . "<br>" .
194
                                " LABEL_ZOOM_MEETING_TITLE :  " . $zoomMeeting->topic  . "<br>" .
195
                                " LABEL_ZOOM_MEETING_URL : " . $zoomMeeting->join_url . "<br>" .
196
                                " LABEL_ZOOM_MEETING_PASSWORD : " . $zoomMeeting->password . "<br>" .
197
                                "</a>";
198
 
199
                            array_push($events, [
200
                                'id'                => $zoomMeeting->id,
4148 efrain 201
                                'title'             => $zoomMeeting->topic,
4141 efrain 202
                                'agenda'            => $agenda,
203
                                'start'             => $start,
204
                                'end'               => $end,
205
                                'url'               => $zoomMeeting->join_url,
4155 efrain 206
                                'backgroundColor'   => $backgroundColor,
207
                                'textColor'         => $textColor,
4141 efrain 208
                            ]);
209
                        }
210
                        break;
211
 
212
 
213
                }
214
 
215
 
216
 
217
            }
218
 
219
 
220
 
221
 
222
 
223
 
224
 
225
 
4113 efrain 226
 
227
 
4141 efrain 228
            return new JsonModel($events);
4113 efrain 229
 
4141 efrain 230
        } else {
231
            $response = [
232
                'success' => false,
233
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
234
            ];
235
        }
4113 efrain 236
 
4141 efrain 237
        return new JsonModel($response);
4113 efrain 238
    }
239
 
240
 
241
 
242
 
243
}