Proyectos de Subversion LeadersLinked - Services

Rev

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

Rev 704 Rev 705
Línea 152... Línea 152...
152
                'name' => trim($user->first_name . ' ' . $user->last_name),
152
                'name' => trim($user->first_name . ' ' . $user->last_name),
153
                'image' => $storage->getUserImage($user),
153
                'image' => $storage->getUserImage($user),
154
                'profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
154
                'profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
155
                'last_message' => $timeElapsedString,
155
                'last_message' => $timeElapsedString,
156
                'count_unread' => $unread,
156
                'count_unread' => $unread,
157
                'messages_url' => $this->url()->fromRoute('email/messages',['uuid' => $user->uuid]),
-
 
158
                'selected' => 0,
157
                'selected' => 0,
-
 
158
                'last_message' => $lastMessage,
-
 
159
                'messages_url' => $this->url()->fromRoute('email/messages',['uuid' => $user->uuid]),
-
 
160
                'save_url' => $this->url()->fromRoute('email/messages/send',['uuid' => $user->uuid]),
-
 
161
                'delete_url' => $this->url()->fromRoute('email/messages/delete',['uuid' => $user->uuid]),
159
            ]);
162
            ]);
160
        }
163
        }
Línea 161... Línea 164...
161
 
164
 
162
        // Ordenar por: seleccionados primero, luego por fecha del último mensaje
165
        // Ordenar por: seleccionados primero, luego por fecha del último mensaje
Línea 311... Línea 314...
311
    /**
314
    /**
312
     * Prepara los datos del usuario para evitar repetición en la construcción de mensajes
315
     * Prepara los datos del usuario para evitar repetición en la construcción de mensajes
313
     */
316
     */
314
    private function prepareUserData($user)
317
    private function prepareUserData($user)
315
    {
318
    {
-
 
319
        $storage = Storage::getInstance($this->config, $this->adapter);
-
 
320
 
316
        return [
321
        return [
317
            'name' => trim($user->first_name . ' ' . $user->last_name),
322
            'name' => trim($user->first_name . ' ' . $user->last_name),
318
            'image_url' => $this->url()->fromRoute('storage', [
323
            'image' => $storage->getUserImage($user),
319
                'type' => 'user', 
-
 
320
                'filename' => $user->image, 
-
 
321
                'code' => $user->uuid
-
 
322
            ], ['force_canonical' => true]),
-
 
323
            'profile_url' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid])
324
            'profile_url' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid])
324
        ];
325
        ];
325
    }
326
    }
Línea 326... Línea 327...
326
 
327
 
327
    /**
328
    /**
-
 
329
     * Construye los datos de un mensaje normal
-
 
330
     * 
-
 
331
     * @param \LeadersLinked\Model\Message $record
-
 
332
     * @param array $senderData
-
 
333
     * @param array $receiverData
-
 
334
     * @param string $side
-
 
335
     * @param string $timeElapsedString
328
     * Construye los datos de un mensaje normal
336
     * @param string $abuseReportUrl
329
     */
337
     */
330
    private function buildMessageData($record, $senderData, $receiverData, $side, $timeElapsedString, $abuseReportUrl)
338
    private function buildMessageData($record, $senderData, $receiverData, $side, $timeElapsedString, $abuseReportUrl)
-
 
339
    {
-
 
340
        $storage = Storage::getInstance($this->config, $this->adapter);
-
 
341
        $path = $storage->getPathMessage();
331
    {
342
        
332
        return [
343
        return [
333
            'uuid' => $record->uuid,
344
            'uuid' => $record->uuid,
334
            'sender_name' => $senderData['name'],
345
            'sender_name' => $senderData['name'],
335
            'sender_image' => $senderData['image_url'],
346
            'sender_image' => $senderData['image_url'],
Línea 338... Línea 349...
338
            'receiver_image' => $receiverData['image_url'],
349
            'receiver_image' => $receiverData['image_url'],
339
            'receiver_profile' => $receiverData['profile_url'],
350
            'receiver_profile' => $receiverData['profile_url'],
340
            'side' => $side,
351
            'side' => $side,
341
            'message' => $record->message,
352
            'message' => $record->message,
342
            'type' => $record->type,
353
            'type' => $record->type,
343
            'filename' => $record->filename ? $this->url()->fromRoute('storage', [
354
            'filename' => $record->filename ? $storage->getGenericFile($path, $record->uuid, $record->filename) : '',
344
                'type' => 'message', 
-
 
345
                'filename' => $record->filename, 
-
 
346
                'code' => $record->uuid
-
 
347
            ], ['force_canonical' => true]) : '',
-
 
348
            'date' => $timeElapsedString,
355
            'date' => $timeElapsedString,
349
            'url_abuse_report' => $abuseReportUrl,
356
            'url_abuse_report' => $abuseReportUrl,
350
        ];
357
        ];
351
    }
358
    }
