Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 14692 | Rev 16182 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 14692 Rev 16181
Línea 1... Línea 1...
1
<?php
1
<?php
-
 
2
 
2
declare(strict_types = 1);
3
declare(strict_types=1);
-
 
4
 
3
namespace LeadersLinked\Controller;
5
namespace LeadersLinked\Controller;
Línea 4... Línea 6...
4
 
6
 
5
use Laminas\Db\Adapter\AdapterInterface;
-
 
6
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
-
 
7
use Laminas\Mvc\Controller\AbstractActionController;
7
use LeadersLinked\Library\Zoom;
8
use Laminas\Log\LoggerInterface;
8
use Laminas\Log\LoggerInterface;
9
use Laminas\View\Model\JsonModel;
9
use Laminas\View\Model\JsonModel;
-
 
10
use Laminas\View\Model\ViewModel;
-
 
11
use LeadersLinked\Model\ChatUser;
-
 
12
use LeadersLinked\Model\ChatGroup;
10
use Laminas\View\Model\ViewModel;
13
use LeadersLinked\Model\Connection;
11
use LeadersLinked\Library\Functions;
14
use LeadersLinked\Library\Functions;
12
use LeadersLinked\Mapper\UserMapper;
-
 
13
use LeadersLinked\Mapper\ConnectionMapper;
-
 
14
use LeadersLinked\Mapper\ChatMessageMapper;
-
 
15
use LeadersLinked\Mapper\ChatGroupMapper;
-
 
16
use LeadersLinked\Mapper\ChatGroupMessageMapper;
-
 
17
use LeadersLinked\Mapper\ChatGroupUserMessageMapper;
15
use LeadersLinked\Mapper\UserMapper;
18
use LeadersLinked\Mapper\ChatUserMapper;
16
use LeadersLinked\Mapper\UtilMapper;
-
 
17
use LeadersLinked\Model\ChatMessage;
-
 
18
use LeadersLinked\Model\ZoomMeeting;
-
 
19
use LeadersLinked\Model\ChatGroupUser;
-
 
20
use Laminas\Db\Adapter\AdapterInterface;
-
 
21
use LeadersLinked\Form\Chat\ZoomAddForm;
-
 
22
use LeadersLinked\Mapper\ChatUserMapper;
-
 
23
use LeadersLinked\Model\ZoomMeetingUser;
19
use LeadersLinked\Model\ChatMessage;
24
use LeadersLinked\Mapper\ChatGroupMapper;
20
use LeadersLinked\Model\ChatGroupMessage;
-
 
21
use LeadersLinked\Model\ChatGroupUserMessage;
25
use LeadersLinked\Model\ChatGroupMessage;
22
use LeadersLinked\Model\Connection;
-
 
23
use LeadersLinked\Model\ChatGroup;
-
 
24
use LeadersLinked\Model\ChatUser;
26
use LeadersLinked\Mapper\ConnectionMapper;
-
 
27
use LeadersLinked\Form\CreateChatGroupForm;
-
 
28
use LeadersLinked\Mapper\ChatMessageMapper;
25
use LeadersLinked\Form\CreateChatGroupForm;
29
use LeadersLinked\Mapper\ZoomMeetingMapper;
26
use LeadersLinked\Mapper\ChatGroupUserMapper;
30
use LeadersLinked\Mapper\ChatGroupUserMapper;
27
use LeadersLinked\Model\ChatGroupUser;
31
use LeadersLinked\Model\ChatGroupUserMessage;
-
 
32
use LeadersLinked\Mapper\ZoomMeetingUserMapper;
-
 
33
use LeadersLinked\Mapper\ChatGroupMessageMapper;
-
 
34
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
-
 
35
use Laminas\Mvc\Controller\AbstractActionController;
Línea 28... Línea 36...
28
use LeadersLinked\Mapper\UtilMapper;
36
use LeadersLinked\Mapper\ChatGroupUserMessageMapper;
29
 
37
 
30
 
38
 
31
class ChatController extends AbstractActionController
39
class ChatController extends AbstractActionController
32
{ 
40
{
33
    /**
41
    /**
34
     *
42
     *
Línea 65... Línea 73...
65
    {
73
    {
66
        $this->adapter  = $adapter;
74
        $this->adapter  = $adapter;
67
        $this->cache    = $cache;
75
        $this->cache    = $cache;
68
        $this->logger   = $logger;
76
        $this->logger   = $logger;
69
        $this->config   = $config;
77
        $this->config   = $config;
70
        
-
 
71
 
-
 
72
 
-
 
73
    }
78
    }
74
    
79
 
75
    /**
80
    /**
76
     *
81
     *
77
     * Ruta usada para mostrar el chat en pantalla completa usada en los moviles
82
     * Ruta usada para mostrar el chat en pantalla completa usada en los moviles
78
     * 
83
     * 
79
     */
84
     */
80
    public function indexAction()
85
    public function indexAction()
81
    {
86
    {
82
        $currentUserPlugin = $this->plugin('currentUserPlugin');
87
        $currentUserPlugin = $this->plugin('currentUserPlugin');
83
        $currentUser = $currentUserPlugin->getUser();
88
        $currentUser = $currentUserPlugin->getUser();
84
        
89
 
85
        $connectionMapper = ConnectionMapper:: getInstance($this->adapter);
90
        $connectionMapper = ConnectionMapper::getInstance($this->adapter);
86
        $connectionIds = $connectionMapper->fetchAllConnectionsByUserReturnIds( $currentUser->id );
91
        $connectionIds = $connectionMapper->fetchAllConnectionsByUserReturnIds($currentUser->id);
87
        
92
 
88
        $contacts = [];
93
        $contacts = [];
89
        if($connectionIds) {
94
        if ($connectionIds) {
90
            $userMapper = UserMapper::getInstance($this->adapter);
95
            $userMapper = UserMapper::getInstance($this->adapter);
91
            $users = $userMapper->fetchAllByIds($connectionIds);
96
            $users = $userMapper->fetchAllByIds($connectionIds);
92
            
97
 
93
            foreach($users as $user)
98
            foreach ($users as $user) {
94
            {
-
 
95
                $username = trim($user->first_name . ' ' . $user->last_name);
99
                $username = trim($user->first_name . ' ' . $user->last_name);
96
                $status = $user->online ? 'Online' : 'Offline';
100
                $status = $user->online ? 'Online' : 'Offline';
97
                $user_image = $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]);
101
                $user_image = $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]);
98
                
102
 
99
                array_push($contacts, ['id' => $user->uuid, 'status'=> $status,'name'=> $username, 'image' => $user_image]);
103
                array_push($contacts, ['id' => $user->uuid, 'status' => $status, 'name' => $username, 'image' => $user_image]);
100
                
-
 
101
            }
104
            }
102
        }
105
        }
103
        
106
 
104
        $groups = [];
107
        $groups = [];
105
        $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
108
        $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
106
        $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
109
        $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
107
        
110
 
108
        $results = $chatGroupUserMapper->fetchAllByUserId($currentUser->id);
111
        $results = $chatGroupUserMapper->fetchAllByUserId($currentUser->id);
109
        if(is_array($results)) {
112
        if (is_array($results)) {
110
            foreach ($results as $r) 
113
            foreach ($results as $r) {
111
            {
-
 
112
                
114
 
113
                $chatOwner = $chatGroupUserMapper->fetchOwnerByGroupId($r->group_id);
115
                $chatOwner = $chatGroupUserMapper->fetchOwnerByGroupId($r->group_id);
114
                $userOwner = $userMapper->fetchOne( $chatOwner->user_id );
116
                $userOwner = $userMapper->fetchOne($chatOwner->user_id);
115
                $chatGroup = $chatGroupMapper->fetchOne($r->group_id);
117
                $chatGroup = $chatGroupMapper->fetchOne($r->group_id);
116
                
118
 
117
                array_push($groups, ['id' => $chatGroup->uuid, 'name' => $chatGroup->name, 'owner_id' => $userOwner->uuid ]);
119
                array_push($groups, ['id' => $chatGroup->uuid, 'name' => $chatGroup->name, 'owner_id' => $userOwner->uuid]);
118
                
-
 
119
                
-
 
120
                
-
 
121
            }
120
            }
122
        }
121
        }
123
        
122
 
124
        /*
123
        /*
125
        $this->layout()->setTemplate('layout/layout-chat.phtml');
124
        $this->layout()->setTemplate('layout/layout-chat.phtml');
126
        $this->layout()->setVariables([
125
        $this->layout()->setVariables([
127
            'is_chat' => true
126
            'is_chat' => true
128
        ]);*/
127
        ]);*/
129
        $this->layout()->setTemplate('layout/layout-backend');
128
        $this->layout()->setTemplate('layout/layout-backend');
130
        $viewModel = new ViewModel();
129
        $viewModel = new ViewModel();
131
        $viewModel->setTemplate('leaders-linked/chat/chat.phtml');
130
        $viewModel->setTemplate('leaders-linked/chat/chat.phtml');
132
        $viewModel->setVariables([
131
        $viewModel->setVariables([
133
            'contacts' => $contacts, 
132
            'contacts' => $contacts,
134
            'groups' => $groups, 
133
            'groups' => $groups,
135
            'user_id' => $currentUser->id,
134
            'user_id' => $currentUser->id,
136
            'is_chat' => true
135
            'is_chat' => true
137
        ]);
136
        ]);
138
        return $viewModel ;
137
        return $viewModel;
139
       
-
 
140
        
-
 
141
    }
138
    }
142
    
139
 
143
    /**
140
    /**
144
     * Recuperamos los contactos y grupos 
141
     * Recuperamos los contactos y grupos 
145
     * tiene que enviarse un petición GET a la siguiente url: /chat/heart-beat
142
     * tiene que enviarse un petición GET a la siguiente url: /chat/heart-beat
146
     * retorna un json en caso de ser  positivo
143
     * retorna un json en caso de ser  positivo
147
     * [
144
     * [
Línea 204... Línea 201...
204
     * ]
201
     * ]
205
     * @return \Laminas\View\Model\JsonModel
202
     * @return \Laminas\View\Model\JsonModel
206
     */
203
     */
207
    public function heartBeatAction()
204
    public function heartBeatAction()
