Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4141 | Rev 4155 | 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
 
94
            $textColor = '#000000';
95
            $reservationSameLocation = '#80ff80';
96
            $reservationOtherLocation = '#008000';
97
            $contract = '#8080ff';
98
            $contractDelayed = '#ff0000';
99
            $contractOtherLocation = '#ffc0c0';
100
            $orderRepair = '#c0c0c0';
101
 
102
            $start  = $this->params()->fromQuery('start');
103
            $end    = $this->params()->fromQuery('end');
104
 
105
            if(!empty($start) && !empty($end)) {
106
 
107
                $dtStart = \DateTime::createFromFormat('Y-m-d', $start);
108
                $dtEnd = \DateTime::createFromFormat('Y-m-d', $end);
109
            } else {
110
                $dtStart = null;
111
                $dtEnd = null;
112
            }
113
 
114
            if(!$dtStart || !$dtEnd) {
115
              $t = time();
116
              $year = intval(date('Y', $t), 10);
117
              $month = intval(date('m', $t), 10);
118
              $last_day = intval(date('t', $t), 10);
119
 
120
              $start = mktime(0, 0, 0, $month, 1, $year);
121
              $start = date('Y-m-d H:i:s');
122
 
123
              $start = mktime(23, 56, 59, $month, $last_day, $year);
124
              $end = date('Y-m-d H:i:s');
125
 
126
            } else {
127
                $dtStart->setTime(0, 0, 0);
128
                $start = $dtStart->format('Y-m-d H:i:s');
129
 
130
                $dtEnd->setTime(23, 59, 59);
131
                $end  = $dtEnd->format('Y-m-d H:i:s');
132
            }
133
 
134
 
135
            $events = [];
4113 efrain 136
 
4141 efrain 137
 
138
 
139
            $zoomMeetingMapper = ZoomMeetingMapper::getInstance($this->adapter);
140
 
141
            $calendarEventMapper = CalendarEventMapper::getInstance($this->adapter);
142
            $records = $calendarEventMapper->fetchAllByUserIdAndStartTimeAndEndTime($currentUser->id, $start, $end);
143
            foreach($records as $record)
144
            {
145
                switch($record->type)
146
                {
147
                    case CalendarEvent::TYPE_ZOOM :
148
                        $zoomMeeting = $zoomMeetingMapper->fetchOne($record->relational_id);
149
                        if($zoomMeeting) {
150
 
151
 
152
                            if($currentUser->timezone && $currentUser->timezone != $zoomMeeting->timezone) {
153
 
154
                                $start =  str_replace(' ', 'T', Functions::convertDateTimeBetweenTimeZones($zoomMeeting->start_time, $zoomMeeting->timezone, $currentUser->timezone));
155
                                $end =  str_replace(' ', 'T', Functions::convertDateTimeBetweenTimeZones($zoomMeeting->end_time, $zoomMeeting->timezone, $currentUser->timezone));
156
 
157
 
158
 
159
 
160
 
161
                            } else {
162
                                $start = str_replace(' ', 'T', $zoomMeeting->start_time);
163
                                $end = str_replace(' ', 'T', $zoomMeeting->end_time);
164
                            }
165
 
166
 
167
                            $agenda = "<a href=\"{$zoomMeeting->join_url}\" target=\"_blank\">" .  $zoomMeeting->agenda . "<br>" .
168
                                " LABEL_ZOOM_MEETING_START_DATE : " . $dtStart->format('Y-m-d') . "<br>" .
169
                                " LABEL_ZOOM_MEETING_START_TIME : " . $dtStart->format('H:i a') . "<br>" .
170
                                " LABEL_ZOOM_MEETING_TIMEZONE : " . $zoomMeeting->timezone . "<br>" .
171
                                " LABEL_ZOOM_MEETING_TITLE :  " . $zoomMeeting->topic  . "<br>" .
172
                                " LABEL_ZOOM_MEETING_URL : " . $zoomMeeting->join_url . "<br>" .
173
                                " LABEL_ZOOM_MEETING_PASSWORD : " . $zoomMeeting->password . "<br>" .
174
                                "</a>";
175
 
176
                            array_push($events, [
177
                                'id'                => $zoomMeeting->id,
4148 efrain 178
                                'title'             => $zoomMeeting->topic,
4141 efrain 179
                                'agenda'            => $agenda,
180
                                'start'             => $start,
181
                                'end'               => $end,
182
                                'url'               => $zoomMeeting->join_url,
183
                                'backgroundColor'   => $contract,
184
                                'textColor'         => $textColor
185
                            ]);
186
                        }
187
                        break;
188
 
189
 
190
                }
191
 
192
 
193
 
194
            }
195
 
196
 
197
 
198
 
199
 
200
 
201
 
202
 
4113 efrain 203
 
204
 
4141 efrain 205
            return new JsonModel($events);
4113 efrain 206
 
4141 efrain 207
        } else {
208
            $response = [
209
                'success' => false,
210
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
211
            ];
212
        }
4113 efrain 213
 
4141 efrain 214
        return new JsonModel($response);
4113 efrain 215
    }
216
 
217
 
218
 
219
 
220
}