Línea 374... Línea 381...
374
 
381
 
375
    public function sendMessageAction()
382
    public function sendMessageAction()
376
    {
383
    {
377
        // Verificar que la petición sea POST
384
        // Verificar que la petición sea POST
-
 
385
        $request = $this->getRequest();
378
        $request = $this->getRequest();
386
        
379
        if (!$request->isPost()) {
387
        if (!$request->isPost()) {
380
            return new JsonModel([
388
            return new JsonModel([
381
                'success' => false,
389
                'success' => false,
382
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
390
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
Línea 410... Línea 418...
410
        }
418
        }
Línea 411... Línea 419...
411
 
419
 
412
        // Combinar datos POST y archivos
420
        // Combinar datos POST y archivos
Línea 413... Línea -...
413
        $data = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
-
 
414
 
-
 
415
        // Si se envía un archivo sin error, usar su nombre como mensaje
-
 
416
        if (!empty($data['file']) && empty($data['file']['error'])) {
-
 
417
            $data['message'] = $data['file']['name'];
-
 
418
        }
421
        $data = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
419
 
422
 
420
        // Validar los datos del formulario
423
        // Validar los datos del formulario
Línea 421... Línea 424...
421
        $form = new SendForm();
424
        $form = new SendForm();
Línea 465... Línea 468...
465
                    'success' => false,
468
                    'success' => false,
466
                    'data' => $conversationMapper->getError()
469
                    'data' => $conversationMapper->getError()
467
                ]);
470
                ]);
468
            }
471
            }
469
        }
472
        }
-
 
473
        // Storage
-
 
474
        $storage = Storage::getInstance($this->config, $this->adapter);
-
 
475
        $storage->setFiles($request->getFiles()->toArray());
-
 
476
        $path = $storage->getPathMessage();
Línea 470... Línea 477...
470
 
477
 
471
        // Procesar archivo adjunto si existe
-
 
472
        $files = $this->getRequest()->getFiles()->toArray();
478
        // Determinar el tipo de archivo
473
        $type = Message::TYPE_TEXT;
479
        $type = Message::TYPE_TEXT;
474
        $message_tmp_filename = '';
-
 
475
        $message_filename = '';
-
 
476
 
-
 
477
        if (isset($files['file']) && empty($files['file']['error'])) {
480
        if($storage->setCurrentFilename('file')){
478
            $message_tmp_filename = $files['file']['tmp_name'];
-
 
479
            $message_filename = \LeadersLinked\Library\Functions::normalizeStringFilename($files['file']['name']);
-
 
480
 
-
 
481
            // Determinar el tipo de archivo
-
 
482
            $mime_type = mime_content_type($message_tmp_filename);
-
 
483
            if ($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
-
 
484
                $type = Storage::FILE_TYPE_IMAGE;
-
 
485
            } else if ($mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
481
            $tmp_filename = $storage->getTmpFilename();
486
                $type = Storage::FILE_TYPE_VIDEO;
-
 
487
            } else if ($mime_type == 'application/pdf') {
-
 
488
                $type = Storage::FILE_TYPE_DOCUMENT;
-
 
489
            }
482
            $type = $storage->getFileType();
Línea 490... Línea 483...
490
        }
483
        }
491
 
484
 
492
        // Crear y guardar el mensaje
485
        // Crear y guardar el mensaje
Línea 507... Línea 500...
507
                'data' => $messageMapper->getError()
500
                'data' => $messageMapper->getError()
508
            ]);
501
            ]);
509
        }
502
        }
Línea 510... Línea 503...
510
 
503
 