208
    {
205
    {
209
       
206
 
210
        $request    = $this->getRequest();
207
        $request    = $this->getRequest();
211
        if($request->isGet()) {
208
        if ($request->isGet()) {
212
          
209
 
213
          
210
 
214
            $currentUserPlugin = $this->plugin('currentUserPlugin');
211
            $currentUserPlugin = $this->plugin('currentUserPlugin');
215
            $currentUser = $currentUserPlugin->getUser();
212
            $currentUser = $currentUserPlugin->getUser();
Línea 216... Línea 213...
216
 
213
 
217
            $userMapper = UserMapper::getInstance($this->adapter);
214
            $userMapper = UserMapper::getInstance($this->adapter);
Línea 218... Línea 215...
218
            $userMapper->updateChatOnlineStatus($currentUser->id);
215
            $userMapper->updateChatOnlineStatus($currentUser->id);
219
 
216
 
220
            $chats      = [];
217
            $chats      = [];
221
            
218
 
222
            $chatGroupMapper            = ChatGroupMapper::getInstance($this->adapter);
219
            $chatGroupMapper            = ChatGroupMapper::getInstance($this->adapter);
223
            $chatGroupUserMapper        = ChatGroupUserMapper::getInstance($this->adapter);
220
            $chatGroupUserMapper        = ChatGroupUserMapper::getInstance($this->adapter);
224
            $chatGroupUserMessageMapper = ChatGroupUserMessageMapper::getInstance($this->adapter);
221
            $chatGroupUserMessageMapper = ChatGroupUserMessageMapper::getInstance($this->adapter);
225
           
222
 
226
            
223
 
227
            $results = $chatGroupUserMapper->fetchAllByUserId($currentUser->id);
224
            $results = $chatGroupUserMapper->fetchAllByUserId($currentUser->id);
228
            
225
 
229
            if (is_array($results)) {
-
 
230
                foreach ($results as $r) 
226
            if (is_array($results)) {
231
                {
227
                foreach ($results as $r) {
232
                    
228
 
233
                    $chatGroup = $chatGroupMapper->fetchOne($r->group_id); 
229
                    $chatGroup = $chatGroupMapper->fetchOne($r->group_id);
234
                    $chatUserOwner = $chatGroupUserMapper->fetchOwnerByGroupId($chatGroup->id);
230
                    $chatUserOwner = $chatGroupUserMapper->fetchOwnerByGroupId($chatGroup->id);
235
                    $chatUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
231
                    $chatUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
236
                    
232
 
237
                    
233
 
238
                    $is_open = $chatUser->open == ChatUser::OPEN_YES;
234
                    $is_open = $chatUser->open == ChatUser::OPEN_YES;
239
                    $not_seen_messages     = $chatGroupUserMessageMapper->existNotSeenMessages($chatGroup->id, $currentUser->id);
235
                    $not_seen_messages     = $chatGroupUserMessageMapper->existNotSeenMessages($chatGroup->id, $currentUser->id);
240
                    $not_received_messages = $chatGroupUserMessageMapper->existNotReceivedMessages($chatGroup->id, $currentUser->id);
236
                    $not_received_messages = $chatGroupUserMessageMapper->existNotReceivedMessages($chatGroup->id, $currentUser->id);
241
                    if($chatGroup->high_performance_team_group_id!=NULL){
237
                    if ($chatGroup->high_performance_team_group_id != NULL) {
242
                        $chat = [
238
                        $chat = [
243
                            'url_leave'                             => '',
239
                            'url_leave'                             => '',
244
                            'url_delete'                            => '',
240
                            'url_delete'                            => '',
Línea 257... Línea 253...
257
                            'name'                                  => $chatGroup->name,
253
                            'name'                                  => $chatGroup->name,
258
                            'type'                                  => 'group',
254
                            'type'                                  => 'group',
259
                            'is_open'                               => $is_open ? 1 : 0,
255
                            'is_open'                               => $is_open ? 1 : 0,
260
                            'not_seen_messages'                     => $not_seen_messages,
256
                            'not_seen_messages'                     => $not_seen_messages,
261
                            'not_received_messages'                 => $not_received_messages,
257
                            'not_received_messages'                 => $not_received_messages,
262
                            
258
 
263
                        ];
259
                        ];
264
                    }else{
260
                    } else {
265
                        if($chatUserOwner->user_id == $currentUser->id ) {
261
                        if ($chatUserOwner->user_id == $currentUser->id) {
266
                        
262
 
267
                            $chat = [
263
                            $chat = [
268
                                'url_leave'                             => '',
264
                                'url_leave'                             => '',
269
                                'url_delete'                            => $this->url()->fromRoute('chat/delete-group', ['group_id' => $chatGroup->uuid]),
265
                                'url_delete'                            => $this->url()->fromRoute('chat/delete-group', ['group_id' => $chatGroup->uuid]),
270
                                'url_add_user_to_group'                 => $this->url()->fromRoute('chat/add-user-to-group', ['group_id' => $chatGroup->uuid]),
266
                                'url_add_user_to_group'                 => $this->url()->fromRoute('chat/add-user-to-group', ['group_id' => $chatGroup->uuid]),
271
                                'url_get_contact_group_list'            => $this->url()->fromRoute('chat/get-contact-group-list', ['group_id' => $chatGroup->uuid]),
267
                                'url_get_contact_group_list'            => $this->url()->fromRoute('chat/get-contact-group-list', ['group_id' => $chatGroup->uuid]),
Línea 282... Línea 278...
282
                                'name'                                  => $chatGroup->name,
278
                                'name'                                  => $chatGroup->name,
283
                                'type'                                  => 'group',
279
                                'type'                                  => 'group',
284
                                'is_open'                               => $is_open ? 1 : 0,
280
                                'is_open'                               => $is_open ? 1 : 0,
285
                                'not_seen_messages'                     => $not_seen_messages,
281
                                'not_seen_messages'                     => $not_seen_messages,
286
                                'not_received_messages'                 => $not_received_messages,
282
                                'not_received_messages'                 => $not_received_messages,
287
                                
283
 
288
                            ];
284
                            ];
289
                        } else {
285
                        } else {
290
                     
286
 
291
                            $chat = [
287
                            $chat = [
292
                                'url_delete'                    => '',
288
                                'url_delete'                    => '',
293
                                'url_add_user_to_group'         => '',
289
                                'url_add_user_to_group'         => '',
294
                                'url_get_contact_group_list'    => $this->url()->fromRoute('chat/get-contact-group-list', ['group_id' => $chatGroup->uuid]),
290
                                'url_get_contact_group_list'    => $this->url()->fromRoute('chat/get-contact-group-list', ['group_id' => $chatGroup->uuid]),
295
                                'url_leave'                     => $this->url()->fromRoute('chat/leave-group', ['group_id' => $chatGroup->uuid]),
291
                                'url_leave'                     => $this->url()->fromRoute('chat/leave-group', ['group_id' => $chatGroup->uuid]),
Línea 308... Línea 304...
308
                                'not_seen_messages'             => $not_seen_messages,
304
                                'not_seen_messages'             => $not_seen_messages,
309
                                'not_received_messages'         => $not_received_messages,
305
                                'not_received_messages'         => $not_received_messages,
310
                            ];
306
                            ];
311
                        }
307
                        }
312
                    }
308
                    }
313
                   
-
 
Línea -... Línea 309...
-
 
309
 
314
 
310
 
315
                   array_push($chats, $chat);
311
                    array_push($chats, $chat);
316
                }
312
                }
317
            }
313
            }
318
            
314
 
319
            $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
315
            $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
320
            $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
316
            $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
321
            
317
 
322
            $connectionMapper = ConnectionMapper::getInstance($this->adapter);
318
            $connectionMapper = ConnectionMapper::getInstance($this->adapter);
Línea 323... Línea 319...
323
            $connectionIds = $connectionMapper->fetchAllConnectionsByUserReturnIds($currentUser->id);
319
            $connectionIds = $connectionMapper->fetchAllConnectionsByUserReturnIds($currentUser->id);
324
 
320
 
325
            
321
 
326
           
322
 
327
            if ($connectionIds) {
323
            if ($connectionIds) {
328
                 
324
 
329
                $userMapper = UserMapper::getInstance($this->adapter);
-
 
330
                $users = $userMapper->fetchAllByIds($connectionIds);
-
 
331
                
-
 
Línea -... Línea 325...
-
 
325
                $userMapper = UserMapper::getInstance($this->adapter);
332
                foreach ($users as $user) 
326
                $users = $userMapper->fetchAllByIds($connectionIds);
-
 
327
 
333
                {
328
                foreach ($users as $user) {
334
 
329
 
335
                    
330
 
336
                    
331
 
337
                    $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
332
                    $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
338
                    
333
 
339
                    
334
 
340
                    if($chatUser) {
335
                    if ($chatUser) {
341
                        
336
 
342
                        if($currentUser->id == $chatUser->user_id1) {
337
                        if ($currentUser->id == $chatUser->user_id1) {
343
                            $is_open = $chatUser->user_open1 == ChatUser::OPEN_YES;
338
                            $is_open = $chatUser->user_open1 == ChatUser::OPEN_YES;
344
                        } else {
339
                        } else {
Línea 349... Línea 344...
349
                    } else {
344
                    } else {
350
                        $is_open = false;
345
                        $is_open = false;
351
                        $not_seen_messages = false;
346
                        $not_seen_messages = false;
352
                        $not_received_messages = false;
347
                        $not_received_messages = false;
353
                    }
348
                    }
354
                   
349
 
355
                    
350
 
356
                    $chat = [
351
                    $chat = [
357
                        'url_clear'                 => $this->url()->fromRoute('chat/clear', ['id' => $user->uuid]),
352
                        'url_clear'                 => $this->url()->fromRoute('chat/clear', ['id' => $user->uuid]),
358
                        'url_close'                 => $this->url()->fromRoute('chat/close', ['id' => $user->uuid]),
353
                        'url_close'                 => $this->url()->fromRoute('chat/close', ['id' => $user->uuid]),
359
                        'url_open'                  => $this->url()->fromRoute('chat/open', ['id' => $user->uuid]),
354
                        'url_open'                  => $this->url()->fromRoute('chat/open', ['id' => $user->uuid]),
360
                        'url_send'                  => $this->url()->fromRoute('chat/send', ['id' => $user->uuid]),
355
                        'url_send'                  => $this->url()->fromRoute('chat/send', ['id' => $user->uuid]),
Línea 370... Línea 365...
370
                        'online'                    => $user->online ? 1 : 0,
365
                        'online'                    => $user->online ? 1 : 0,
371
                        'is_open'                   => $is_open ? 1 : 0,
366
                        'is_open'                   => $is_open ? 1 : 0,
372
                        'not_seen_messages'         => $not_seen_messages,
367
                        'not_seen_messages'         => $not_seen_messages,
373
                        'not_received_messages'     => $not_received_messages,
368
                        'not_received_messages'     => $not_received_messages,
374
                    ];
369
                    ];
375
                 
370
 
376
                    array_push($chats, $chat);
371
                    array_push($chats, $chat);
377
                }
372
                }
378
            }
373
            }
379
          
374
 
380
            $userMapper->updateLastHeartBeat($currentUser->id);
375
            $userMapper->updateLastHeartBeat($currentUser->id);
Línea 381... Línea 376...
381
 
376
 
382
            $response = [
377
            $response = [
383
                'success' => true,
378
                'success' => true,
384
                'data' => $chats
379
                'data' => $chats
385
            ];
-
 
386
            
380
            ];
387
        } else {
381
        } else {
388
            $response = [
382
            $response = [
389
                'success' => false,
383
                'success' => false,
390
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
384
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
391
            ];
385
            ];
392
        }
386
        }
393
        
387
 
394
        return new JsonModel($response);
388
        return new JsonModel($response);
395
    }
389
    }
396
    
390
 
Línea 397... Línea 391...
397
  
391
 
398
 
392
 
399
    /**
393
    /**
400
     * Esta función crea un grupo y asigna al usuario actual como el owner del mismo, 
394
     * Esta función crea un grupo y asigna al usuario actual como el owner del mismo, 
Línea 423... Línea 417...
423
     * @return \Laminas\View\Model\JsonModel
417
     * @return \Laminas\View\Model\JsonModel
424
     */
418
     */
425
    public function createGroupAction()
419
    public function createGroupAction()
426
    {
420
    {
427
        $request    = $this->getRequest();
421
        $request    = $this->getRequest();
428
        if($request->isPost()) {
422
        if ($request->isPost()) {
429
            $form = new  CreateChatGroupForm();
423
            $form = new  CreateChatGroupForm();
430
            $form->setData($request->getPost()->toArray());
424
            $form->setData($request->getPost()->toArray());
431
            
425
 
432
            if($form->isValid()) {
426
            if ($form->isValid()) {
433
                $dataPost = (array) $form->getData();
427
                $dataPost = (array) $form->getData();
434
                $name = $dataPost['name'];
428
                $name = $dataPost['name'];
435
                
429
 
436
            
430
 
437
                $currentUserPlugin = $this->plugin('currentUserPlugin');
431
                $currentUserPlugin = $this->plugin('currentUserPlugin');
438
                $currentUser = $currentUserPlugin->getUser();
432
                $currentUser = $currentUserPlugin->getUser();
439
       
433
 
440
                $chatGroup = new ChatGroup();
434
                $chatGroup = new ChatGroup();
441
                $chatGroup->name = $name;
435
                $chatGroup->name = $name;
Línea 442... Línea 436...
442
 
436
 
443
 
437
 
444
                $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
438
                $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
445
                $result = $chatGroupMapper->insert($chatGroup);
439
                $result = $chatGroupMapper->insert($chatGroup);
446
                if ($result) {
440
                if ($result) {
447
                    $chatGroup = $chatGroupMapper->fetchOne($chatGroup->id);
441
                    $chatGroup = $chatGroupMapper->fetchOne($chatGroup->id);
448
                    
442
 
449
                    
443
 
450
                    
444
 
451
                    $chatGroupUser = new ChatGroupUser();
445
                    $chatGroupUser = new ChatGroupUser();
452
                    $chatGroupUser->group_id = $chatGroup->id;
446
                    $chatGroupUser->group_id = $chatGroup->id;
453
                    $chatGroupUser->user_id = $currentUser->id;
447
                    $chatGroupUser->user_id = $currentUser->id;
454
                    $chatGroupUser->owner = ChatGroupUser::OWNER_YES;
448
                    $chatGroupUser->owner = ChatGroupUser::OWNER_YES;
455
                    
449
 
456
                    $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
450
                    $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
457
                    $result = $chatGroupUserMapper->insert($chatGroupUser);
451
                    $result = $chatGroupUserMapper->insert($chatGroupUser);
458
                    
452
 
459
                    if($result)  {
453
                    if ($result) {
460
                        $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
454
                        $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
461
                        $dirpath = $fullpath_chat . $chatGroup->uuid;
455
                        $dirpath = $fullpath_chat . $chatGroup->uuid;
462
                        if (! file_exists($dirpath)) {
456
                        if (!file_exists($dirpath)) {
463
                            mkdir($dirpath, 0777, true);
457
                            mkdir($dirpath, 0777, true);
464
                            chmod($dirpath, 0777);
458
                            chmod($dirpath, 0777);
465
                        }
459
                        }
466
            
460
 
467
                        $response = [
461
                        $response = [
468
                            'success' => true,
462
                            'success' => true,
469
                            'data' => $chatGroup->uuid,
463
                            'data' => $chatGroup->uuid,
470
                        ];
464
                        ];
471
                    } else {
465
                    } else {
472
                        $response = [
466
                        $response = [
473
                            'success' => false,
467
                            'success' => false,
474
                            'data' => $chatGroupUserMapper->getError(),
468
                            'data' => $chatGroupUserMapper->getError(),
475
                        ];
-
 
476
                    }
469
                        ];
477
                    
470
                    }
478
                } else {
471
                } else {
479
                    $response = [
472
                    $response = [
480
                        'success' => false,
473
                        'success' => false,
481
                        'data' => $chatGroupMapper->getError(),
474
                        'data' => $chatGroupMapper->getError(),
482
                    ];
475
                    ];
483
                }
476
                }
484
            } else {
477
            } else {
485
                $messages = [];
478
                $messages = [];
486
                $form_messages = (array) $form->getMessages();
-
 
487
                foreach($form_messages  as $fieldname => $field_messages)
479
                $form_messages = (array) $form->getMessages();
488
                {
480
                foreach ($form_messages  as $fieldname => $field_messages) {
489
                    
481
 
490
                    $messages[$fieldname] = array_values($field_messages);
482
                    $messages[$fieldname] = array_values($field_messages);
491
                }
483
                }
492
                
484
 
493
                return new JsonModel([
485
                return new JsonModel([
494
                    'success'   => false,
486
                    'success'   => false,
495
                    'data'   => $messages
487
                    'data'   => $messages
Línea 542... Línea 534...
542
     * @return \Laminas\View\Model\JsonModel
534
     * @return \Laminas\View\Model\JsonModel
543
     */
535
     */
544
    public function addUserToGroupAction()
536
    public function addUserToGroupAction()
545
    {
537
    {
546
        $request    = $this->getRequest();
538
        $request    = $this->getRequest();
547
        if($request->isPost()) {
539
        if ($request->isPost()) {
548
            $currentUserPlugin = $this->plugin('currentUserPlugin');
540
            $currentUserPlugin = $this->plugin('currentUserPlugin');
549
            $currentUser = $currentUserPlugin->getUser();
541
            $currentUser = $currentUserPlugin->getUser();
550
    
542
 
551
            $group_id   = $this->params()->fromRoute('group_id');
543
            $group_id   = $this->params()->fromRoute('group_id');
552
            $user_id    = $this->params()->fromPost('uid');
544
            $user_id    = $this->params()->fromPost('uid');
553
            
545
 
554
            if(empty($group_id) || empty($user_id)) {
546
            if (empty($group_id) || empty($user_id)) {
555
                return new JsonModel([
547
                return new JsonModel([
556
                    'success' => false,
548
                    'success' => false,
557
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
549
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
558
                ]);
550
                ]);
559
            }
551
            }
560
    
552
 
561
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
553
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
562
            $chatGroup = $chatGroupMapper->fetchOneByUuid($group_id);
554
            $chatGroup = $chatGroupMapper->fetchOneByUuid($group_id);
563
            if(!$chatGroup) {
555
            if (!$chatGroup) {
564
                return new JsonModel([
556
                return new JsonModel([
565
                    'success' => false,
557
                    'success' => false,
566
                    'data' => 'ERROR_CHAT_GROUP_NOT_FOUND'
558
                    'data' => 'ERROR_CHAT_GROUP_NOT_FOUND'
567
                ]);
559
                ]);
568
            }
560
            }
569
            if($chatGroup->high_performance_team_group_id!=NULL){
561
            if ($chatGroup->high_performance_team_group_id != NULL) {
570
                return new JsonModel([
562
                return new JsonModel([
571
                    'success' => false,
563
                    'success' => false,
572
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
564
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
573
                ]);
565
                ]);
574
            }
566
            }
575
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
567
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
576
            $chatGroupOwner = $chatGroupUserMapper->fetchOwnerByGroupId($chatGroup->id);
568
            $chatGroupOwner = $chatGroupUserMapper->fetchOwnerByGroupId($chatGroup->id);
577
                
569
 
578
            if($chatGroupOwner->user_id != $currentUser->id) {
570
            if ($chatGroupOwner->user_id != $currentUser->id) {
579
                return new JsonModel([
571
                return new JsonModel([
580
                    'success' => false,
572
                    'success' => false,
581
                    'data' => 'ERROR_CHAT_GROUP_YOU_ARE_NOT_OWNER'
573
                    'data' => 'ERROR_CHAT_GROUP_YOU_ARE_NOT_OWNER'
582
                ]);
574
                ]);
583
            }
575
            }
584
           
576
 
585
            $userMapper = UserMapper::getInstance($this->adapter);
577
            $userMapper = UserMapper::getInstance($this->adapter);
586
            $user = $userMapper->fetchOneByUuid($user_id);
578
            $user = $userMapper->fetchOneByUuid($user_id);
587
                    
579
 
588
            if(!$user) {
580
            if (!$user) {
589
                return new JsonModel([
581
                return new JsonModel([
590
                    'success' => false,
582
                    'success' => false,
591
                    'data' => 'ERROR_USER_NOT_FOUND'
583
                    'data' => 'ERROR_USER_NOT_FOUND'
592
                ]);
584
                ]);
593
            }
585
            }
594
            
586
 
595
            if($chatGroupOwner->user_id == $user->id) {
587
            if ($chatGroupOwner->user_id == $user->id) {
596
                return new JsonModel([
588
                return new JsonModel([
597
                    'success' => false,
589
                    'success' => false,
598
                    'data' => 'ERROR_CHAT_I_CAN_NOT_ADD_HIMSELF'
590
                    'data' => 'ERROR_CHAT_I_CAN_NOT_ADD_HIMSELF'
599
                ]);
591
                ]);
600
            }
592
            }
601
                        
593
 
602
            
594
 
603
            $connectionMapper = ConnectionMapper::getInstance($this->adapter);
595
            $connectionMapper = ConnectionMapper::getInstance($this->adapter);
604
            $connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
596
            $connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
605
            if(!$connection) {
597
            if (!$connection) {
606
                return new JsonModel([
598
                return new JsonModel([
607
                    'success' => false,
599
                    'success' => false,
608
                    'data' => 'ERROR_THIS_USER_IS_NOT_A_CONNECTION'
600
                    'data' => 'ERROR_THIS_USER_IS_NOT_A_CONNECTION'
609
                ]);
601
                ]);
610
            }
602
            }
611
                            
603
 
612
            $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $user->id);
604
            $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $user->id);
613
            if($chatGroupUser) {
605
            if ($chatGroupUser) {
614
                return new JsonModel([
606
                return new JsonModel([
615
                    'success' => false,
607
                    'success' => false,
616
                    'data' => 'ERROR_THIS_USER_ALREADY_EXISTS_IN_THIS_GROUP'
608
                    'data' => 'ERROR_THIS_USER_ALREADY_EXISTS_IN_THIS_GROUP'
617
                ]);
609
                ]);
618
            }
610
            }
619
                                
611
 
Línea 620... Línea 612...
620
 
612
 
621
            $chatGroupUser = new ChatGroupUser();
613
            $chatGroupUser = new ChatGroupUser();
622
            $chatGroupUser->group_id    = $chatGroup->id;
614
            $chatGroupUser->group_id    = $chatGroup->id;
623
            $chatGroupUser->user_id     = $user->id;
615
            $chatGroupUser->user_id     = $user->id;
624
            $chatGroupUser->owner       = ChatGroupUser::OWNER_NO;
616
            $chatGroupUser->owner       = ChatGroupUser::OWNER_NO;
625
            
617
 
626
            $result = $chatGroupUserMapper->insert($chatGroupUser);
618
            $result = $chatGroupUserMapper->insert($chatGroupUser);
627
            if(!$result) {
619
            if (!$result) {
628
                return new JsonModel([
620
                return new JsonModel([
629
                    'success' => false,
621
                    'success' => false,
630
                    'data' => $chatGroupUserMapper->getError()
622
                    'data' => $chatGroupUserMapper->getError()
631
                ]);
623
                ]);
632
            }
624
            }
633
            
625
 
634
           
626
 
635
                                    
627
 
636
                                    
628
 
637
            return new JsonModel([
629
            return new JsonModel([
638
                'success' => true,
630
                'success' => true,
639
                'data' => [
631
                'data' => [
640
                    'url_remove_from_group' => $this->url()->fromRoute('chat/remove-user-from-group', ['group_id' => $chatGroup->uuid, 'user_id' => $user->uuid]),
632
                    'url_remove_from_group' => $this->url()->fromRoute('chat/remove-user-from-group', ['group_id' => $chatGroup->uuid, 'user_id' => $user->uuid]),
641
                    'id'        => $user->uuid,
633
                    'id'        => $user->uuid,
642
                    'name'      => trim($user->first_name . ' ' . $user->last_name),
634
                    'name'      => trim($user->first_name . ' ' . $user->last_name),
643
                    'image'     => $this->url()->fromRoute('storage', ['code' => $user->uuid, 'type' => 'user', 'filename' => $user->image]),
635
                    'image'     => $this->url()->fromRoute('storage', ['code' => $user->uuid, 'type' => 'user', 'filename' => $user->image]),
644
                    'type'      => 'user',
636
                    'type'      => 'user',
645
                    'online'    => $user->online,
637
                    'online'    => $user->online,
646
                ]
638
                ]
647
            ]);    
-
 
648
 
-
 
649
 
639
            ]);
650
        } else {
640
        } else {
651
            return new JsonModel([
641
            return new JsonModel([
652
                'success' => false,
642
                'success' => false,
653
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
643
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
654
            ]);
644
            ]);
655
        }
-
 
656
 
645
        }
Línea 657... Línea 646...
657
    }
646
    }
658
 
647
 
659
    /**
648
    /**
Línea 675... Línea 664...
675
     * @return \Laminas\View\Model\JsonModel
664
     * @return \Laminas\View\Model\JsonModel
676
     */
665
     */
677
    public function removeUserFromGroupAction()
666
    public function removeUserFromGroupAction()
678
    {
667
    {
679
        $request    = $this->getRequest();
668
        $request    = $this->getRequest();
680
        if($request->isPost()) {
669
        if ($request->isPost()) {
681
        
670
 
682
            $currentUserPlugin = $this->plugin('currentUserPlugin');
671
            $currentUserPlugin = $this->plugin('currentUserPlugin');
683
            $currentUser = $currentUserPlugin->getUser();
672
            $currentUser = $currentUserPlugin->getUser();
684
    
673
 
685
            $user_id = $this->params()->fromRoute('user_id');
674
            $user_id = $this->params()->fromRoute('user_id');
686
            $group_id = $this->params()->fromRoute('group_id');
675
            $group_id = $this->params()->fromRoute('group_id');
687
            
676
 
688
            if(empty($group_id) || empty($user_id)) {
677
            if (empty($group_id) || empty($user_id)) {
689
                return new JsonModel([
678
                return new JsonModel([
690
                    'success' => false,
679
                    'success' => false,
691
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
680
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
692
                ]);
681
                ]);
693
            }
682
            }
694
            
683
 
695
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
684
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
696
            $chatGroup = $chatGroupMapper->fetchOneByUuid($group_id);
685
            $chatGroup = $chatGroupMapper->fetchOneByUuid($group_id);
697
            if(!$chatGroup) {
686
            if (!$chatGroup) {
698
                return new JsonModel([
687
                return new JsonModel([
699
                    'success' => false,
688
                    'success' => false,
700
                    'data' => 'ERROR_CHAT_GROUP_NOT_FOUND'
689
                    'data' => 'ERROR_CHAT_GROUP_NOT_FOUND'
701
                ]);
690
                ]);
702
            }
691
            }
703
            if($chatGroup->high_performance_team_group_id!=NULL){
692
            if ($chatGroup->high_performance_team_group_id != NULL) {
704
                return new JsonModel([
693
                return new JsonModel([
705
                    'success' => false,
694
                    'success' => false,
706
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
695
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
707
                ]);
696
                ]);
708
            }
697
            }
709
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
698
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
710
            $chatGroupOwner = $chatGroupUserMapper->fetchOwnerByGroupId($chatGroup->id);
699
            $chatGroupOwner = $chatGroupUserMapper->fetchOwnerByGroupId($chatGroup->id);
711
            
700
 
712
            if($chatGroupOwner->user_id != $currentUser->id) {
701
            if ($chatGroupOwner->user_id != $currentUser->id) {
713
                return new JsonModel([
702
                return new JsonModel([
714
                    'success' => false,
703
                    'success' => false,
715
                    'data' => 'ERROR_CHAT_GROUP_YOU_ARE_NOT_OWNER'
704
                    'data' => 'ERROR_CHAT_GROUP_YOU_ARE_NOT_OWNER'
716
                ]);
705
                ]);
717
            }
706
            }
718
            
707
 
719
            $userMapper = UserMapper::getInstance($this->adapter);
708
            $userMapper = UserMapper::getInstance($this->adapter);
720
            $user = $userMapper->fetchOneByUuid($user_id);
709
            $user = $userMapper->fetchOneByUuid($user_id);
721
            
710
 
722
            if(!$user) {
711
            if (!$user) {
723
                return new JsonModel([
712
                return new JsonModel([
724
                    'success' => false,
713
                    'success' => false,
725
                    'data' => 'ERROR_USER_NOT_FOUND'
714
                    'data' => 'ERROR_USER_NOT_FOUND'
726
                ]);
715
                ]);
727
            }
716
            }
728
            
717
 
729
            if($chatGroupOwner->user_id == $user->id) {
718
            if ($chatGroupOwner->user_id == $user->id) {
730
                return new JsonModel([
719
                return new JsonModel([
731
                    'success' => false,
720
                    'success' => false,
732
                    'data' => 'ERROR_CHAT_I_CAN_NOT_REMOVE_MYSELF'
721
                    'data' => 'ERROR_CHAT_I_CAN_NOT_REMOVE_MYSELF'
733
                ]);
722
                ]);
734
            }
723
            }
735
            
724
 
736
            
725
 
737
 
726
 
Línea 738... Línea 727...
738
 
727
 
739
            $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $user->id);
728
            $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $user->id);
740
            if(!$chatGroupUser) {
729
            if (!$chatGroupUser) {
741
                return new JsonModel([
730
                return new JsonModel([
742
                    'success' => false,
731
                    'success' => false,
743
                    'data' => 'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
732
                    'data' => 'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
744
                ]);
733
                ]);
745
            }
734
            }
Línea 746... Línea 735...
746
            
735
 
747
 
736
 
748
            $response = $chatGroupUserMapper->deleteByGroupIdAndUserId($chatGroup->id, $user->id);
737
            $response = $chatGroupUserMapper->deleteByGroupIdAndUserId($chatGroup->id, $user->id);
749
            if($response) {
738
            if ($response) {
750
                return new JsonModel([
739
                return new JsonModel([
751
                    'success' => true
740
                    'success' => true
752
                ]);
741
                ]);
753
            } else {
742
            } else {
754
                return new JsonModel([
743
                return new JsonModel([
755
                    'success' => false,
744
                    'success' => false,
756
                    'data' => $chatGroupMapper->getError()
745
                    'data' => $chatGroupMapper->getError()
757
                ]);
-
 
758
            }
746
                ]);
759
        
747
            }
760
        } else {
748
        } else {
761
            return new JsonModel([
749
            return new JsonModel([
762
                'success' => false,
750
                'success' => false,
763
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
751
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
764
            ]);
752
            ]);
Línea 765... Línea 753...
765
        }
753
        }
766
    }
754
    }
767
 
755
 
768
    
756
 
769
    /**
757
    /**
770
     * Abandonar un grupo
758
     * Abandonar un grupo
Línea 783... Línea 771...
783
     * @return \Laminas\View\Model\JsonModel
771
     * @return \Laminas\View\Model\JsonModel
784
     */
772
     */
785
    public function leaveGroupAction()
773
    public function leaveGroupAction()
786
    {
774
    {
787
        $request    = $this->getRequest();
775
        $request    = $this->getRequest();
788
        if($request->isPost()) {
776
        if ($request->isPost()) {
789
            $currentUserPlugin = $this->plugin('currentUserPlugin');
777
            $currentUserPlugin = $this->plugin('currentUserPlugin');
790
            $currentUser = $currentUserPlugin->getUser();
778
            $currentUser = $currentUserPlugin->getUser();
791
            
779
 
792
            $result = false;
780
            $result = false;
793
            $group_id = $this->params()->fromRoute('group_id');
781
            $group_id = $this->params()->fromRoute('group_id');
794
            
782
 
795
            
783
 
796
            if(empty($group_id)) {
784
            if (empty($group_id)) {
797
                return new JsonModel([
785
                return new JsonModel([
798
                    'success' => false,
786
                    'success' => false,
799
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
787
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
800
                ]);
788
                ]);
801
            }
789
            }
802
            
790
 
803
            
791
 
804
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
792
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
805
            $chatGroup = $chatGroupMapper->fetchOneByUuid($group_id);
793
            $chatGroup = $chatGroupMapper->fetchOneByUuid($group_id);
806
            if(!$chatGroup) {
794
            if (!$chatGroup) {
807
                return new JsonModel([
795
                return new JsonModel([
808
                    'success' => false,
796
                    'success' => false,
809
                    'data' => 'ERROR_GROUP_NOT_FOUND'
797
                    'data' => 'ERROR_GROUP_NOT_FOUND'
810
                ]);
798
                ]);
811
            }
799
            }
812
            if($chatGroup->high_performance_team_group_id!=NULL){
800
            if ($chatGroup->high_performance_team_group_id != NULL) {
813
                return new JsonModel([
801
                return new JsonModel([
814
                    'success' => false,
802
                    'success' => false,
815
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
803
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
816
                ]);
804
                ]);
817
            }
805
            }
818
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
806
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
819
            $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
807
            $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
820
            if(!$chatGroupUser) {
808
            if (!$chatGroupUser) {
821
                return new JsonModel([
809
                return new JsonModel([
822
                    'success' => false,
810
                    'success' => false,
823
                    'data' => 'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
811
                    'data' => 'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
824
                ]);
812
                ]);
825
            }
813
            }
826
            
814
 
827
            if($chatGroupUser->owner == ChatGroupUser::OWNER_YES) {
815
            if ($chatGroupUser->owner == ChatGroupUser::OWNER_YES) {
828
                return new JsonModel([
816
                return new JsonModel([
829
                    'success' => false,
817
                    'success' => false,
830
                    'data' => 'ERROR_CHAT_GROUP_YOU_ARE_OWNER'
818
                    'data' => 'ERROR_CHAT_GROUP_YOU_ARE_OWNER'
831
                ]);
819
                ]);
832
            }
820
            }
833
            
821
 
834
            
822
 
835
            $result = $chatGroupUserMapper->deleteByGroupIdAndUserId($chatGroupUser->group_id, $chatGroupUser->user_id);
823
            $result = $chatGroupUserMapper->deleteByGroupIdAndUserId($chatGroupUser->group_id, $chatGroupUser->user_id);
836
            if($result) {
824
            if ($result) {
837
                return new JsonModel([
825
                return new JsonModel([
838
                    'success' => true
826
                    'success' => true
839
                ]);
827
                ]);
840
            } else {
828
            } else {
841
                return new JsonModel([
829
                return new JsonModel([
842
                    'success' => false,
830
                    'success' => false,
843
                    'data' => $chatGroupMapper->getError()
831
                    'data' => $chatGroupMapper->getError()
844
                ]);
832
                ]);
845
            }
833
            }
846
 
-
 
847
    
-
 
848
           
-
 
849
        } else {
834
        } else {
850
            return new JsonModel([
835
            return new JsonModel([
851
                'success' => false,
836
                'success' => false,
852
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
837
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
853
            ]);
838
            ]);
854
        }
839
        }
855
 
-
 
856
    }
840
    }
857
    
841
 
858
    /**
842
    /**
859
     * 
843
     * 
860
     * @param ChatGroup $chatGroup
844
     * @param ChatGroup $chatGroup
861
     * @param int $page
845
     * @param int $page
862
     * @return array
846
     * @return array
863
     */
847
     */
864
    private function getAllMessagesForChatGroup($chatGroup, $page = 0)
848
    private function getAllMessagesForChatGroup($chatGroup, $page = 0)
865
    {
849
    {
866
        $currentUserPlugin = $this->plugin('currentUserPlugin');
850
        $currentUserPlugin = $this->plugin('currentUserPlugin');
867
        $currentUser = $currentUserPlugin->getUser();
851
        $currentUser = $currentUserPlugin->getUser();
868
        
852
 
869
        $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
853
        $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
870
        $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
854
        $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
871
        
855
 
872
        if(!$chatGroupUser) {
856
        if (!$chatGroupUser) {
873
            return [
857
            return [
874
                'success' => false,
858
                'success' => false,
875
                'data' => 'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
859
                'data' => 'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
876
            ];
860
            ];
877
        }
861
        }
Línea 878... Línea 862...
878
 
862
 
879
        $chatGroupMessageMapper = ChatGroupMessageMapper::getInstance($this->adapter);
863
        $chatGroupMessageMapper = ChatGroupMessageMapper::getInstance($this->adapter);
880
        $paginator = $chatGroupMessageMapper->getPaginatorByGroupId($chatGroup->id, $page);
864
        $paginator = $chatGroupMessageMapper->getPaginatorByGroupId($chatGroup->id, $page);
881
        
865
 
882
        $pages = $paginator->count();
866
        $pages = $paginator->count();
883
        $page  = $paginator->getCurrentPageNumber();
867
        $page  = $paginator->getCurrentPageNumber();
884
        
868
 
885
        $items = [];
869
        $items = [];
886
        $users = [];
870
        $users = [];
887
        $userMapper = UserMapper::getInstance($this->adapter);
871
        $userMapper = UserMapper::getInstance($this->adapter);
888
        
872
 
889
        $utilMapper = UtilMapper::getInstance($this->adapter);
873
        $utilMapper = UtilMapper::getInstance($this->adapter);
890
        $now = $utilMapper->getDatebaseNow();
874
        $now = $utilMapper->getDatebaseNow();
891
        
875
 
892
        foreach ($paginator as $m) 
-
 
Línea 893... Línea 876...
893
        {
876
        foreach ($paginator as $m) {
894
 
877
 
895
            if (isset($users[$m->sender_id])) {
878
            if (isset($users[$m->sender_id])) {
896
                $userdata_from = $users[$m->sender_id];
879
                $userdata_from = $users[$m->sender_id];
897
            } else {
880
            } else {
898
                $userdata_from = $userMapper->fetchOne($m->sender_id);
881
                $userdata_from = $userMapper->fetchOne($m->sender_id);
899
                $users[ $m->sender_id ] = $userdata_from;
882
                $users[$m->sender_id] = $userdata_from;
900
            }
883
            }
901
            
884
 
902
            $pic_from = $this->url()->fromRoute('storage', [
885
            $pic_from = $this->url()->fromRoute('storage', [
903
                'code' => $userdata_from->uuid,
886
                'code' => $userdata_from->uuid,
904
                'type' => 'user',
887
                'type' => 'user',
905
                'filename' => $userdata_from->image
888
                'filename' => $userdata_from->image
906
            ]);
889
            ]);
907
            $u =  $userdata_from->id == $currentUser->id ? 1 : 2;
890
            $u =  $userdata_from->id == $currentUser->id ? 1 : 2;
908
            if($m->type == ChatGroupMessage::TYPE_TEXT) {
891
            if ($m->type == ChatGroupMessage::TYPE_TEXT) {
909
                $content = $this->sanitize($m->content);
892
                $content = $this->sanitize($m->content);
910
            } else {
893
            } else {
911
                $content = $this->url()->fromRoute('storage', ['code' => $chatGroup->uuid, 'type' => 'chat', 'filename' => $m->content]);
894
                $content = $this->url()->fromRoute('storage', ['code' => $chatGroup->uuid, 'type' => 'chat', 'filename' => $m->content]);
912
            }
895
            }
913
            
896
 
914
            $msgtime = $this->timeAgo($m->added_on, $now);
897
            $msgtime = $this->timeAgo($m->added_on, $now);
915
            array_push($items, [
898
            array_push($items, [
916
                'user_name' => trim($userdata_from->first_name . ' ' .$userdata_from->last_name) ,
899
                'user_name' => trim($userdata_from->first_name . ' ' . $userdata_from->last_name),
917
                'user_id' => $userdata_from->uuid,
900
                'user_id' => $userdata_from->uuid,
918
                'user_image' => $pic_from,
901
                'user_image' => $pic_from,
919
                'u' => $u,
902
                'u' => $u,
920
                'mtype' => $m->type,
903
                'mtype' => $m->type,
921
                'm' => $content,
904
                'm' => $content,
922
                'time' => $msgtime,
905
                'time' => $msgtime,
923
                'id' => $m->uuid
906
                'id' => $m->uuid
924
            ]);
907
            ]);
925
        }
908
        }
926
        
909
 
927
        return [
910
        return [
928
            'success' => true,
911
            'success' => true,
929
            'data' => [
912
            'data' => [
930
                'page' => $page,
913
                'page' => $page,
931
                'pages' => $pages,
914
                'pages' => $pages,
932
                'items' => $items
915
                'items' => $items
933
            ]
-
 
934
        ];
-
 
935
        
916
            ]
936
        
917
        ];
937
    }
918
    }
938
    
919
 
939
    /**
920
    /**
940
     *
921
     *
941
     * @param ChatUser $chatUser
922
     * @param ChatUser $chatUser
Línea 950... Línea 931...
950
 
931
 
951
        $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
932
        $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
952
        $paginator = $chatMessageMapper->getAllMessagesPaginatorByChatId($chatUser->id, $page);
933
        $paginator = $chatMessageMapper->getAllMessagesPaginatorByChatId($chatUser->id, $page);
953
        $pages = $paginator->count();
934
        $pages = $paginator->count();
954
        $page = $paginator->getCurrentPageNumber();
935
        $page = $paginator->getCurrentPageNumber();
955
        
936
 
956
        $items = [];
937
        $items = [];
957
        $users = [];
938
        $users = [];
958
        $userMapper = UserMapper::getInstance($this->adapter);
939
        $userMapper = UserMapper::getInstance($this->adapter);
959
        
940
 
960
        $utilMapper = UtilMapper::getInstance($this->adapter);
941
        $utilMapper = UtilMapper::getInstance($this->adapter);
961
        $now = $utilMapper->getDatebaseNow();
942
        $now = $utilMapper->getDatebaseNow();
962
        
943
 
963
        
944
 
964
        $messages = $paginator->getCurrentItems();
945
        $messages = $paginator->getCurrentItems();
965
        foreach ($messages as $m) {
946
        foreach ($messages as $m) {
966
            $from_id = (int) $m->from_id;
947
            $from_id = (int) $m->from_id;
967
            $to_id = (int) $m->to_id;
948
            $to_id = (int) $m->to_id;
968
            
949
 
969
            if (isset($users[$from_id])) {
950
            if (isset($users[$from_id])) {
970
                $userdata_from = $users[$from_id];
951
                $userdata_from = $users[$from_id];
971
            } else {
952
            } else {
972
                $userdata_from = $userMapper->fetchOne($from_id);
953
                $userdata_from = $userMapper->fetchOne($from_id);
973
                $users[$from_id] = $userdata_from;
954
                $users[$from_id] = $userdata_from;
974
            }
955
            }
975
            
956
 
976
            $pic_from = $this->url()->fromRoute('storage', [
957
            $pic_from = $this->url()->fromRoute('storage', [
977
                'code' => $userdata_from->uuid,
958
                'code' => $userdata_from->uuid,
978
                'type' => 'user',
959
                'type' => 'user',
979
                'filename' => $userdata_from->image
960
                'filename' => $userdata_from->image
980
            ]);
961
            ]);
981
            
962
 
982
            if (isset($users[$to_id])) {
963
            if (isset($users[$to_id])) {
983
                $userdata_to = $users[$to_id];
964
                $userdata_to = $users[$to_id];
984
            } else {
965
            } else {
985
                $userdata_to = $userMapper->fetchOne($to_id);
966
                $userdata_to = $userMapper->fetchOne($to_id);
986
                $users[ $to_id ] = $userdata_to;
967
                $users[$to_id] = $userdata_to;
987
            }
968
            }
988
            
969
 
989
            $u = $m->from_id == $currentUser->id ? 1 : 2;
970
            $u = $m->from_id == $currentUser->id ? 1 : 2;
990
            
971
 
991
            
972
 
992
            if($m->type == ChatMessage::TYPE_TEXT) {
973
            if ($m->type == ChatMessage::TYPE_TEXT) {
993
                $content = $this->sanitize($m->content);
974
                $content = $this->sanitize($m->content);
994
            } else {
975
            } else {
995
                $content = $this->url()->fromRoute('storage', ['code' => $chatUser->uuid, 'type' => 'chat', 'filename' => $m->content]);
976
                $content = $this->url()->fromRoute('storage', ['code' => $chatUser->uuid, 'type' => 'chat', 'filename' => $m->content]);
996
            }
977
            }
997
            
978
 
998
            
979
 
999
            
980
 
1000
            $msgtime = $this->timeAgo($m->added_on, $now);
981
            $msgtime = $this->timeAgo($m->added_on, $now);
1001
            array_push($items, [
982
            array_push($items, [
1002
                'user_name' => ($userdata_from->first_name . ' ' . $userdata_from->last_name),
983
                'user_name' => ($userdata_from->first_name . ' ' . $userdata_from->last_name),
1003
                'user_id' => $userdata_from->uuid,
984
                'user_id' => $userdata_from->uuid,
Línea 1007... Línea 988...
1007
                'm' => $content,
988
                'm' => $content,
1008
                'time' => $msgtime,
989
                'time' => $msgtime,
1009
                'id' => $m->uuid,
990
                'id' => $m->uuid,
1010
            ]);
991
            ]);
1011
        }
992
        }
1012
        
-
 
Línea -... Línea 993...
-
 
993
 
1013
 
994
 
1014
        
995
 
1015
        
996
 
1016
        return [
997
        return [
1017
            'success' => true,
998
            'success' => true,
1018
            'data' => [
999
            'data' => [
1019
                'page' => $page,
1000
                'page' => $page,
Línea 1052... Línea 1033...
1052
     * ]
1033
     * ]
1053
     * @return \Laminas\View\Model\JsonModel
1034
     * @return \Laminas\View\Model\JsonModel
1054
     */
1035
     */
1055
    public function getAllMessagesAction()
1036
    public function getAllMessagesAction()
1056
    {
1037
    {
1057
        
1038
 
1058
        $request    = $this->getRequest();
1039
        $request    = $this->getRequest();
1059
        if($request->isGet()) {
1040
        if ($request->isGet()) {
1060
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1041
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1061
            $currentUser = $currentUserPlugin->getUser();
1042
            $currentUser = $currentUserPlugin->getUser();
1062
            
1043
 
1063
        
1044
 
1064
            $id     = $this->params()->fromRoute('id');
1045
            $id     = $this->params()->fromRoute('id');
1065
            $page   = filter_var($this->params()->fromQuery('page', 0), FILTER_SANITIZE_NUMBER_INT);
1046
            $page   = filter_var($this->params()->fromQuery('page', 0), FILTER_SANITIZE_NUMBER_INT);
1066
            
1047
 
1067
            if(!$id) {
1048
            if (!$id) {
1068
                return new JsonModel([
1049
                return new JsonModel([
1069
                    'success' => false,
1050
                    'success' => false,
1070
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1051
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1071
                ]);
1052
                ]);
1072
            }
1053
            }
1073
        
1054
 
1074
            /**** Mensajes de un chat grupal ****/
1055
            /**** Mensajes de un chat grupal ****/
1075
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1056
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1076
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1057
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1077
            if ($chatGroup) {
1058
            if ($chatGroup) {
1078
                $response = $this->getAllMessagesForChatGroup($chatGroup, $page);
1059
                $response = $this->getAllMessagesForChatGroup($chatGroup, $page);
1079
                return new JsonModel($response);
1060
                return new JsonModel($response);
1080
            } else {
1061
            } else {
1081
                
1062
 
1082
                $userMapper = UserMapper::getInstance($this->adapter);
1063
                $userMapper = UserMapper::getInstance($this->adapter);
1083
                $user = $userMapper->fetchOneByUuid($id);
1064
                $user = $userMapper->fetchOneByUuid($id);
1084
                if(!$user) {
1065
                if (!$user) {
1085
                    return new JsonModel([
1066
                    return new JsonModel([
1086
                        'success' => false,
1067
                        'success' => false,
1087
                        'data' => 'ERROR_USER_NOT_FOUND'
1068
                        'data' => 'ERROR_USER_NOT_FOUND'
1088
                    ]);
1069
                    ]);
1089
                }
1070
                }
1090
                
1071
 
1091
                
1072
 
1092
                
1073
 
1093
                
1074
 
1094
                
1075
 
Línea 1095... Línea 1076...
1095
 
1076
 
1096
                $connectionMapper = ConnectionMapper::getInstance($this->adapter);
1077
                $connectionMapper = ConnectionMapper::getInstance($this->adapter);
1097
                $connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1078
                $connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1098
                if(!$connection || $connection->status != Connection::STATUS_ACCEPTED) {
1079
                if (!$connection || $connection->status != Connection::STATUS_ACCEPTED) {
1099
                    
1080
 
1100
                    return new JsonModel([
1081
                    return new JsonModel([
1101
                        'success' => false,
1082
                        'success' => false,
1102
                        'data' => 'ERROR_THIS_USER_IS_NOT_A_CONNECTION'
1083
                        'data' => 'ERROR_THIS_USER_IS_NOT_A_CONNECTION'
1103
                    ]);
-
 
1104
                    
1084
                    ]);
1105
                }
1085
                }
1106
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
1086
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
1107
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1087
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1108
                if(!$chatUser) {
1088
                if (!$chatUser) {
1109
                    $chatUser = new ChatUser();
1089
                    $chatUser = new ChatUser();
1110
                    $chatUser->user_id1 = $currentUser->id;
1090
                    $chatUser->user_id1 = $currentUser->id;
1111
                    $chatUser->user_id2 = $user->id;
1091
                    $chatUser->user_id2 = $user->id;
1112
                            
1092
 
1113
                    $response = $chatUserMapper->insert($chatUser);
1093
                    $response = $chatUserMapper->insert($chatUser);
1114
                    
1094
 
1115
                    
1095
 
1116
                    if(!$response) {
1096
                    if (!$response) {
1117
                        return new JsonModel([
1097
                        return new JsonModel([
1118
                            'success' => false,
1098
                            'success' => false,
1119
                            'data' => $chatUserMapper->getError()
1099
                            'data' => $chatUserMapper->getError()
1120
                        ]);
1100
                        ]);
1121
                    }
1101
                    }
1122
                    
1102
 
1123
                    $chatUser = $chatUserMapper->fetchOne($chatUser->id);
1103
                    $chatUser = $chatUserMapper->fetchOne($chatUser->id);
1124
                    $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
1104
                    $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
1125
                    $dirpath = $fullpath_chat . $chatUser->uuid;
1105
                    $dirpath = $fullpath_chat . $chatUser->uuid;
1126
                    if (! file_exists($dirpath)) {
1106
                    if (!file_exists($dirpath)) {
1127
                        mkdir($dirpath, 0777, true);
1107
                        mkdir($dirpath, 0777, true);
1128
                        chmod($dirpath, 0777);
1108
                        chmod($dirpath, 0777);
1129
                    }
-
 
1130
                            
1109
                    }
1131
                }
1110
                }
1132
                
1111
 
1133
    
1112
 
1134
                
1113
 
1135
                $response = $this->getAllMessagesForChatUser($chatUser, $page);
1114
                $response = $this->getAllMessagesForChatUser($chatUser, $page);
1136
                return new JsonModel($response);
-
 
1137
                
1115
                return new JsonModel($response);
1138
            }
-
 
1139
        
1116
            }
1140
        } else {
1117
        } else {
1141
            return new JsonModel([
1118
            return new JsonModel([
1142
                'success' => false,
1119
                'success' => false,
1143
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1120
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1144
            ]);
1121
            ]);
1145
        }
-
 
1146
 
1122
        }
Línea 1147... Línea 1123...
1147
    }
1123
    }
1148
 
1124
 
1149
    /**
1125
    /**
Línea 1161... Línea 1137...
1161
     *      'user_image' => 'ruta de la imagén del usuario que envia',
1137
     *      'user_image' => 'ruta de la imagén del usuario que envia',
1162
     *      'u' => '1 = si el usuario que envia es el usuario actual , 2 si no lo es',
1138
     *      'u' => '1 = si el usuario que envia es el usuario actual , 2 si no lo es',
1163
     *      'mtype' => 'text | file',
1139
     *      'mtype' => 'text | file',
1164
     *      'm' => 'texto del mensaje o url del archivo',
1140
     *      'm' => 'texto del mensaje o url del archivo',
1165
     *      'time' => 'cadena que da el tiempo del mensaje ejemplo 1seg',
1141
     *      'time' => 'cadena que da el tiempo del mensaje ejemplo 1seg',
1166
      * ]
1142
     * ]
1167
     * En caso de un respuesta negativa
1143
     * En caso de un respuesta negativa
1168
     * [
1144
     * [
1169
     *      'success' => false,
1145
     *      'success' => false,
1170
     *      'data' => (string) 'mensaje_de_error'
1146
     *      'data' => (string) 'mensaje_de_error'
1171
     * ]
1147
     * ]
1172
     * @return \Laminas\View\Model\JsonModel
1148
     * @return \Laminas\View\Model\JsonModel
1173
     */
1149
     */
1174
    public function sendAction()
1150
    public function sendAction()
1175
    {
1151
    {
1176
        
1152
 
1177
        $request    = $this->getRequest();
1153
        $request    = $this->getRequest();
1178
        if($request->isPost()) {
1154
        if ($request->isPost()) {
1179
            $id         = $this->params()->fromRoute('id');
1155
            $id         = $this->params()->fromRoute('id');
1180
            $message    = trim(filter_var($this->params()->fromPost('message', ''), FILTER_SANITIZE_STRING));
1156
            $message    = trim(filter_var($this->params()->fromPost('message', ''), FILTER_SANITIZE_STRING));
1181
            
1157
 
1182
            if(!$id || empty($message)) {
1158
            if (!$id || empty($message)) {
1183
                return new JsonModel([
1159
                return new JsonModel([
1184
                    'success' => false,
1160
                    'success' => false,
1185
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1161
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1186
                ]);
1162
                ]);
1187
            } 
1163
            }
1188
            
1164
 
1189
            $utilMapper = UtilMapper::getInstance($this->adapter);
1165
            $utilMapper = UtilMapper::getInstance($this->adapter);
1190
            $now = $utilMapper->getDatebaseNow();
1166
            $now = $utilMapper->getDatebaseNow();
1191
            
1167
 
1192
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1168
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1193
            $currentUser = $currentUserPlugin->getUser();
1169
            $currentUser = $currentUserPlugin->getUser();
1194
            
1170
 
1195
            $userMapper = UserMapper::getInstance($this->adapter);
1171
            $userMapper = UserMapper::getInstance($this->adapter);
1196
            $sender_result = $userMapper->fetchOne($currentUser->id);
1172
            $sender_result = $userMapper->fetchOne($currentUser->id);
1197
            $sender_name = trim($sender_result->first_name . ' ' . $sender_result->last_name);
1173
            $sender_name = trim($sender_result->first_name . ' ' . $sender_result->last_name);
1198
            $sender_pic = $this->url()->fromRoute('storage', [
1174
            $sender_pic = $this->url()->fromRoute('storage', [
1199
                'code' => $sender_result->uuid,
1175
                'code' => $sender_result->uuid,
1200
                'type' => 'user',
1176
                'type' => 'user',
1201
                'filename' => $sender_result->image
1177
                'filename' => $sender_result->image
1202
            ]);
1178
            ]);
1203
                
1179
 
1204
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1180
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1205
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1181
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1206
            if($chatGroup) {
1182
            if ($chatGroup) {
1207
                
1183
 
1208
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1184
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1209
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
1185
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
1210
                
1186
 
1211
                if(!$chatGroupUser) {
1187
                if (!$chatGroupUser) {
1212
                    return new JsonModel([
1188
                    return new JsonModel([
1213
                        'success' => false,
1189
                        'success' => false,
1214
                        'data' => 'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
1190
                        'data' => 'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
1215
                    ]);
1191
                    ]);
1216
                }
1192
                }
1217
                
1193
 
1218
                $chatGroupMessage = new ChatGroupMessage();
1194
                $chatGroupMessage = new ChatGroupMessage();
1219
                $chatGroupMessage->sender_id = $currentUser->id;
1195
                $chatGroupMessage->sender_id = $currentUser->id;
1220
                $chatGroupMessage->group_id = $chatGroup->id;
1196
                $chatGroupMessage->group_id = $chatGroup->id;
1221
                $chatGroupMessage->content = $message;
1197
                $chatGroupMessage->content = $message;
1222
                $chatGroupMessage->type = ChatGroupMessage::TYPE_TEXT;
1198
                $chatGroupMessage->type = ChatGroupMessage::TYPE_TEXT;
1223
                
1199
 
1224
                $chatGroupMessageMapper = ChatGroupMessageMapper::getInstance($this->adapter);
1200
                $chatGroupMessageMapper = ChatGroupMessageMapper::getInstance($this->adapter);
1225
                $result = $chatGroupMessageMapper->insert($chatGroupMessage);
1201
                $result = $chatGroupMessageMapper->insert($chatGroupMessage);
1226
                if(!$result) {
1202
                if (!$result) {
1227
                    return new JsonModel([
1203
                    return new JsonModel([
1228
                        'success' => false,
1204
                        'success' => false,
1229
                        'data' => $chatGroupMessageMapper->getError()
1205
                        'data' => $chatGroupMessageMapper->getError()
1230
                    ]);
1206
                    ]);
1231
                }
1207
                }
1232
                $chatGroupMessage = $chatGroupMessageMapper->fetchOne($chatGroupMessage->id);
1208
                $chatGroupMessage = $chatGroupMessageMapper->fetchOne($chatGroupMessage->id);
Línea 1233... Línea 1209...
1233
 
1209
 
1234
                    
1210
 
1235
                $chatGroupUserMessage = new ChatGroupUserMessage();
1211
                $chatGroupUserMessage = new ChatGroupUserMessage();
1236
                $chatGroupUserMessage->group_id = $chatGroupMessage->group_id;
1212
                $chatGroupUserMessage->group_id = $chatGroupMessage->group_id;
1237
                $chatGroupUserMessage->message_id = $chatGroupMessage->id;
1213
                $chatGroupUserMessage->message_id = $chatGroupMessage->id;
1238
                $chatGroupUserMessage->receiver_id = $currentUser->id;
1214
                $chatGroupUserMessage->receiver_id = $currentUser->id;
1239
                $chatGroupUserMessage->recd = ChatGroupUserMessage::RECD_YES;
1215
                $chatGroupUserMessage->recd = ChatGroupUserMessage::RECD_YES;
1240
                $chatGroupUserMessage->seen = ChatGroupUserMessage::SEEN_NO;
1216
                $chatGroupUserMessage->seen = ChatGroupUserMessage::SEEN_NO;
1241
                    
1217
 
1242
                $chatGroupUserMessageMapper = ChatGroupUserMessageMapper::getInstance($this->adapter);
1218
                $chatGroupUserMessageMapper = ChatGroupUserMessageMapper::getInstance($this->adapter);
1243
                $result = $chatGroupUserMessageMapper->insert($chatGroupUserMessage);
1219
                $result = $chatGroupUserMessageMapper->insert($chatGroupUserMessage);
1244
                if(!$result) {
1220
                if (!$result) {
1245
                    return new JsonModel([
1221
                    return new JsonModel([
1246
                        'success' => false,
1222
                        'success' => false,
1247
                        'data' => $chatGroupUserMessageMapper->getError()
1223
                        'data' => $chatGroupUserMessageMapper->getError()
1248
                    ]);
1224
                    ]);
1249
                }
1225
                }
1250
                
1226
 
1251
      
1227
 
1252
                $results = $chatGroupUserMapper->fetchAllByGroupId($chatGroup->id);
1228
                $results = $chatGroupUserMapper->fetchAllByGroupId($chatGroup->id);
1253
                foreach ($results as $r) 
-
 
1254
                {
1229
                foreach ($results as $r) {
1255
                    if ($r->user_id != $currentUser->id) {
1230
                    if ($r->user_id != $currentUser->id) {
1256
                        $chatGroupUserMessage               = new ChatGroupUserMessage();
1231
                        $chatGroupUserMessage               = new ChatGroupUserMessage();
1257
                        $chatGroupUserMessage->group_id     = $chatGroupMessage->group_id;
1232
                        $chatGroupUserMessage->group_id     = $chatGroupMessage->group_id;
1258
                        $chatGroupUserMessage->message_id   = $chatGroupMessage->id;
1233
                        $chatGroupUserMessage->message_id   = $chatGroupMessage->id;
1259
                        $chatGroupUserMessage->receiver_id  = $r->user_id;
1234
                        $chatGroupUserMessage->receiver_id  = $r->user_id;
1260
                        $chatGroupUserMessage->recd         = ChatGroupUserMessage::RECD_NO;
1235
                        $chatGroupUserMessage->recd         = ChatGroupUserMessage::RECD_NO;
1261
                        $chatGroupUserMessage->seen         = ChatGroupUserMessage::SEEN_NO;
1236
                        $chatGroupUserMessage->seen         = ChatGroupUserMessage::SEEN_NO;
1262
                            
1237
 
1263
                        $result = $chatGroupUserMessageMapper->insert($chatGroupUserMessage);
1238
                        $result = $chatGroupUserMessageMapper->insert($chatGroupUserMessage);
1264
                        if(!$result) {
1239
                        if (!$result) {
1265
                            return new JsonModel([
1240
                            return new JsonModel([
1266
                                'success' => false,
1241
                                'success' => false,
1267
                                'data' => $chatGroupUserMessageMapper->getError()
1242
                                'data' => $chatGroupUserMessageMapper->getError()
1268
                            ]);
1243
                            ]);
1269
                        }
1244
                        }
1270
                    }
1245
                    }
1271
                }
1246
                }
1272
                
1247
 
1273
                $userMapper->updateLastActivity($currentUser->id);
1248
                $userMapper->updateLastActivity($currentUser->id);
1274
                    
1249
 
1275
                $msgtime = $this->timeAgo($now, $now);
1250
                $msgtime = $this->timeAgo($now, $now);
1276
                return new JsonModel([
1251
                return new JsonModel([
1277
                    'success' => true,
1252
                    'success' => true,
1278
                    'data' => [
1253
                    'data' => [
Línea 1284... Línea 1259...
1284
                        'm'                 => $message,
1259
                        'm'                 => $message,
1285
                        'time'              => $msgtime,
1260
                        'time'              => $msgtime,
1286
                        'id'                => $chatGroupMessage->uuid,
1261
                        'id'                => $chatGroupMessage->uuid,
1287
                    ]
1262
                    ]
1288
                ]);
1263
                ]);
1289
 
-
 
1290
                
-
 
1291
                
-
 
1292
            } else {
1264
            } else {
1293
                $userMapper = UserMapper::getInstance($this->adapter);
1265
                $userMapper = UserMapper::getInstance($this->adapter);
1294
                $user = $userMapper->fetchOneByUuid($id);
1266
                $user = $userMapper->fetchOneByUuid($id);
1295
                if(!$user) {
1267
                if (!$user) {
1296
                    return new JsonModel([
1268
                    return new JsonModel([
1297
                        'success' => false,
1269
                        'success' => false,
1298
                        'data' => 'ERROR_USER_NOT_FOUND'
1270
                        'data' => 'ERROR_USER_NOT_FOUND'
1299
                    ]);
1271
                    ]);
1300
                }
1272
                }
1301
                
1273
 
1302
                
1274
 
1303
                $connectionMapper = ConnectionMapper::getInstance($this->adapter);
1275
                $connectionMapper = ConnectionMapper::getInstance($this->adapter);
1304
                $connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1276
                $connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1305
                if(!$connection || $connection->status != Connection::STATUS_ACCEPTED) {
1277
                if (!$connection || $connection->status != Connection::STATUS_ACCEPTED) {
1306
                    
1278
 
1307
                    return new JsonModel([
1279
                    return new JsonModel([
1308
                        'success' => false,
1280
                        'success' => false,
1309
                        'data' => 'ERROR_THIS_USER_IS_NOT_A_CONNECTION'
1281
                        'data' => 'ERROR_THIS_USER_IS_NOT_A_CONNECTION'
1310
                    ]);
1282
                    ]);
1311
                    
-
 
1312
                }
1283
                }
1313
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
1284
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
1314
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1285
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1315
                if(!$chatUser) {
1286
                if (!$chatUser) {
1316
                    $chatUser = new ChatUser();
1287
                    $chatUser = new ChatUser();
1317
                    $chatUser->user_id1 = $currentUser->id;
1288
                    $chatUser->user_id1 = $currentUser->id;
1318
                    $chatUser->user_id2 = $user->id;
1289
                    $chatUser->user_id2 = $user->id;
1319
                    
1290
 
1320
                    $response = $chatUserMapper->insert($chatUser);
1291
                    $response = $chatUserMapper->insert($chatUser);
1321
                    if(!$response) {
1292
                    if (!$response) {
1322
                        return new JsonModel([
1293
                        return new JsonModel([
1323
                            'success' => false,
1294
                            'success' => false,
1324
                            'data' => $chatUserMapper->getError()
1295
                            'data' => $chatUserMapper->getError()
1325
                        ]);
1296
                        ]);
1326
                    }
1297
                    }
1327
                    
1298
 
1328
                    $chatUser = $chatUserMapper->fetchOne($chatUser->id);
1299
                    $chatUser = $chatUserMapper->fetchOne($chatUser->id);
1329
                    $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
1300
                    $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
1330
                    $dirpath = $fullpath_chat . $chatUser->uuid;
1301
                    $dirpath = $fullpath_chat . $chatUser->uuid;
1331
                    if (! file_exists($dirpath)) {
1302
                    if (!file_exists($dirpath)) {
1332
                        mkdir($dirpath, 0777, true);
1303
                        mkdir($dirpath, 0777, true);
1333
                        chmod($dirpath, 0777);
1304
                        chmod($dirpath, 0777);
1334
                    }
1305
                    }
1335
                    
-
 
1336
                }
1306
                }
1337
                
1307
 
1338
      
1308
 
1339
    
1309
 
1340
                $chatMessage = new ChatMessage();
1310
                $chatMessage = new ChatMessage();
1341
                $chatMessage->chat_id   = $chatUser->id;
1311
                $chatMessage->chat_id   = $chatUser->id;
1342
                $chatMessage->from_id   = $currentUser->id;
1312
                $chatMessage->from_id   = $currentUser->id;
1343
                $chatMessage->to_id     = $user->id;
1313
                $chatMessage->to_id     = $user->id;
1344
                $chatMessage->content   = $message;
1314
                $chatMessage->content   = $message;
1345
                $chatMessage->type      = ChatMessage::TYPE_TEXT;
1315
                $chatMessage->type      = ChatMessage::TYPE_TEXT;
1346
                $chatMessage->recd      = ChatMessage::RECD_NO;
1316
                $chatMessage->recd      = ChatMessage::RECD_NO;
1347
                $chatMessage->seen      = ChatMessage::SEEN_NO;
1317
                $chatMessage->seen      = ChatMessage::SEEN_NO;
1348
                        
1318
 
1349
                $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
1319
                $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
1350
                $result = $chatMessageMapper->insert($chatMessage);
1320
                $result = $chatMessageMapper->insert($chatMessage);
1351
                if(!$result) {
1321
                if (!$result) {
1352
                    return new JsonModel([
1322
                    return new JsonModel([
1353
                        'success' => false,
1323
                        'success' => false,
1354
                        'data' => $chatMessageMapper->getError()
1324
                        'data' => $chatMessageMapper->getError()
1355
                    ]);
1325
                    ]);
1356
                }
1326
                }
1357
                
1327
 
1358
                $chatMessage = $chatMessageMapper->fetchOne($chatMessage->id);
1328
                $chatMessage = $chatMessageMapper->fetchOne($chatMessage->id);
1359
 
1329
 
1360
                $msgtime = $this->timeAgo($chatMessage->added_on, $now);
1330
                $msgtime = $this->timeAgo($chatMessage->added_on, $now);
1361
                $userMapper->updateLastActivity($currentUser->id);
1331
                $userMapper->updateLastActivity($currentUser->id);
1362
                
1332
 
1363
                if($currentUser->id == $chatUser->user_id1) {
1333
                if ($currentUser->id == $chatUser->user_id1) {
1364
                    $chatUserMapper->markIsOpen2($chatUser->id);
1334
                    $chatUserMapper->markIsOpen2($chatUser->id);
1365
                } else {
1335
                } else {
1366
                    $chatUserMapper->markIsOpen1($chatUser->id);
1336
                    $chatUserMapper->markIsOpen1($chatUser->id);
1367
                }
1337
                }
1368
                
1338
 
1369
                return new JsonModel([
1339
                return new JsonModel([
1370
                    'success' => true,
1340
                    'success' => true,
1371
                    'data' => [
1341
                    'data' => [
1372
                        'user_name'     => $sender_name,
1342
                        'user_name'     => $sender_name,
1373
                        'user_id'       => $sender_result->uuid,
1343
                        'user_id'       => $sender_result->uuid,
Línea 1376... Línea 1346...
1376
                        'mtype'         => ChatMessage::TYPE_TEXT,
1346
                        'mtype'         => ChatMessage::TYPE_TEXT,
1377
                        'm'             => $message,
1347
                        'm'             => $message,
1378
                        'time'          => $msgtime,
1348
                        'time'          => $msgtime,
1379
                        'id'            => $chatMessage->uuid,
1349
                        'id'            => $chatMessage->uuid,
1380
                    ]
1350
                    ]
1381
                 ]); 
1351
                ]);
1382
 
-
 
1383
                
-
 
1384
            }
1352
            }
1385
            return new JsonModel($response);
1353
            return new JsonModel($response);
1386
        
-
 
1387
        } else {
1354
        } else {
1388
            return new JsonModel([
1355
            return new JsonModel([
1389
                'success' => false,
1356
                'success' => false,
1390
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1357
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1391
            ]);
1358
            ]);
1392
        }
1359
        }
1393
 
-
 
1394
    }
1360
    }
1395
    
1361
 
1396
    /**
1362
    /**
1397
     * Esta función recuperar los contactos disponibles para agregarlos a un grupo
1363
     * Esta función recuperar los contactos disponibles para agregarlos a un grupo
1398
     * Es una petición GET el url que contiene el ID encriptado del chat (/chat/get-contacts-availables-for-group/:group_id) y la cuál se recibe en la función heartBeat.
1364
     * Es una petición GET el url que contiene el ID encriptado del chat (/chat/get-contacts-availables-for-group/:group_id) y la cuál se recibe en la función heartBeat.
1399
     * con el siguiente parámetro
1365
     * con el siguiente parámetro
1400
     * uid = id encriptado del usuario
1366
     * uid = id encriptado del usuario
Línea 1418... Línea 1384...
1418
     * @return \Laminas\View\Model\JsonModel
1384
     * @return \Laminas\View\Model\JsonModel
1419
     */
1385
     */
1420
    public function contactAvailableGroupListAction()
1386
    public function contactAvailableGroupListAction()
1421
    {
1387
    {
1422
        $request    = $this->getRequest();
1388
        $request    = $this->getRequest();
1423
        if($request->isGet()) {
1389
        if ($request->isGet()) {
1424
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1390
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1425
            $currentUser = $currentUserPlugin->getUser();
1391
            $currentUser = $currentUserPlugin->getUser();
1426
            
1392
 
1427
            $id = $this->params()->fromRoute('group_id');
1393
            $id = $this->params()->fromRoute('group_id');
1428
            if(!$id) {
1394
            if (!$id) {
1429
                return new JsonModel([
1395
                return new JsonModel([
1430
                    'success' => false,
1396
                    'success' => false,
1431
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1397
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1432
                ]);
1398
                ]);
1433
            } 
1399
            }
1434
            
1400
 
1435
            $userMapper = UserMapper::getInstance($this->adapter);
1401
            $userMapper = UserMapper::getInstance($this->adapter);
1436
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1402
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1437
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1403
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1438
            
1404
 
1439
            if(!$chatGroup) {
1405
            if (!$chatGroup) {
1440
                return new JsonModel([
1406
                return new JsonModel([
1441
                    'success' => false,
1407
                    'success' => false,
1442
                    'data' => 'ERROR_GROUP_NOT_FOUND'
1408
                    'data' => 'ERROR_GROUP_NOT_FOUND'
1443
                ]);
1409
                ]);
1444
            }
1410
            }
1445
                
1411
 
1446
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1412
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1447
            $chatGroupOwner = $chatGroupUserMapper->fetchOwnerByGroupId($chatGroup->id);
1413
            $chatGroupOwner = $chatGroupUserMapper->fetchOwnerByGroupId($chatGroup->id);
1448
            
1414
 
1449
            if($chatGroupOwner->user_id != $currentUser->id) {
1415
            if ($chatGroupOwner->user_id != $currentUser->id) {
1450
                return new JsonModel([
1416
                return new JsonModel([
1451
                    'success' => false,
1417
                    'success' => false,
1452
                    'data' => 'ERROR_CHAT_GROUP_YOU_ARE_NOT_OWNER'
1418
                    'data' => 'ERROR_CHAT_GROUP_YOU_ARE_NOT_OWNER'
1453
                ]);
1419
                ]);
1454
            }
1420
            }
1455
            
1421
 
1456
            
1422
 
1457
                
1423
 
1458
            $contact_ids = [];
1424
            $contact_ids = [];
1459
            $contacts = $chatGroupUserMapper->fetchAllByGroupId($chatGroup->id);
1425
            $contacts = $chatGroupUserMapper->fetchAllByGroupId($chatGroup->id);
1460
            foreach($contacts as $contact) 
1426
            foreach ($contacts as $contact) {
1461
            {
-
 
1462
                array_push($contact_ids, $contact->user_id);
1427
                array_push($contact_ids, $contact->user_id);
1463
            }
1428
            }
1464
                
1429
 
1465
            $connectionMapper = ConnectionMapper::getInstance($this->adapter);
1430
            $connectionMapper = ConnectionMapper::getInstance($this->adapter);
1466
            $connection_ids = $connectionMapper->fetchAllConnectionsByUserReturnIds($currentUser->id);
1431
            $connection_ids = $connectionMapper->fetchAllConnectionsByUserReturnIds($currentUser->id);
1467
            $connection_ids = array_filter($connection_ids, function($var) use ( $contact_ids) {
1432
            $connection_ids = array_filter($connection_ids, function ($var) use ($contact_ids) {
1468
                return !in_array($var, $contact_ids); 
1433
                return !in_array($var, $contact_ids);
1469
            });
1434
            });
1470
                
1435
 
1471
                
1436
 
1472
            $items = [];
1437
            $items = [];
1473
            foreach ($connection_ids as $connection_id)
1438
            foreach ($connection_ids as $connection_id) {
1474
            {
-
 
1475
                $user = $userMapper->fetchOne($connection_id);
1439
                $user = $userMapper->fetchOne($connection_id);
1476
                if (! $user) {
1440
                if (!$user) {
1477
                    continue;
1441
                    continue;
1478
                }
1442
                }
1479
                    
1443
 
1480
                $name   = trim($user->first_name . ' ' . $user->last_name);
1444
                $name   = trim($user->first_name . ' ' . $user->last_name);
1481
                $image  = $this->url()->fromRoute('storage', [
1445
                $image  = $this->url()->fromRoute('storage', [
1482
                    'code' => $user->uuid,
1446
                    'code' => $user->uuid,
1483
                    'type' => 'user',
1447
                    'type' => 'user',
1484
                    'filename' => $user->image
1448
                    'filename' => $user->image
1485
                ]);
1449
                ]);
Línea 1486... Línea 1450...
1486
 
1450
 
Línea 1487... Línea 1451...
1487
 
1451
 
1488
                
1452
 
1489
 
1453
 
1490
                array_push($items, [
1454
                array_push($items, [
1491
                    'id'        => $user->uuid,
1455
                    'id'        => $user->uuid,
1492
                    'name'      => $name,
1456
                    'name'      => $name,
1493
                    'image'     => $image,
1457
                    'image'     => $image,
1494
                    'online'    => $user->online,
1458
                    'online'    => $user->online,
1495
                ]);
1459
                ]);
1496
            } 
1460
            }
1497
            
1461
 
1498
            $userMapper->updateLastActivity($currentUser->id);
1462
            $userMapper->updateLastActivity($currentUser->id);
1499
            
1463
 
1500
            return new JsonModel([
1464
            return new JsonModel([
1501
                'success' => true,
-
 
1502
                'data' => $items,
1465
                'success' => true,
1503
            ]);
1466
                'data' => $items,
1504
            
1467
            ]);
1505
        } else {
1468
        } else {
1506
            return new JsonModel([
1469
            return new JsonModel([
1507
                'success' => false,
1470
                'success' => false,
1508
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
1509
            ]);
1471
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
Línea 1510... Línea 1472...
1510
        }
1472
            ]);
1511
 
1473
        }
1512
    }
1474
    }
Línea 1546... Línea 1508...
1546
     * @return \Laminas\View\Model\JsonModel
1508
     * @return \Laminas\View\Model\JsonModel
1547
     */
1509
     */
Línea 1548... Línea 1510...
1548
 
1510
 
1549
    public function contactGroupListAction()
1511
    public function contactGroupListAction()
1550
    {
1512
    {
1551
        
1513
 
1552
        $request    = $this->getRequest();
1514
        $request    = $this->getRequest();
1553
        if($request->isGet()) {
1515
        if ($request->isGet()) {
1554
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1516
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1555
            $currentUser = $currentUserPlugin->getUser();
1517
            $currentUser = $currentUserPlugin->getUser();
1556
    
1518
 
1557
            $id = $this->params()->fromRoute('group_id');
1519
            $id = $this->params()->fromRoute('group_id');
1558
            if(!$id) {
1520
            if (!$id) {
1559
                return new JsonModel([
1521
                return new JsonModel([
1560
                    'success' => false,
1522
                    'success' => false,
1561
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1523
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1562
                ]);
1524
                ]);
1563
            } 
1525
            }
1564
            
1526
 
1565
            $userMapper = UserMapper::getInstance($this->adapter);
1527
            $userMapper = UserMapper::getInstance($this->adapter);
1566
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1528
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1567
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1529
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1568
            
1530
 
1569
            if(!$chatGroup) {
1531
            if (!$chatGroup) {
1570
                return new JsonModel([
1532
                return new JsonModel([
1571
                    'success' => false,
1533
                    'success' => false,
1572
                    'data' => 'ERROR_GROUP_NOT_FOUND'
1534
                    'data' => 'ERROR_GROUP_NOT_FOUND'
1573
                ]);
1535
                ]);
1574
            }
1536
            }
1575
            
1537
 
1576
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1538
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1577
            
1539
 
1578
            $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
1540
            $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
1579
            
1541
 
1580
            if(!$chatGroupUser) {
1542
            if (!$chatGroupUser) {
1581
                return new JsonModel([
1543
                return new JsonModel([
1582
                    'success' => false,
1544
                    'success' => false,
1583
                    'data' => 'ERROR_CHAT_GROUP_USER_NOT_FOUND'
1545
                    'data' => 'ERROR_CHAT_GROUP_USER_NOT_FOUND'
1584
                ]);
1546
                ]);
Línea 1585... Línea 1547...
1585
            }
1547
            }
1586
 
1548
 
1587
            $items = [];
1549
            $items = [];
1588
            $chatGroupUsers = $chatGroupUserMapper->fetchAllByGroupId($chatGroup->id);
-
 
1589
            foreach ($chatGroupUsers as $chatGroupUser) 
1550
            $chatGroupUsers = $chatGroupUserMapper->fetchAllByGroupId($chatGroup->id);
1590
            {
1551
            foreach ($chatGroupUsers as $chatGroupUser) {
1591
                $user = $userMapper->fetchOne((int) $chatGroupUser->user_id);
1552
                $user = $userMapper->fetchOne((int) $chatGroupUser->user_id);
1592
                if (! $user) {
1553
                if (!$user) {
1593
                    continue;
1554
                    continue;
1594
                }
1555
                }
1595
                    
1556
 
1596
                $name   = trim($user->first_name . ' ' . $user->last_name);
1557
                $name   = trim($user->first_name . ' ' . $user->last_name);
1597
                $image  = $this->url()->fromRoute('storage', [
1558
                $image  = $this->url()->fromRoute('storage', [
1598
                    'code' => $user->uuid,
1559
                    'code' => $user->uuid,
1599
                    'type' => 'user',
1560
                    'type' => 'user',
1600
                    'filename' => $user->image
1561
                    'filename' => $user->image
1601
                ]);
1562
                ]);
1602
                    
1563
 
1603
     
1564
 
1604
                if($chatGroupUser->owner == ChatGroupUser::OWNER_YES) {
-
 
1605
                    $url_remove_from_group = '';
1565
                if ($chatGroupUser->owner == ChatGroupUser::OWNER_YES) {
1606
                    
1566
                    $url_remove_from_group = '';
1607
                } else {
1567
                } else {
1608
                    $url_remove_from_group = $this->url()->fromRoute('chat/remove-user-from-group', ['group_id' => $chatGroup->uuid, 'user_id' => $user->uuid ]);
-
 
Línea -... Línea 1568...
-
 
1568
                    $url_remove_from_group = $this->url()->fromRoute('chat/remove-user-from-group', ['group_id' => $chatGroup->uuid, 'user_id' => $user->uuid]);
1609
                }
1569
                }
1610
                    
1570
 
1611
 
1571
 
1612
 
1572
 
1613
                    
1573
 
1614
                array_push($items, [
1574
                array_push($items, [
1615
                    'url_remove_from_group' => $url_remove_from_group,
1575
                    'url_remove_from_group' => $url_remove_from_group,
1616
                    'id'                    => $user->uuid,
1576
                    'id'                    => $user->uuid,
1617
                    'name'                  => $name,
-
 
1618
                    'image'                 => $image,
1577
                    'name'                  => $name,
1619
                    'online'                => $user->online,
1578
                    'image'                 => $image,
1620
                ]);
1579
                    'online'                => $user->online,
1621
                    
1580
                ]);
1622
            }
1581
            }
1623
            
1582
 
1624
            $userMapper->updateLastActivity($currentUser->id);
1583
            $userMapper->updateLastActivity($currentUser->id);
1625
                
1584
 
1626
            return new JsonModel([
-
 
1627
                'success' => true, 
1585
            return new JsonModel([
1628
                'data' => $items,
1586
                'success' => true,
1629
            ]);
1587
                'data' => $items,
1630
        
1588
            ]);
1631
        } else {
1589
        } else {
1632
            return new JsonModel([
1590
            return new JsonModel([
1633
                'success' => false,
1591
                'success' => false,
1634
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1592
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1635
            ]);
1593
            ]);
1636
        }
1594
        }
1637
    }
1595
    }
1638
    
1596
 
1639
    /**
1597
    /**
Línea 1653... Línea 1611...
1653
     * ]
1611
     * ]
1654
     * @return \Laminas\View\Model\JsonModel
1612
     * @return \Laminas\View\Model\JsonModel
1655
     */
1613
     */
1656
    public function deleteGroupAction()
1614
    public function deleteGroupAction()
1657
    {
1615
    {
1658
        
1616
 
1659
        $request    = $this->getRequest();
1617
        $request    = $this->getRequest();
1660
        if($request->isPost()) {
1618
        if ($request->isPost()) {
Línea 1661... Línea 1619...
1661
 
1619
 
1662
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1620
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1663
            $currentUser = $currentUserPlugin->getUser();
1621
            $currentUser = $currentUserPlugin->getUser();
1664
    
1622
 
1665
            $id = trim(filter_var($this->params()->fromRoute('group_id'), FILTER_SANITIZE_STRING));
1623
            $id = trim(filter_var($this->params()->fromRoute('group_id'), FILTER_SANITIZE_STRING));
1666
            if(!$id) {
1624
            if (!$id) {
1667
                return new JsonModel([
1625
                return new JsonModel([
1668
                    'success' => false,
1626
                    'success' => false,
1669
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1627
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1670
                ]);
1628
                ]);
1671
            } 
1629
            }
1672
            
1630
 
Línea 1673... Línea 1631...
1673
    
1631
 
1674
 
1632
 
1675
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1633
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1676
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1634
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1677
            
1635
 
1678
            if(!$chatGroup) {
1636
            if (!$chatGroup) {
1679
                return new JsonModel([
1637
                return new JsonModel([
1680
                    'success' => false,
1638
                    'success' => false,
1681
                    'data' => 'ERROR_GROUP_NOT_FOUND'
1639
                    'data' => 'ERROR_GROUP_NOT_FOUND'
1682
                ]);
1640
                ]);
1683
            }
1641
            }
1684
            
1642
 
1685
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1643
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1686
            $chatGroupOwner = $chatGroupUserMapper->fetchOwnerByGroupId($chatGroup->id);
1644
            $chatGroupOwner = $chatGroupUserMapper->fetchOwnerByGroupId($chatGroup->id);
1687
            
1645
 
1688
            if($chatGroupOwner->user_id != $currentUser->id) {
1646
            if ($chatGroupOwner->user_id != $currentUser->id) {
1689
                return new JsonModel([
1647
                return new JsonModel([
1690
                    'success' => false,
1648
                    'success' => false,
1691
                    'data' => 'ERROR_CHAT_GROUP_YOU_ARE_NOT_OWNER'
1649
                    'data' => 'ERROR_CHAT_GROUP_YOU_ARE_NOT_OWNER'
Línea 1692... Línea 1650...
1692
                ]);
1650
                ]);
1693
            }
1651
            }
1694
 
1652
 
1695
 
1653
 
1696
            $chatGroupUserMessageMapper = ChatGroupUserMessageMapper::getInstance($this->adapter);
1654
            $chatGroupUserMessageMapper = ChatGroupUserMessageMapper::getInstance($this->adapter);
1697
            $result = $chatGroupUserMessageMapper->deleteAllByGroupId($chatGroup->id);
1655
            $result = $chatGroupUserMessageMapper->deleteAllByGroupId($chatGroup->id);
1698
            if(!$result) {
1656
            if (!$result) {
1699
                return new JsonModel([
1657
                return new JsonModel([
1700
                    'success' => false,
1658
                    'success' => false,
1701
                    'data' => $chatGroupUserMessageMapper->getError()
1659
                    'data' => $chatGroupUserMessageMapper->getError()
1702
                ]);
1660
                ]);
1703
            }
1661
            }
1704
            
1662
 
1705
            $chatGroupMessageMapper = ChatGroupMessageMapper::getInstance($this->adapter);
1663
            $chatGroupMessageMapper = ChatGroupMessageMapper::getInstance($this->adapter);
1706
            $result = $chatGroupMessageMapper->deleteAllByGroupId($chatGroup->id);
1664
            $result = $chatGroupMessageMapper->deleteAllByGroupId($chatGroup->id);
1707
            if(!$result) {
1665
            if (!$result) {
1708
                return new JsonModel([
1666
                return new JsonModel([
1709
                    'success' => false,
1667
                    'success' => false,
1710
                    'data' => $chatGroupMessageMapper->getError()
1668
                    'data' => $chatGroupMessageMapper->getError()
1711
                ]);
1669
                ]);
1712
            }
1670
            }
1713
            
1671
 
1714
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1672
            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1715
            $result = $chatGroupUserMapper->deleteAllByGroupId($chatGroup->id);
1673
            $result = $chatGroupUserMapper->deleteAllByGroupId($chatGroup->id);
1716
            if(!$result) {
1674
            if (!$result) {
1717
                return new JsonModel([
1675
                return new JsonModel([
1718
                    'success' => false,
1676
                    'success' => false,
1719
                    'data' => $chatGroupUserMapper->getError()
1677
                    'data' => $chatGroupUserMapper->getError()
1720
                ]);
1678
                ]);
1721
            }
1679
            }
1722
            
1680
 
1723
            $chatGroupMapper->deleteByGroupId($chatGroup->id);
1681
            $chatGroupMapper->deleteByGroupId($chatGroup->id);
1724
            if(!$result) {
1682
            if (!$result) {
1725
                return new JsonModel([
1683
                return new JsonModel([
1726
                    'success' => false,
1684
                    'success' => false,
1727
                    'data' => $chatGroupMapper->getError()
1685
                    'data' => $chatGroupMapper->getError()
1728
                ]);
1686
                ]);
1729
            }
1687
            }
1730
           
1688
 
1731
                    
1689
 
1732
            $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
1690
            $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
1733
            $dirpath = $fullpath_chat . $chatGroup->uuid;
1691
            $dirpath = $fullpath_chat . $chatGroup->uuid;
1734
                        
1692
 
1735
            Functions::rmDirRecursive($dirpath);
1693
            Functions::rmDirRecursive($dirpath);
1736
                   
1694
 
1737
            $userMapper = UserMapper::getInstance($this->adapter);
1695
            $userMapper = UserMapper::getInstance($this->adapter);
1738
            $userMapper->updateLastActivity($currentUser->id);
1696
            $userMapper->updateLastActivity($currentUser->id);
1739
            
-
 
1740
            return new JsonModel([
-
 
1741
                'success' => true
1697
 
1742
            ]);
1698
            return new JsonModel([
1743
 
1699
                'success' => true
1744
 
1700
            ]);
1745
        } else {
1701
        } else {
1746
            return new JsonModel([
-
 
1747
                'success' => false,
1702
            return new JsonModel([
1748
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1703
                'success' => false,
Línea 1749... Línea 1704...
1749
            ]);
1704
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1750
            
1705
            ]);
Línea 1769... Línea 1724...
1769
     * @return \Laminas\View\Model\JsonModel
1724
     * @return \Laminas\View\Model\JsonModel
1770
     */
1725
     */
1771
    public function closeAction()
1726
    public function closeAction()
1772
    {
1727
    {
1773
        $request    = $this->getRequest();
1728
        $request    = $this->getRequest();
1774
        if($request->isPost()) {
1729
        if ($request->isPost()) {
1775
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1730
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1776
            $currentUser = $currentUserPlugin->getUser();
1731
            $currentUser = $currentUserPlugin->getUser();
1777
            
1732
 
1778
            $id = filter_var($this->params()->fromRoute('id'), FILTER_SANITIZE_STRING);
1733
            $id = filter_var($this->params()->fromRoute('id'), FILTER_SANITIZE_STRING);
1779
            
1734
 
1780
            if (!$id) {
1735
            if (!$id) {
1781
                return new JsonModel([
1736
                return new JsonModel([
1782
                    'success' => false,
1737
                    'success' => false,
1783
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1738
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1784
                ]);
1739
                ]);
1785
            }
1740
            }
1786
            
1741
 
1787
            
1742
 
1788
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1743
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1789
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1744
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1790
            if ($chatGroup) {
1745
            if ($chatGroup) {
1791
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1746
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1792
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
1747
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
1793
                
1748
 
1794
                if(!$chatGroupUser) {
1749
                if (!$chatGroupUser) {
1795
                    return new JsonModel([
1750
                    return new JsonModel([
1796
                        'success' => false,
1751
                        'success' => false,
1797
                        'data' =>  'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
1752
                        'data' =>  'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
1798
                    ]);
1753
                    ]);
1799
                }
1754
                }
1800
                
1755
 
1801
                $chatGroupUserMapper->markIsClose($chatGroup->id, $currentUser->id);
1756
                $chatGroupUserMapper->markIsClose($chatGroup->id, $currentUser->id);
1802
            } else {
1757
            } else {
1803
                
1758
 
1804
                $userMapper = UserMapper::getInstance($this->adapter);
1759
                $userMapper = UserMapper::getInstance($this->adapter);
1805
                $user = $userMapper->fetchOneByUuid($id);
1760
                $user = $userMapper->fetchOneByUuid($id);
1806
                if(!$user) {
1761
                if (!$user) {
1807
                    return new JsonModel([
1762
                    return new JsonModel([
1808
                        'success' => false,
1763
                        'success' => false,
1809
                        'data' => 'ERROR_USER_NOT_FOUND'
1764
                        'data' => 'ERROR_USER_NOT_FOUND'
1810
                    ]);
1765
                    ]);
1811
                }
1766
                }
1812
                
1767
 
1813
                
1768
 
1814
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
1769
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
1815
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1770
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1816
                if($chatUser) {
1771
                if ($chatUser) {
1817
                    if($currentUser->id == $chatUser->user_id1) {
1772
                    if ($currentUser->id == $chatUser->user_id1) {
1818
                        $chatUserMapper->markIsClose1($currentUser->id);
1773
                        $chatUserMapper->markIsClose1($currentUser->id);
1819
                    } else {
1774
                    } else {
1820
                        
1775
 
1821
                        $chatUserMapper->markIsClose2($currentUser->id);
1776
                        $chatUserMapper->markIsClose2($currentUser->id);
1822
                    }
1777
                    }
1823
                }
1778
                }
1824
            }
1779
            }
1825
            
1780
 
1826
            $userMapper->updateLastActivity($currentUser->id);
1781
            $userMapper->updateLastActivity($currentUser->id);
1827
            
-
 
Línea -... Línea 1782...
-
 
1782
 
1828
 
1783
 
1829
              
1784
 
1830
            return new JsonModel([
1785
            return new JsonModel([
1831
                'success' => true
1786
                'success' => true
1832
            ]);
1787
            ]);
1833
        } else {
1788
        } else {
Línea 1856... Línea 1811...
1856
     * @return \Laminas\View\Model\JsonModel
1811
     * @return \Laminas\View\Model\JsonModel
1857
     */
1812
     */
1858
    public function clearAction()
1813
    public function clearAction()
1859
    {
1814
    {
1860
        $request    = $this->getRequest();
1815
        $request    = $this->getRequest();
1861
        if($request->isPost()) {
1816
        if ($request->isPost()) {
1862
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1817
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1863
            $currentUser = $currentUserPlugin->getUser();
1818
            $currentUser = $currentUserPlugin->getUser();
1864
            
1819
 
1865
            $id = filter_var($this->params()->fromRoute('id'), FILTER_SANITIZE_STRING);
1820
            $id = filter_var($this->params()->fromRoute('id'), FILTER_SANITIZE_STRING);
1866
            
1821
 
1867
            if (!$id) {
1822
            if (!$id) {
1868
                return new JsonModel([
1823
                return new JsonModel([
1869
                    'success' => false,
1824
                    'success' => false,
1870
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1825
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1871
                ]);
1826
                ]);
1872
            }
1827
            }
1873
            
-
 
Línea -... Línea 1828...
-
 
1828
 
1874
 
1829
 
1875
            
1830
 
1876
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1831
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1877
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1832
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1878
            if ($chatGroup) {
1833
            if ($chatGroup) {
1879
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1834
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1880
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
1835
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
1881
                
1836
 
1882
                if(!$chatGroupUser) {
1837
                if (!$chatGroupUser) {
1883
                    return new JsonModel([
1838
                    return new JsonModel([
1884
                        'success' => false,
1839
                        'success' => false,
1885
                        'data' =>  'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
1840
                        'data' =>  'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
1886
                    ]);
1841
                    ]);
1887
                }
1842
                }
1888
                
1843
 
1889
                $chatGroupUserMapper->markIsClose($chatGroup->id, $currentUser->id);
1844
                $chatGroupUserMapper->markIsClose($chatGroup->id, $currentUser->id);
1890
            } else {
1845
            } else {
1891
                
1846
 
1892
                $userMapper = UserMapper::getInstance($this->adapter);
1847
                $userMapper = UserMapper::getInstance($this->adapter);
1893
                $user = $userMapper->fetchOneByUuid($id);
1848
                $user = $userMapper->fetchOneByUuid($id);
1894
                if(!$user) {
1849
                if (!$user) {
1895
                    return new JsonModel([
1850
                    return new JsonModel([
1896
                        'success' => false,
1851
                        'success' => false,
1897
                        'data' => 'ERROR_USER_NOT_FOUND'
1852
                        'data' => 'ERROR_USER_NOT_FOUND'
1898
                    ]);
1853
                    ]);
1899
                }
1854
                }
1900
                
1855
 
1901
                
1856
 
1902
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
1857
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
1903
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1858
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1904
                if($chatUser) {
1859
                if ($chatUser) {
1905
                    if($currentUser->id == $chatUser->user_id1) {
1860
                    if ($currentUser->id == $chatUser->user_id1) {
1906
                        $chatUserMapper->markIsClose1($currentUser->id);
1861
                        $chatUserMapper->markIsClose1($currentUser->id);
1907
                    } else {
1862
                    } else {
1908
                        $chatUserMapper->markIsClose2($currentUser->id);
1863
                        $chatUserMapper->markIsClose2($currentUser->id);
1909
                    }
1864
                    }
1910
                }
1865
                }
1911
            }
1866
            }
1912
            
1867
 
Línea 1913... Línea 1868...
1913
            $userMapper->updateLastActivity($currentUser->id);
1868
            $userMapper->updateLastActivity($currentUser->id);
1914
 
1869
 
1915
            
1870
 
1916
            return new JsonModel([
1871
            return new JsonModel([
1917
                'success' => true
1872
                'success' => true
1918
            ]);
1873
            ]);
1919
        } else {
1874
        } else {
1920
            return new JsonModel([
1875
            return new JsonModel([
1921
                'success' => false,
1876
                'success' => false,
1922
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1877
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1923
            ]);
1878
            ]);
1924
        }
1879
        }
1925
    }
1880
    }
1926
    
1881
 
1927
    /**
1882
    /**
1928
     * Marca como abierto el caht
1883
     * Marca como abierto el caht
1929
     * Es una petición POST el url que contiene el ID encriptado del chat (/chat/open/:id) y la cuál se recibe en la función heartBeat.
1884
     * Es una petición POST el url que contiene el ID encriptado del chat (/chat/open/:id) y la cuál se recibe en la función heartBeat.
Línea 1942... Línea 1897...
1942
     * @return \Laminas\View\Model\JsonModel
1897
     * @return \Laminas\View\Model\JsonModel
1943
     */
1898
     */
1944
    public function openAction()
1899
    public function openAction()
1945
    {
1900
    {
1946
        $request    = $this->getRequest();
1901
        $request    = $this->getRequest();
1947
        if($request->isPost()) {
1902
        if ($request->isPost()) {
1948
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1903
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1949
            $currentUser = $currentUserPlugin->getUser();
1904
            $currentUser = $currentUserPlugin->getUser();
1950
            
1905
 
1951
            $id = filter_var($this->params()->fromRoute('id'), FILTER_SANITIZE_STRING);
1906
            $id = filter_var($this->params()->fromRoute('id'), FILTER_SANITIZE_STRING);
1952
            
1907
 
1953
            if (!$id) {
1908
            if (!$id) {
1954
                return new JsonModel([
1909
                return new JsonModel([
1955
                    'success' => false,
1910
                    'success' => false,
1956
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1911
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1957
                ]);
1912
                ]);
1958
            }
1913
            }
1959
            
1914
 
1960
            
1915
 
1961
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1916
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
1962
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1917
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
1963
            if ($chatGroup) {
1918
            if ($chatGroup) {
1964
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1919
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
1965
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
1920
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
1966
                
1921
 
1967
                if(!$chatGroupUser) {
1922
                if (!$chatGroupUser) {
1968
                    return new JsonModel([
1923
                    return new JsonModel([
1969
                        'success' => false,
1924
                        'success' => false,
1970
                        'data' =>  'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
1925
                        'data' =>  'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
1971
                    ]);
1926
                    ]);
1972
                }
1927
                }
1973
                
1928
 
1974
                $chatGroupUserMapper->markIsOpen($chatGroup->id, $currentUser->id);
1929
                $chatGroupUserMapper->markIsOpen($chatGroup->id, $currentUser->id);
1975
            } else {
1930
            } else {
1976
                
1931
 
1977
                $userMapper = UserMapper::getInstance($this->adapter);
1932
                $userMapper = UserMapper::getInstance($this->adapter);
1978
                $user = $userMapper->fetchOneByUuid($id);
1933
                $user = $userMapper->fetchOneByUuid($id);
1979
                if(!$user) {
1934
                if (!$user) {
1980
                    return new JsonModel([
1935
                    return new JsonModel([
1981
                        'success' => false,
1936
                        'success' => false,
1982
                        'data' => 'ERROR_USER_NOT_FOUND'
1937
                        'data' => 'ERROR_USER_NOT_FOUND'
1983
                    ]);
1938
                    ]);
1984
                }
1939
                }
1985
                
1940
 
1986
                
1941
 
1987
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
1942
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
1988
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1943
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
1989
                if($chatUser) {
1944
                if ($chatUser) {
1990
                    if($currentUser->id == $chatUser->user_id1) {
1945
                    if ($currentUser->id == $chatUser->user_id1) {
1991
                        $chatUserMapper->markIsOpen1($chatUser->id);
1946
                        $chatUserMapper->markIsOpen1($chatUser->id);
1992
                    } else {
1947
                    } else {
1993
                        $chatUserMapper->markIsOpen2($chatUser->id);
1948
                        $chatUserMapper->markIsOpen2($chatUser->id);
1994
                    }
1949
                    }
1995
                    
-
 
1996
                }
1950
                }
1997
            }
1951
            }
1998
            
1952
 
1999
            
1953
 
2000
            $userMapper->updateLastActivity($currentUser->id);
1954
            $userMapper->updateLastActivity($currentUser->id);
2001
            
1955
 
2002
            return new JsonModel([
1956
            return new JsonModel([
2003
                'success' => true
1957
                'success' => true
2004
            ]);
1958
            ]);
2005
        } else {
1959
        } else {
2006
            return new JsonModel([
1960
            return new JsonModel([
2007
                'success' => false,
1961
                'success' => false,
2008
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1962
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
2009
            ]);
1963
            ]);
2010
        }
1964
        }
2011
    }
1965
    }
2012
    
1966
 
2013
    public function uploadAction()
1967
    public function uploadAction()
2014
    {
1968
    {
2015
        $request    = $this->getRequest();
1969
        $request    = $this->getRequest();
2016
        if($request->isPost()) {
1970
        if ($request->isPost()) {
2017
            $currentUserPlugin = $this->plugin('currentUserPlugin');
1971
            $currentUserPlugin = $this->plugin('currentUserPlugin');
2018
            $currentUser = $currentUserPlugin->getUser();
1972
            $currentUser = $currentUserPlugin->getUser();
2019
            
1973
 
2020
            $id = filter_var($this->params()->fromRoute('id'), FILTER_SANITIZE_STRING);
1974
            $id = filter_var($this->params()->fromRoute('id'), FILTER_SANITIZE_STRING);
2021
            if (!$id) {
1975
            if (!$id) {
2022
                return new JsonModel([
1976
                return new JsonModel([
2023
                    'success' => false,
1977
                    'success' => false,
2024
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
1978
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
2025
                ]);
1979
                ]);
2026
            }
1980
            }
2027
            
1981
 
2028
            $files = $this->getRequest()->getFiles()->toArray();
1982
            $files = $this->getRequest()->getFiles()->toArray();
2029
            if(!isset($files['file']) || !empty($files['file']['error'])) {
1983
            if (!isset($files['file']) || !empty($files['file']['error'])) {
2030
                return new JsonModel([
1984
                return new JsonModel([
2031
                    'success' => false,
1985
                    'success' => false,
2032
                    'data' => 'ERROR_FILE_NOT_UPLOAD'
1986
                    'data' => 'ERROR_FILE_NOT_UPLOAD'
2033
                ]);
1987
                ]);
2034
            }
1988
            }
2035
            
1989
 
2036
            $tmp_filename   = $files['file']['tmp_name'];
1990
            $tmp_filename   = $files['file']['tmp_name'];
2037
            if(!$this->validMimeType($tmp_filename)) {
1991
            if (!$this->validMimeType($tmp_filename)) {
2038
                return new JsonModel([
1992
                return new JsonModel([
2039
                    'success' => false,
1993
                    'success' => false,
2040
                    'data' => 'ERROR_FILE_UPLODED_IS_NOT_VALID'
1994
                    'data' => 'ERROR_FILE_UPLODED_IS_NOT_VALID'
2041
                ]);
1995
                ]);
2042
            }
1996
            }
Línea 2043... Línea 1997...
2043
 
1997
 
2044
            
1998
 
2045
            $extensions     = explode('.', $files['file']['name']);
1999
            $extensions     = explode('.', $files['file']['name']);
2046
            $extension      = strtolower(trim($extensions[count($extensions) - 1]));
2000
            $extension      = strtolower(trim($extensions[count($extensions) - 1]));
2047
            $filename       = uniqid() . '.' . $extension;
2001
            $filename       = uniqid() . '.' . $extension;
Línea 2048... Línea 2002...
2048
           
2002
 
2049
 
2003
 
2050
            $mime_type = mime_content_type($tmp_filename);
2004
            $mime_type = mime_content_type($tmp_filename);
2051
            if($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
2005
            if ($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
2052
                $file_type = 'image';
2006
                $file_type = 'image';
2053
            } else if($mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
2007
            } else if ($mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
2054
                $file_type = 'video';
2008
                $file_type = 'video';
2055
            } else if($mime_type == 'application/pdf') {
2009
            } else if ($mime_type == 'application/pdf') {
2056
                $file_type = 'document';
2010
                $file_type = 'document';
2057
            }
2011
            }
2058
            
2012
 
2059
                
2013
 
2060
            $userMapper = UserMapper::getInstance($this->adapter);
2014
            $userMapper = UserMapper::getInstance($this->adapter);
2061
            $sender_result = $userMapper->fetchOne($currentUser->id);
2015
            $sender_result = $userMapper->fetchOne($currentUser->id);
2062
            $sender_from = trim($sender_result->first_name . ' ' . $sender_result->last_name);
2016
            $sender_from = trim($sender_result->first_name . ' ' . $sender_result->last_name);
2063
            $sender_pic = $this->url()->fromRoute('storage', [
2017
            $sender_pic = $this->url()->fromRoute('storage', [
2064
                'code' => $sender_result->uuid,
2018
                'code' => $sender_result->uuid,
2065
                'type' => 'user',
2019
                'type' => 'user',
2066
                'filename' => $sender_result->image
2020
                'filename' => $sender_result->image
2067
            ]);
2021
            ]);
2068
            
2022
 
2069
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
2023
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
2070
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
2024
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
2071
            if($chatGroup) {
2025
            if ($chatGroup) {
2072
                
2026
 
2073
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
2027
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
2074
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
2028
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
2075
                
2029
 
2076
                if(!$chatGroupUser) {
2030
                if (!$chatGroupUser) {
2077
                    return new JsonModel([
2031
                    return new JsonModel([
2078
                        'success' => false,
2032
                        'success' => false,
2079
                        'data' => 'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
2033
                        'data' => 'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
Línea 2080... Línea 2034...
2080
                    ]);
2034
                    ]);
2081
                }
2035
                }
2082
 
2036
 
2083
        
2037
 
2084
                $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
2038
                $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
2085
                $dirpath = $fullpath_chat . $chatGroup->uuid;
2039
                $dirpath = $fullpath_chat . $chatGroup->uuid;
2086
                if (! file_exists($dirpath)) {
2040
                if (!file_exists($dirpath)) {
2087
                    mkdir($dirpath, 0777, true);
2041
                    mkdir($dirpath, 0777, true);
2088
                    chmod($dirpath, 0777);
2042
                    chmod($dirpath, 0777);
2089
                }
2043
                }
2090
                    
2044
 
2091
                $full_filename = $dirpath . DIRECTORY_SEPARATOR . $filename;
2045
                $full_filename = $dirpath . DIRECTORY_SEPARATOR . $filename;
2092
                if(!move_uploaded_file($tmp_filename, $full_filename)) {
2046
                if (!move_uploaded_file($tmp_filename, $full_filename)) {
2093
                    return new JsonModel([
2047
                    return new JsonModel([
2094
                        'success' => false,
2048
                        'success' => false,
2095
                        'data' => 'ERROR_FILE_UPLOADED_NOT_MOVE'
2049
                        'data' => 'ERROR_FILE_UPLOADED_NOT_MOVE'
2096
                    ]);
2050
                    ]);
2097
                }
2051
                }
2098
                
2052
 
2099
                $chatGroupMessage = new ChatGroupMessage();
2053
                $chatGroupMessage = new ChatGroupMessage();
2100
                $chatGroupMessage->sender_id    = $currentUser->id;
2054
                $chatGroupMessage->sender_id    = $currentUser->id;
2101
                $chatGroupMessage->group_id     = $chatGroup->id;
2055
                $chatGroupMessage->group_id     = $chatGroup->id;
2102
                $chatGroupMessage->content      = $filename;
2056
                $chatGroupMessage->content      = $filename;
2103
                $chatGroupMessage->type         = $file_type;
2057
                $chatGroupMessage->type         = $file_type;
2104
                
2058
 
2105
                $chatGroupMessageMapper = ChatGroupMessageMapper::getInstance($this->adapter);
2059
                $chatGroupMessageMapper = ChatGroupMessageMapper::getInstance($this->adapter);
2106
                $result = $chatGroupMessageMapper->insert($chatGroupMessage);
2060
                $result = $chatGroupMessageMapper->insert($chatGroupMessage);
2107
                if(!$result) {
2061
                if (!$result) {
2108
                    return new JsonModel([
2062
                    return new JsonModel([
2109
                        'success' => false,
2063
                        'success' => false,
2110
                        'data' => $chatGroupMessageMapper->getError()
2064
                        'data' => $chatGroupMessageMapper->getError()
2111
                    ]);
2065
                    ]);
2112
                }
2066
                }
2113
                
2067
 
2114
                $chatGroupMessage = $chatGroupMessageMapper->fetchOne($chatGroupMessage->id);
2068
                $chatGroupMessage = $chatGroupMessageMapper->fetchOne($chatGroupMessage->id);
2115
                
2069
 
2116
                        
2070
 
2117
                $chatGroupUserMessage = new ChatGroupUserMessage();
2071
                $chatGroupUserMessage = new ChatGroupUserMessage();
2118
                $chatGroupUserMessage->group_id = $chatGroupMessage->group_id;
2072
                $chatGroupUserMessage->group_id = $chatGroupMessage->group_id;
2119
                $chatGroupUserMessage->message_id = $chatGroupMessage->id;
2073
                $chatGroupUserMessage->message_id = $chatGroupMessage->id;
2120
                $chatGroupUserMessage->receiver_id = $currentUser->id;
2074
                $chatGroupUserMessage->receiver_id = $currentUser->id;
2121
                $chatGroupUserMessage->recd = ChatGroupUserMessage::RECD_YES;
2075
                $chatGroupUserMessage->recd = ChatGroupUserMessage::RECD_YES;
2122
                $chatGroupUserMessage->seen = ChatGroupUserMessage::SEEN_YES;
2076
                $chatGroupUserMessage->seen = ChatGroupUserMessage::SEEN_YES;
2123
                
2077
 
2124
                            
2078
 
2125
                $chatGroupUserMessageMapper = ChatGroupUserMessageMapper::getInstance($this->adapter);
2079
                $chatGroupUserMessageMapper = ChatGroupUserMessageMapper::getInstance($this->adapter);
2126
                $result = $chatGroupUserMessageMapper->insert($chatGroupUserMessage);
2080
                $result = $chatGroupUserMessageMapper->insert($chatGroupUserMessage);
2127
                if(!$result) {
2081
                if (!$result) {
2128
                    return new JsonModel([
2082
                    return new JsonModel([
2129
                        'success' => false,
2083
                        'success' => false,
2130
                        'data' => $chatGroupUserMessageMapper->getError()
2084
                        'data' => $chatGroupUserMessageMapper->getError()
2131
                    ]);
2085
                    ]);
2132
                }
2086
                }
2133
                
2087
 
2134
          
2088
 
2135
                
2089
 
2136
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
2090
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
2137
                            
-
 
2138
                $results = $chatGroupUserMapper->fetchAllByGroupId($chatGroup->id);
2091
 
2139
                foreach ($results as $r) 
2092
                $results = $chatGroupUserMapper->fetchAllByGroupId($chatGroup->id);
2140
                {
2093
                foreach ($results as $r) {
2141
                    if ($r->user_id != $currentUser->id) {
2094
                    if ($r->user_id != $currentUser->id) {
2142
                        $chatGroupUserMessage = new ChatGroupUserMessage();
2095
                        $chatGroupUserMessage = new ChatGroupUserMessage();
2143
                        $chatGroupUserMessage->group_id = $chatGroupMessage->group_id;
2096
                        $chatGroupUserMessage->group_id = $chatGroupMessage->group_id;
2144
                        $chatGroupUserMessage->message_id = $chatGroupMessage->id;
2097
                        $chatGroupUserMessage->message_id = $chatGroupMessage->id;
2145
                        $chatGroupUserMessage->receiver_id= $r->user_id;
2098
                        $chatGroupUserMessage->receiver_id = $r->user_id;
2146
                        $chatGroupUserMessage->recd = ChatGroupUserMessage::RECD_NO;
2099
                        $chatGroupUserMessage->recd = ChatGroupUserMessage::RECD_NO;
2147
                        $chatGroupUserMessage->seen = ChatGroupUserMessage::SEEN_NO;
2100
                        $chatGroupUserMessage->seen = ChatGroupUserMessage::SEEN_NO;
2148
                                    
2101
 
2149
                        $result = $chatGroupUserMessageMapper->insert($chatGroupUserMessage);
2102
                        $result = $chatGroupUserMessageMapper->insert($chatGroupUserMessage);
2150
                        if(!$result) {
2103
                        if (!$result) {
2151
                            return new JsonModel([
2104
                            return new JsonModel([
2152
                                'success' => false,
2105
                                'success' => false,
2153
                                'data' => $chatGroupUserMessageMapper->getError()
-
 
2154
                            ]);
-
 
2155
                        }
2106
                                'data' => $chatGroupUserMessageMapper->getError()
2156
                        
2107
                            ]);
2157
             
2108
                        }
2158
                    }
2109
                    }
2159
                }
2110
                }
2160
                
2111
 
2161
                $userMapper->updateLastActivity($currentUser->id);
2112
                $userMapper->updateLastActivity($currentUser->id);
2162
                
2113
 
2163
                $utilMapper = UtilMapper::getInstance($this->adapter);
2114
                $utilMapper = UtilMapper::getInstance($this->adapter);
2164
                $now = $utilMapper->getDatebaseNow();
2115
                $now = $utilMapper->getDatebaseNow();
2165
                            
2116
 
2166
                $msgtime = $this->timeAgo($now, $now);
2117
                $msgtime = $this->timeAgo($now, $now);
2167
                return new JsonModel([
2118
                return new JsonModel([
Línea 2175... Línea 2126...
2175
                        'm'             => $this->url()->fromRoute('storage', ['code' => $chatGroup->uuid, 'type' => 'chat', 'filename' => $filename]),
2126
                        'm'             => $this->url()->fromRoute('storage', ['code' => $chatGroup->uuid, 'type' => 'chat', 'filename' => $filename]),
2176
                        'time'          => $msgtime,
2127
                        'time'          => $msgtime,
2177
                        'id'            => $chatGroupMessage->uuid
2128
                        'id'            => $chatGroupMessage->uuid
2178
                    ]
2129
                    ]
2179
                ]);
2130
                ]);
2180
 
-
 
2181
                
-
 
2182
            } else {
2131
            } else {
2183
                
2132
 
2184
                $user = $userMapper->fetchOneByUuid($id);
2133
                $user = $userMapper->fetchOneByUuid($id);
2185
                if(!$user) {
2134
                if (!$user) {
2186
                    return new JsonModel([
2135
                    return new JsonModel([
2187
                        'success' => false,
2136
                        'success' => false,
2188
                        'data' => 'ERROR_USER_NOT_FOUND'
2137
                        'data' => 'ERROR_USER_NOT_FOUND'
2189
                    ]);
2138
                    ]);
2190
                }
2139
                }
2191
                
2140
 
2192
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
2141
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
2193
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
2142
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
2194
                if(!$chatUser) {
2143
                if (!$chatUser) {
2195
                    return new JsonModel([
2144
                    return new JsonModel([
2196
                        'success' => false,
2145
                        'success' => false,
2197
                        'data' => 'ERROR_CHAT_NOT_FOUND'
2146
                        'data' => 'ERROR_CHAT_NOT_FOUND'
2198
                    ]);
2147
                    ]);
2199
                }
2148
                }
2200
                        
2149
 
2201
                $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
2150
                $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
2202
                $dirpath = $fullpath_chat . $chatUser->uuid;
2151
                $dirpath = $fullpath_chat . $chatUser->uuid;
2203
                        
2152
 
2204
                if (! file_exists($dirpath)) {
2153
                if (!file_exists($dirpath)) {
2205
                    mkdir($dirpath, 0777, true);
2154
                    mkdir($dirpath, 0777, true);
2206
                    chmod($dirpath, 0777);
2155
                    chmod($dirpath, 0777);
2207
                }
2156
                }
2208
                        
2157
 
2209
                $full_filename = $dirpath . DIRECTORY_SEPARATOR . $filename;
2158
                $full_filename = $dirpath . DIRECTORY_SEPARATOR . $filename;
2210
                if(!move_uploaded_file($tmp_filename, $full_filename)) {
2159
                if (!move_uploaded_file($tmp_filename, $full_filename)) {
2211
                    return new JsonModel([
2160
                    return new JsonModel([
2212
                        'success' => false,
2161
                        'success' => false,
2213
                        'data' => 'ERROR_FILE_UPLOADED_NOT_MOVE'
2162
                        'data' => 'ERROR_FILE_UPLOADED_NOT_MOVE'
2214
                    ]);
2163
                    ]);
2215
                }
2164
                }
Línea 2220... Línea 2169...
2220
                $chatMessage->to_id = $user->id;
2169
                $chatMessage->to_id = $user->id;
2221
                $chatMessage->content = $filename;
2170
                $chatMessage->content = $filename;
2222
                $chatMessage->type = $file_type;
2171
                $chatMessage->type = $file_type;
2223
                $chatMessage->recd = ChatMessage::RECD_NO;
2172
                $chatMessage->recd = ChatMessage::RECD_NO;
2224
                $chatMessage->seen = ChatMessage::SEEN_NO;
2173
                $chatMessage->seen = ChatMessage::SEEN_NO;
2225
                            
2174
 
2226
                            
2175
 
2227
                $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
2176
                $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
2228
                $result = $chatMessageMapper->insert($chatMessage);
2177
                $result = $chatMessageMapper->insert($chatMessage);
2229
                if(!$result) {
2178
                if (!$result) {
2230
                    return new JsonModel([
2179
                    return new JsonModel([
2231
                        'success' => false,
2180
                        'success' => false,
2232
                        'data' =>  $chatMessageMapper->getError()
2181
                        'data' =>  $chatMessageMapper->getError()
2233
                    ]);
2182
                    ]);
2234
                }
2183
                }
2235
                
2184
 
2236
                
2185
 
2237
                $userMapper->updateLastActivity($currentUser->id);
2186
                $userMapper->updateLastActivity($currentUser->id);
2238
                
2187
 
2239
                $chatMessage = $chatMessageMapper->fetchOne($chatMessage->id);
2188
                $chatMessage = $chatMessageMapper->fetchOne($chatMessage->id);
2240
                
2189
 
2241
                $utilMapper = UtilMapper::getInstance($this->adapter);
2190
                $utilMapper = UtilMapper::getInstance($this->adapter);
2242
                $now = $utilMapper->getDatebaseNow();
2191
                $now = $utilMapper->getDatebaseNow();
2243
                
2192
 
2244
                $msgtime = $this->timeAgo($chatMessage->added_on, $now);
2193
                $msgtime = $this->timeAgo($chatMessage->added_on, $now);
2245
                return new JsonModel([
2194
                return new JsonModel([
2246
                    'success' => true,
2195
                    'success' => true,
2247
                    'data' => [
2196
                    'data' => [
2248
                        'user_name' => $sender_from,
2197
                        'user_name' => $sender_from,
Línea 2253... Línea 2202...
2253
                        'm' => $this->url()->fromRoute('storage', ['code' => $currentUser->uuid, 'type' => 'chat', 'filename' => $filename]),
2202
                        'm' => $this->url()->fromRoute('storage', ['code' => $currentUser->uuid, 'type' => 'chat', 'filename' => $filename]),
2254
                        'time' => $msgtime,
2203
                        'time' => $msgtime,
2255
                        'id' => $chatMessage->uuid
2204
                        'id' => $chatMessage->uuid
2256
                    ]
2205
                    ]
2257
                ]);
2206
                ]);
2258
 
-
 
2259
            }
2207
            }
2260
        } else {
2208
        } else {
2261
            return new JsonModel([
2209
            return new JsonModel([
2262
                'success' => false,
2210
                'success' => false,
2263
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
2211
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
Línea 2266... Línea 2214...
2266
    }
2214
    }
Línea 2267... Línea 2215...
2267
 
2215
 
2268
    public function markSeenAction()
2216
    public function markSeenAction()
2269
    {
2217
    {
2270
        $request = $this->getRequest();
2218
        $request = $this->getRequest();
2271
        if($request->isPost()) { 
2219
        if ($request->isPost()) {
2272
            $currentUserPlugin = $this->plugin('currentUserPlugin');
2220
            $currentUserPlugin = $this->plugin('currentUserPlugin');
2273
            $currentUser = $currentUserPlugin->getUser();
2221
            $currentUser = $currentUserPlugin->getUser();
2274
            
2222
 
2275
            $id = $this->params()->fromRoute('id');
2223
            $id = $this->params()->fromRoute('id');
2276
            if (!$id) {
2224
            if (!$id) {
2277
                return new JsonModel([
2225
                return new JsonModel([
2278
                    'success' => false,
2226
                    'success' => false,
2279
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
2227
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
2280
                ]);
2228
                ]);
2281
            }
2229
            }
2282
            
2230
 
2283
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
2231
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
2284
            $chatGroup =  $chatGroupMapper->fetchOneByUuid($id);
2232
            $chatGroup =  $chatGroupMapper->fetchOneByUuid($id);
2285
            
2233
 
2286
            if($chatGroup) {
2234
            if ($chatGroup) {
2287
                
2235
 
2288
                $charGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
2236
                $charGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
2289
                $chatGroupUser = $charGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
2237
                $chatGroupUser = $charGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
2290
                
2238
 
2291
                if(!$chatGroupUser) {
2239
                if (!$chatGroupUser) {
2292
                    return new JsonModel([
2240
                    return new JsonModel([
2293
                        'success' => false,
2241
                        'success' => false,
2294
                        'data' =>  'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
2242
                        'data' =>  'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
2295
                    ]);
2243
                    ]);
2296
                }
2244
                }
2297
                
2245
 
2298
                $charGroupUserMessage = ChatGroupUserMessageMapper::getInstance($this->adapter);
2246
                $charGroupUserMessage = ChatGroupUserMessageMapper::getInstance($this->adapter);
2299
                $result = $charGroupUserMessage->markAsSeenByGroupIdAndUserId($chatGroup->id, $currentUser->id);
2247
                $result = $charGroupUserMessage->markAsSeenByGroupIdAndUserId($chatGroup->id, $currentUser->id);
2300
                if($result) {
2248
                if ($result) {
2301
                    return new JsonModel([
2249
                    return new JsonModel([
2302
                        'success' => true,
2250
                        'success' => true,
2303
                    ]);
2251
                    ]);
2304
                } else {
2252
                } else {
2305
                    return new JsonModel([
2253
                    return new JsonModel([
2306
                        'success' => false,
2254
                        'success' => false,
2307
                        'data' =>  $charGroupUserMessage->getError()
2255
                        'data' =>  $charGroupUserMessage->getError()
2308
                    ]);
2256
                    ]);
2309
                }
-
 
2310
                
-
 
2311
                
2257
                }
2312
            } else {
2258
            } else {
2313
                $userMapper = UserMapper::getInstance($this->adapter);
2259
                $userMapper = UserMapper::getInstance($this->adapter);
2314
                $user = $userMapper->fetchOneByUuid($id);
2260
                $user = $userMapper->fetchOneByUuid($id);
2315
                
2261
 
2316
                if(!$user) {
2262
                if (!$user) {
2317
                    return new JsonModel([
2263
                    return new JsonModel([
2318
                        'success' => false,
2264
                        'success' => false,
2319
                        'data' => 'ERROR_USER_NOT_FOUND'
2265
                        'data' => 'ERROR_USER_NOT_FOUND'
2320
                    ]);
2266
                    ]);
2321
                }
2267
                }
2322
                
2268
 
2323
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
2269
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
2324
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
2270
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
2325
                if(!$chatUser) {
2271
                if (!$chatUser) {
2326
                    return new JsonModel([
2272
                    return new JsonModel([
2327
                        'success' => false,
2273
                        'success' => false,
2328
                        'data' => 'ERROR_CHAT_NOT_FOUND'
2274
                        'data' => 'ERROR_CHAT_NOT_FOUND'
2329
                    ]);
2275
                    ]);
2330
                }
2276
                }
2331
                
2277
 
2332
                $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
2278
                $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
2333
                $result = $chatMessageMapper->markAsSeenByChatIdAndToId($chatUser->id, $currentUser->id);
2279
                $result = $chatMessageMapper->markAsSeenByChatIdAndToId($chatUser->id, $currentUser->id);
2334
                if($result) {
2280
                if ($result) {
2335
                    return new JsonModel([
2281
                    return new JsonModel([
2336
                        'success' => true,
2282
                        'success' => true,
2337
                    ]);
2283
                    ]);
2338
                } else {
2284
                } else {
2339
                    return new JsonModel([
2285
                    return new JsonModel([
2340
                        'success' => false,
2286
                        'success' => false,
2341
                        'data' =>  $charGroupUserMessage->getError()
2287
                        'data' =>  $charGroupUserMessage->getError()
2342
                    ]);
2288
                    ]);
2343
                }
-
 
2344
                
2289
                }
2345
            }
-
 
2346
 
-
 
2347
            
2290
            }
2348
        } else {
2291
        } else {
2349
            $response = [
2292
            $response = [
2350
                'success' => false,
2293
                'success' => false,
2351
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
2294
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
2352
            ];
2295
            ];
Línea 2353... Línea 2296...
2353
        }
2296
        }
2354
 
2297
 
2355
        return new JsonModel($response);
2298
        return new JsonModel($response);
2356
    }
2299
    }
2357
    
2300
 
2358
    
2301
 
2359
    public function markReceivedAction()
2302
    public function markReceivedAction()
2360
    {
2303
    {
2361
        $request = $this->getRequest();
2304
        $request = $this->getRequest();
2362
        if($request->isPost()) {
2305
        if ($request->isPost()) {
2363
            $currentUserPlugin = $this->plugin('currentUserPlugin');
2306
            $currentUserPlugin = $this->plugin('currentUserPlugin');
2364
            $currentUser = $currentUserPlugin->getUser();
2307
            $currentUser = $currentUserPlugin->getUser();
2365
            
2308
 
2366
            $id = $this->params()->fromRoute('id');
2309
            $id = $this->params()->fromRoute('id');
2367
            if (!$id) {
2310
            if (!$id) {
2368
                return new JsonModel([
2311
                return new JsonModel([
2369
                    'success' => false,
2312
                    'success' => false,
2370
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
2313
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
2371
                ]);
2314
                ]);
2372
            }
2315
            }
2373
            
2316
 
2374
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
2317
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
2375
            $chatGroup =  $chatGroupMapper->fetchOneByUuid($id);
2318
            $chatGroup =  $chatGroupMapper->fetchOneByUuid($id);
2376
            
2319
 
2377
            if($chatGroup) {
2320
            if ($chatGroup) {
2378
                
2321
 
2379
                $charGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
2322
                $charGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
2380
                $chatGroupUser = $charGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
2323
                $chatGroupUser = $charGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
2381
                
2324
 
2382
                if(!$chatGroupUser) {
2325
                if (!$chatGroupUser) {
2383
                    return new JsonModel([
2326
                    return new JsonModel([
2384
                        'success' => false,
2327
                        'success' => false,
2385
                        'data' =>  'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
2328
                        'data' =>  'ERROR_CHAT_GROUP_YOU_NOT_MEMBER'
2386
                    ]);
2329
                    ]);
2387
                }
2330
                }
2388
                
2331
 
2389
                $charGroupUserMessage = ChatGroupUserMessageMapper::getInstance($this->adapter);
2332
                $charGroupUserMessage = ChatGroupUserMessageMapper::getInstance($this->adapter);
2390
                $result = $charGroupUserMessage->markAsReceivedByGroupIdAndUserId($chatGroup->id, $currentUser->id);
2333
                $result = $charGroupUserMessage->markAsReceivedByGroupIdAndUserId($chatGroup->id, $currentUser->id);
2391
                if($result) {
2334
                if ($result) {
2392
                    return new JsonModel([
2335
                    return new JsonModel([
2393
                        'success' => true,
2336
                        'success' => true,
2394
                    ]);
2337
                    ]);
2395
                } else {
2338
                } else {
2396
                    return new JsonModel([
2339
                    return new JsonModel([
2397
                        'success' => false,
2340
                        'success' => false,
2398
                        'data' =>  $charGroupUserMessage->getError()
2341
                        'data' =>  $charGroupUserMessage->getError()
2399
                    ]);
-
 
2400
                }
-
 
2401
                
2342
                    ]);
2402
                
2343
                }
2403
            } else {
2344
            } else {
2404
                $userMapper = UserMapper::getInstance($this->adapter);
2345
                $userMapper = UserMapper::getInstance($this->adapter);
2405
                $user = $userMapper->fetchOneByUuid($id);
2346
                $user = $userMapper->fetchOneByUuid($id);
2406
                
2347
 
2407
                if(!$user) {
2348
                if (!$user) {
2408
                    return new JsonModel([
2349
                    return new JsonModel([
2409
                        'success' => false,
2350
                        'success' => false,
2410
                        'data' => 'ERROR_USER_NOT_FOUND'
2351
                        'data' => 'ERROR_USER_NOT_FOUND'
2411
                    ]);
2352
                    ]);
2412
                }
2353
                }
2413
                
2354
 
2414
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
2355
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
2415
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
2356
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
2416
                if(!$chatUser) {
2357
                if (!$chatUser) {
2417
                    return new JsonModel([
2358
                    return new JsonModel([
2418
                        'success' => false,
2359
                        'success' => false,
2419
                        'data' => 'ERROR_CHAT_NOT_FOUND'
2360
                        'data' => 'ERROR_CHAT_NOT_FOUND'
2420
                    ]);
2361
                    ]);
2421
                }
2362
                }
2422
                
2363
 
2423
                $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
2364
                $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
2424
                $result = $chatMessageMapper->markAsReceivedByChatIdAndToId($chatUser->id, $currentUser->id);
2365
                $result = $chatMessageMapper->markAsReceivedByChatIdAndToId($chatUser->id, $currentUser->id);
2425
                if($result) {
2366
                if ($result) {
2426
                    return new JsonModel([
2367
                    return new JsonModel([
2427
                        'success' => true,
2368
                        'success' => true,
2428
                    ]);
2369
                    ]);
2429
                } else {
2370
                } else {
2430
                    return new JsonModel([
2371
                    return new JsonModel([
2431
                        'success' => false,
2372
                        'success' => false,
2432
                        'data' =>  $charGroupUserMessage->getError()
2373
                        'data' =>  $charGroupUserMessage->getError()
2433
                    ]);
-
 
2434
                }
2374
                    ]);
2435
                
-
 
2436
            }
-
 
2437
            
2375
                }
2438
            
2376
            }
2439
        } else {
2377
        } else {
2440
            $response = [
2378
            $response = [
2441
                'success' => false,
2379
                'success' => false,
2442
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
2380
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
2443
            ];
2381
            ];
2444
        }
2382
        }
2445
        
2383
 
Línea 2446... Línea 2384...
2446
        return new JsonModel($response);
2384
        return new JsonModel($response);
2447
    }
2385
    }
2448
 
2386
 
2449
 
2387
 
2450
   
2388
 
2451
    /**
2389
    /**
Línea 2516... Línea 2454...
2516
     * @param string $now
2454
     * @param string $now
2517
     * @return string
2455
     * @return string
2518
     */
2456
     */
2519
    private function timeAgo($timestamp, $now = '')
2457
    private function timeAgo($timestamp, $now = '')
2520
    {
2458
    {
2521
        
2459
 
2522
        if($now) {
2460
        if ($now) {
2523
            $datetime1 = \DateTime::createFromFormat('Y-m-d H:i:s', $now);
2461
            $datetime1 = \DateTime::createFromFormat('Y-m-d H:i:s', $now);
2524
        } else {
2462
        } else {
2525
            $now = date('Y-m-d H:i:s');
2463
            $now = date('Y-m-d H:i:s');
2526
            $datetime1 = date_create($now);
2464
            $datetime1 = date_create($now);
2527
        }
2465
        }
2528
        $datetime2 = date_create($timestamp);
2466
        $datetime2 = date_create($timestamp);
2529
        
2467
 
2530
        $diff = date_diff($datetime1, $datetime2);
2468
        $diff = date_diff($datetime1, $datetime2);
2531
        $timemsg = '';
2469
        $timemsg = '';
2532
        if ($diff->y > 0) {
2470
        if ($diff->y > 0) {
2533
            $timemsg = $diff->y . ' año' . ($diff->y > 1 ? "s" : '');
2471
            $timemsg = $diff->y . ' año' . ($diff->y > 1 ? "s" : '');
2534
        } else if ($diff->m > 0) {
2472
        } else if ($diff->m > 0) {
Línea 2570... Línea 2508...
2570
            return true;
2508
            return true;
2571
        }
2509
        }
Línea 2572... Línea 2510...
2572
 
2510
 
2573
        return ($diff->s) > 15 ? true : false;
2511
        return ($diff->s) > 15 ? true : false;
2574
    }
-
 
Línea -... Línea 2512...
-
 
2512
    }
-
 
2513
 
-
 
2514
    public function zoomAction()
-
 
2515
    {
-
 
2516
        $request = $this->getRequest();
-
 
2517
        if ($request->isPost()) {
-
 
2518
            $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
2519
            $currentUser = $currentUserPlugin->getUser();
-
 
2520
 
-
 
2521
            $id = $this->params()->fromRoute('id');
-
 
2522
 
-
 
2523
            if (!$id) {
-
 
2524
                return new JsonModel([
-
 
2525
                    'success' => false,
-
 
2526
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
-
 
2527
                ]);
-
 
2528
            }
-
 
2529
 
-
 
2530
            $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
-
 
2531
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
-
 
2532
 
-
 
2533
            $chatUser = null;
-
 
2534
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
-
 
2535
 
-
 
2536
            if ($chatGroup) {
-
 
2537
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
-
 
2538
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
-
 
2539
 
-
 
2540
                if (!$chatGroupUser) {
-
 
2541
                    $data = [
-
 
2542
                        'success' => false,
-
 
2543
                        'data' =>  'ERROR_ZOOM_CHAT_UNAUTHORIZE'
-
 
2544
                    ];
-
 
2545
 
-
 
2546
 
-
 
2547
                    return new JsonModel($data);
-
 
2548
                }
-
 
2549
            } else {
-
 
2550
 
-
 
2551
                $userMapper = UserMapper::getInstance($this->adapter);
-
 
2552
                $user = $userMapper->fetchOneByUuid($id);
-
 
2553
                if (!$user) {
-
 
2554
                    return new JsonModel([
-
 
2555
                        'success' => false,
-
 
2556
                        'data' => 'ERROR_USER_NOT_FOUND'
-
 
2557
                    ]);
-
 
2558
                }
-
 
2559
 
-
 
2560
 
-
 
2561
                $connectionMapper = ConnectionMapper::getInstance($this->adapter);
-
 
2562
                $connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
-
 
2563
                if (!$connection || $connection->status != Connection::STATUS_ACCEPTED) {
-
 
2564
 
-
 
2565
                    return new JsonModel([
-
 
2566
                        'success' => false,
-
 
2567
                        'data' => 'ERROR_THIS_USER_IS_NOT_A_CONNECTION'
-
 
2568
                    ]);
-
 
2569
                }
-
 
2570
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
-
 
2571
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
-
 
2572
                if (!$chatUser) {
-
 
2573
                    $chatUser = new ChatUser();
-
 
2574
                    $chatUser->user_id1 = $currentUser->id;
-
 
2575
                    $chatUser->user_id2 = $user->id;
-
 
2576
 
-
 
2577
                    $response = $chatUserMapper->insert($chatUser);
-
 
2578
                    if (!$response) {
-
 
2579
                        return new JsonModel([
-
 
2580
                            'success' => false,
-
 
2581
                            'data' => $chatUserMapper->getError()
-
 
2582
                        ]);
-
 
2583
                    }
-
 
2584
 
-
 
2585
                    $chatUser = $chatUserMapper->fetchOne($chatUser->id);
-
 
2586
                    $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
-
 
2587
                    $dirpath = $fullpath_chat . $chatUser->uuid;
-
 
2588
                    if (!file_exists($dirpath)) {
-
 
2589
                        mkdir($dirpath, 0777, true);
-
 
2590
                        chmod($dirpath, 0777);
-
 
2591
                    }
-
 
2592
                }
-
 
2593
            }
-
 
2594
 
-
 
2595
 
-
 
2596
 
-
 
2597
 
-
 
2598
 
-
 
2599
            if (!$chatUser && !$chatGroup) {
-
 
2600
                $data = [
-
 
2601
                    'success' => false,
-
 
2602
                    'data' => 'ERROR_ZOOM_CHAT_NOT_FOUND'
-
 
2603
                ];
-
 
2604
 
-
 
2605
 
-
 
2606
                return new JsonModel($data);
-
 
2607
            }
-
 
2608
 
-
 
2609
            $dataPost = $request->getPost()->toArray();
-
 
2610
            $form = new ZoomAddForm();
-
 
2611
            $form->setData($dataPost);
-
 
2612
            if ($form->isValid()) {
-
 
2613
 
-
 
2614
                $dataPost = (array) $form->getData();
-
 
2615
 
-
 
2616
 
-
 
2617
                $dtStart = \DateTime::createFromFormat('Y-m-d H:i:s', $dataPost['date'] . ' ' . $dataPost['time']);
-
 
2618
                if (!$dtStart) {
-
 
2619
                    return new JsonModel([
-
 
2620
                        'success' => false,
-
 
2621
                        'data' => 'ERROR_PARAMETERS_ARE_INVALID'
-
 
2622
                    ]);
-
 
2623
                }
-
 
2624
 
-
 
2625
 
-
 
2626
 
-
 
2627
                $dtEnd = \DateTime::createFromFormat('Y-m-d H:i:s', $dataPost['date'] . ' ' . $dataPost['time']);
-
 
2628
                $dtEnd->add(new \DateInterval('PT' . $dataPost['duration'] . 'M'));
-
 
2629
 
-
 
2630
                $start_time = $dtStart->format('Y-m-d\TH:i:s');
-
 
2631
                $zoom = new Zoom($this->adapter, $this->config);
-
 
2632
                $result = $zoom->add($dataPost['title'], $dataPost['description'], $dataPost['type'], $start_time, $dataPost['duration'], $dataPost['timezone'], $dataPost['password']);
-
 
2633
 
-
 
2634
 
-
 
2635
 
-
 
2636
                if ($result['success']) {
-
 
2637
 
-
 
2638
 
-
 
2639
                    $zoomMeetingMapper = ZoomMeetingMapper::getInstance($this->adapter);
-
 
2640
                    $zoomMeeting = $zoomMeetingMapper->fetchOne($result['data']['id']);
-
 
2641
 
-
 
2642
                    if (!$zoomMeeting) {
-
 
2643
 
-
 
2644
 
-
 
2645
                        $zoomMeeting = new ZoomMeeting();
-
 
2646
                        $zoomMeeting->id = $result['data']['id'];
-
 
2647
                        $zoomMeeting->topic = $dataPost['title'];
-
 
2648
                        $zoomMeeting->agenda = $dataPost['description'];
-
 
2649
                        $zoomMeeting->duration = $dataPost['duration'];
-
 
2650
                        $zoomMeeting->join_url = $result['data']['join_url'];
-
 
2651
                        $zoomMeeting->start_time = $dtStart->format('Y-m-d H:i:s');
-
 
2652
                        $zoomMeeting->end_time = $dtEnd->format('Y-m-d H:i:s');
-
 
2653
                        $zoomMeeting->timezone = $dataPost['timezone'];
-
 
2654
                        $zoomMeeting->type = $dataPost['type'];
-
 
2655
                        $zoomMeeting->uuid = $result['data']['uuid'];
-
 
2656
                        $zoomMeeting->password = $dataPost['password'];
-
 
2657
 
-
 
2658
 
-
 
2659
                        if (!$zoomMeetingMapper->insert($zoomMeeting)) {
-
 
2660
                            return new JsonModel([
-
 
2661
                                'success' => false,
-
 
2662
                                'data' => $zoomMeetingMapper->getError()
-
 
2663
                            ]);
-
 
2664
                        }
-
 
2665
                    }
-
 
2666
 
-
 
2667
 
-
 
2668
 
-
 
2669
 
-
 
2670
 
-
 
2671
                    $chatMessageContent = "LABEL_ZOOM_MEETING \r\n" .
-
 
2672
                        " LABEL_ZOOM_MEETING_START_DATE : " . $dtStart->format('Y-m-d') . "\r\n" .
-
 
2673
                        " LABEL_ZOOM_MEETING_START_TIME : " . $dtStart->format('H:i a') . "\r\n" .
-
 
2674
                        " LABEL_ZOOM_MEETING_TIMEZONE : " . $zoomMeeting->timezone . "\r\n" .
-
 
2675
                        " LABEL_ZOOM_MEETING_TITLE :  " . $zoomMeeting->topic  . "\r\n" .
-
 
2676
                        " LABEL_ZOOM_MEETING_URL : " . $zoomMeeting->join_url . "\r\n" .
-
 
2677
                        " LABEL_ZOOM_MEETING_PASSWORD : " . $zoomMeeting->password . "\r\n";
-
 
2678
 
-
 
2679
 
-
 
2680
                    $zoomMeetingUserMapper = ZoomMeetingUserMapper::getInstance($this->adapter);
-
 
2681
                    $zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $currentUser->id);
-
 
2682
 
-
 
2683
                    if (!$zoomMeetingUser) {
-
 
2684
 
-
 
2685
                        $zoomMeetingUser = new ZoomMeetingUser();
-
 
2686
                        $zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
-
 
2687
                        $zoomMeetingUser->user_id = $currentUser->id;
-
 
2688
                        $zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
-
 
2689
                        $zoomMeetingUserMapper->insert($zoomMeetingUser);
-
 
2690
                    }
-
 
2691
 
-
 
2692
 
-
 
2693
 
-
 
2694
 
-
 
2695
 
-
 
2696
 
-
 
2697
                    if ($chatUser) {
-
 
2698
 
-
 
2699
                        if ($chatUser->user_id1 == $currentUser->id) {
-
 
2700
 
-
 
2701
                            $zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $chatUser->user_id2);
-
 
2702
                            if (!$zoomMeetingUser) {
-
 
2703
                                $zoomMeetingUser = new ZoomMeetingUser();
-
 
2704
                                $zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
-
 
2705
                                $zoomMeetingUser->user_id = $chatUser->user_id2;
-
 
2706
                                $zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
-
 
2707
                                $zoomMeetingUserMapper->insert($zoomMeetingUser);
-
 
2708
                            }
-
 
2709
                        } else {
-
 
2710
                            $zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $chatUser->user_id1);
-
 
2711
                            if (!$zoomMeetingUser) {
-
 
2712
                                $zoomMeetingUser = new ZoomMeetingUser();
-
 
2713
                                $zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
-
 
2714
                                $zoomMeetingUser->user_id = $chatUser->user_id1;
-
 
2715
                                $zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
-
 
2716
                                $zoomMeetingUserMapper->insert($zoomMeetingUser);
-
 
2717
                            }
-
 
2718
                        }
-
 
2719
 
-
 
2720
                        $chatMessage = new ChatMessage();
-
 
2721
                        $chatMessage->recd = ChatMessage::RECD_NO;
-
 
2722
                        $chatMessage->seen = ChatMessage::SEEN_NO;
-
 
2723
                        $chatMessage->type = ChatMessage::TYPE_TEXT;
-
 
2724
                        $chatMessage->content = $chatMessageContent;
-
 
2725
                        $chatMessage->from_id = $currentUser->id;
-
 
2726
                        $chatMessage->to_id = $chatUser->user_id1 == $currentUser->id ? $chatUser->user_id2 : $chatUser->user_id1;
-
 
2727
                        $chatMessage->chat_id = $chatUser->id;
-
 
2728
 
-
 
2729
 
-
 
2730
                        $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
-
 
2731
                        $chatMessageMapper->insert($chatMessage);
-
 
2732
 
-
 
2733
 
-
 
2734
                        $chatUserMapper->markIsOpen1($chatUser->id);
-
 
2735
                        $chatUserMapper->markIsOpen2($chatUser->id);
-
 
2736
                    } else if ($chatGroup) {
-
 
2737
 
-
 
2738
                        $chatGroupMessage = new ChatGroupMessage();
-
 
2739
                        $chatGroupMessage->group_id = $chatGroup->id;
-
 
2740
                        $chatGroupMessage->content = $chatMessageContent;
-
 
2741
                        $chatGroupMessage->sender_id = $currentUser->id;
-
 
2742
                        $chatGroupMessage->type = ChatGroupMessage::TYPE_TEXT;
-
 
2743
                        $chatGroupMessageMapper = ChatGroupMessageMapper::getInstance($this->adapter);
-
 
2744
                        if ($chatGroupMessageMapper->insert($chatGroupMessage)) {
-
 
2745
 
-
 
2746
                            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
-
 
2747
                            $groupUsers =   $chatGroupUserMapper->fetchAllByGroupId($chatGroup->id);
-
 
2748
 
-
 
2749
 
-
 
2750
                            $chatGroupUserMessageMapper = ChatGroupUserMessageMapper::getInstance($this->adapter);
-
 
2751
                            foreach ($groupUsers as $groupUser) {
-
 
2752
 
-
 
2753
                                if ($groupUser->user_id != $currentUser->id) {
-
 
2754
                                    $zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $groupUser->user_id);
-
 
2755
 
-
 
2756
                                    if (!$zoomMeetingUser) {
-
 
2757
                                        $zoomMeetingUser = new ZoomMeetingUser();
-
 
2758
                                        $zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
-
 
2759
                                        $zoomMeetingUser->user_id = $groupUser->user_id;
-
 
2760
                                        $zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
-
 
2761
                                        $zoomMeetingUserMapper->insert($zoomMeetingUser);
-
 
2762
                                    }
-
 
2763
                                }
-
 
2764
 
-
 
2765
 
-
 
2766
                                $chatGroupUserMessage = new ChatGroupUserMessage();
-
 
2767
                                $chatGroupUserMessage->group_id = $chatGroup->id;
-
 
2768
                                $chatGroupUserMessage->message_id = $chatGroupMessage->id;
-
 
2769
                                $chatGroupUserMessage->receiver_id = $groupUser->user_id;
-
 
2770
                                $chatGroupUserMessage->recd = ChatGroupUserMessage::RECD_NO;
-
 
2771
                                $chatGroupUserMessage->seen = ChatGroupUserMessage::SEEN_NO;
-
 
2772
                                $chatGroupUserMessageMapper->insert($chatGroupUserMessage);
-
 
2773
 
-
 
2774
                                $chatGroupUserMapper->markIsOpen($groupUser->group_id, $groupUser->user_id);
-
 
2775
                            }
-
 
2776
                        }
-
 
2777
                    }
-
 
2778
 
-
 
2779
                    return new JsonModel([
-
 
2780
                        'success' => true,
-
 
2781
                        'data' => 'LABEL_ZOOM_NEW_MEETING_SUCCESSFULLY'
-
 
2782
                    ]);
-
 
2783
                } else {
-
 
2784
                    return new JsonModel([
-
 
2785
                        'success' => false,
-
 
2786
                        'data' => 'ERROR_ZOOM_CREATING_NEW_MEETING'
-
 
2787
                    ]);
-
 
2788
                }
-
 
2789
            } else {
-
 
2790
 
-
 
2791
 
-
 
2792
 
-
 
2793
                $messages = [];
-
 
2794
                $form_messages = (array) $form->getMessages();
-
 
2795
                foreach ($form_messages  as $fieldname => $field_messages) {
-
 
2796
 
-
 
2797
                    $messages[$fieldname] = array_values($field_messages);
-
 
2798
                }
-
 
2799
 
-
 
2800
                return new JsonModel([
-
 
2801
                    'success'   => false,
-
 
2802
                    'data'   => $messages
-
 
2803
                ]);
-
 
2804
 
-
 
2805
 
-
 
2806
                return new JsonModel($response);
-
 
2807
            }
-
 
2808
        } else {
-
 
2809
            $response = [
-
 
2810
                'success' => false,
-
 
2811
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
2812
            ];
-
 
2813
        }
-
 
2814
 
2575
    
2815
        return new JsonModel($response);