511
        // Procesar archivo adjunto si existe
504
        // Procesar archivo adjunto si existe
512
        if ($message_filename) {
-
 
513
            $storage = new Storage();
505
        if ($tmp_filename) {
514
            $storage->setAdapter($this->adapter);
-
 
515
            $storage->setLogger($this->logger);
506
            $filename = 'inmail_message_' . $message->uuid . '.' . $storage->getExtension();
Línea 516... Línea 507...
516
            $storage->setTranslator($this->translator);
507
            $target_filename = $storage->composePathToFilename(Storage::TYPE_MESSAGE, $message->uuid, $filename);
517
 
508
 
518
            if (!$storage->uploadMessageFile($message_tmp_filename, $message_filename, $message->uuid)) {
509
            if (!$storage->uploadImageWithOutChangeSize($tmp_filename, $target_filename)) {
519
                return new JsonModel([
510
                return new JsonModel([
520
                    'success' => false,
511
                    'success' => false,
521
                    'data' => $storage->getError()
512
                    'data' => 'ERROR_UPLOAD_FILE'
Línea 522... Línea 513...
522
                ]);
513
                ]);
523
            }
514
            }
524
 
515
 
525
            $message->filename = $message_filename;
516
            $message->filename = $filename;
526
            if (!$messageMapper->update($message)) {
517
            if (!$messageMapper->update($message)) {
527
                return new JsonModel([
518
                return new JsonModel([
528
                    'success' => false,
519
                    'success' => false,
529
                    'data' => $messageMapper->getError()
520
                    'data' => $messageMapper->getError()
Línea 530... Línea -...
530
                ]);
-
 
531
            }
-
 
532
        }
-
 
533
 
-
 
534
        // Preparar respuesta exitosa
-
 
535
        $filename = '';
-
 
536
        if ($message->filename) {
-
 
537
            $filename = $this->url()->fromRoute('storage', [
-
 
538
                'type' => 'message',
-
 
539
                'filename' => $message->filename,
-
 
540
                'code' => $message->uuid
521
                ]);
541
            ], ['force_canonical' => true]);
522
            }
Línea -... Línea 523...
-
 
523
        }
-
 
524
 
-
 
525
        // Actualizar última actividad del usuario
-
 
526
        $userMapper->updateLastActivity($currentUser->id);
-
 
527
 
-
 
528
        // Preparar datos para la respuesta
-
 
529
        $sender_image = $storage->getUserImage($currentUser);
542
        }
530
        $receiver_image = $storage->getUserImage($user);
543
 
531
        $filename =  $storage->getGenericFile($path, $message->uuid, $message->filename);
544
        // Actualizar última actividad del usuario
532
        $sender_profile = $this->url()->fromRoute('profile/view', ['id' => $currentUser->uuid]);
545
        $userMapper->updateLastActivity($currentUser->id);
533
        $receiver_profile = $this->url()->fromRoute('profile/view', ['id' => $user->uuid]);
546
 
534
 
547
        // Devolver respuesta exitosa con datos del mensaje
-
 
548
        return new JsonModel([
-
 
549
            'success' => true,
535
        // Devolver respuesta exitosa con datos del mensaje
550
            'data' => [
536
        return new JsonModel([
551
                'sender_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
-
 
552
                'sender_image' => $this->url()->fromRoute('storage', [
-
 
553
                    'type' => 'user',
537
            'success' => true,
554
                    'filename' => $currentUser->image,
-
 
555
                    'code' => $currentUser->uuid
-
 
556
                ], ['force_canonical' => true]),
538
            'data' => [
557
                'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $currentUser->uuid]),
539
                'sender_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
558
                'receiver_name' => trim($user->first_name . ' ' . $user->last_name),
-
 
559
                'receiver_image' => $this->url()->fromRoute('storage', [
-
 
560
                    'type' => 'user',
540
                'sender_image' => $sender_image,
561
                    'filename' => $user->image,
541
                'sender_profile' => $sender_profile,
562
                    'code' => $user->uuid
542
                'receiver_name' => trim($user->first_name . ' ' . $user->last_name),
563
                ], ['force_canonical' => true]),
543
                'receiver_image' => $receiver_image,
564
                'receiver_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
544
                'receiver_profile' => $receiver_profile,