Proyectos de Subversion LeadersLinked - Services

Rev

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

Rev 697 Rev 700
Línea 15... Línea 15...
15
 
15
 
Línea 16... Línea 16...
16
use LeadersLinked\Model\User;
16
use LeadersLinked\Model\User;
Línea 17... Línea -...
17
 
-
 
18
use LeadersLinked\Mapper\UserBlockedMapper;
-
 
-
 
17
 
19
 
18
use LeadersLinked\Mapper\UserBlockedMapper;
20
use LeadersLinked\Mapper\CompanyMapper;
19
 
21
use LeadersLinked\Mapper\CompanyUserMapper;
20
 
22
use LeadersLinked\Mapper\ConversationMapper;
-
 
23
use LeadersLinked\Mapper\MessageMapper;
21
use LeadersLinked\Mapper\ConversationMapper;
24
use LeadersLinked\Model\Conversation;
22
use LeadersLinked\Mapper\MessageMapper;
25
use LeadersLinked\Library\Image;
23
use LeadersLinked\Model\Conversation;
26
use Laminas\View\Model\JsonModel;
-
 
27
use LeadersLinked\Form\InMail\SendForm;
-
 
28
use LeadersLinked\Model\Message;
-
 
29
use LeadersLinked\Model\VideoConvert;
24
use Laminas\View\Model\JsonModel;
30
use LeadersLinked\Mapper\VideoConvertMapper;
25
use LeadersLinked\Form\InMail\SendForm;
31
use Laminas\Mvc\I18n\Translator;
26
use LeadersLinked\Model\Message;
Línea 32... Línea 27...
32
use LeadersLinked\Mapper\AbuseReportMapper;
27
use LeadersLinked\Mapper\AbuseReportMapper;
33
use LeadersLinked\Model\AbuseReport;
28
use LeadersLinked\Model\AbuseReport;
34
use LeadersLinked\Library\Storage;
29
use LeadersLinked\Library\Storage;
35
 
-
 
36
class InMailController extends AbstractActionController
30
 
37
{
31
class InMailController extends AbstractActionController
38
    /**
32
{
Línea 39... Línea 33...
39
     *
33
    /**
40
     * @var \Laminas\Db\Adapter\AdapterInterface
34
     * @var \Laminas\Db\Adapter\AdapterInterface
41
     */
35
     */
42
    private $adapter;
36
    private $adapter;
43
 
37
 
Línea 44... Línea -...
44
    /**
-
 
45
     *
38
    /**
46
     * @var \LeadersLinked\Cache\CacheInterface
-
 
47
     */
39
     *
48
    private $cache;
40
     * @var \LeadersLinked\Cache\CacheInterface
49
 
41
     */
Línea 50... Línea 42...
50
 
42
    private $cache;
51
    /**
-
 
52
     *
43
 
53
     * @var \Laminas\Log\LoggerInterface
44
    /**
54
     */
45
     * @var \Laminas\Log\LoggerInterface
Línea 55... Línea -...
55
    private $logger;
-
 
56
 
46
     */
57
    /**
-
 
58
     *
47
    private $logger;
59
     * @var array
48
 
60
     */
49
    /**
Línea 61... Línea 50...
61
    private $config;
50
     * @var array
62
 
-
 
63
 
51
     */
64
    /**
52
    private $config;
65
     *
53
 
66
     * @var \Laminas\Mvc\I18n\Translator
54
    /**
67
     */
55
     * @var \Laminas\Mvc\I18n\Translator
Línea 83... Línea 71...
83
        $this->logger       = $logger;
71
        $this->logger       = $logger;
84
        $this->config       = $config;
72
        $this->config       = $config;
85
        $this->translator   = $translator;
73
        $this->translator   = $translator;
86
    }
74
    }
Línea 87... Línea -...
87
 
-
 
88
    /**
-
 
89
     * Genera el listado de conversaciones del usuario actual
-
 
90
     * 
-
 
91
     * Endpoint: GET /inmail
-
 
92
     * 
-
 
93
     * Parámetros de ruta:
-
 
94
     * - id: UUID del usuario o empresa para seleccionar automáticamente (opcional)
-
 
95
     * 
-
 
96
     * Respuesta exitosa:
-
 
97
     * [
-
 
98
     *   success: true,
-
 
99
     *   data: [
-
 
100
     *     [
-
 
101
     *       uuid: UUID del usuario/empresa con quien se tiene la conversación,
-
 
102
     *       name: nombre del usuario/empresa,
-
 
103
     *       image: URL de la imagen del usuario/empresa,
-
 
104
     *       profile: URL del perfil del usuario/empresa,
-
 
105
     *       last_message: tiempo transcurrido del último mensaje,
-
 
106
     *       count_unread: cantidad de mensajes sin leer,
-
 
107
     *       messages_url: URL para recuperar los mensajes,
-
 
108
     *       send_link: URL para enviar mensaje,
-
 
109
     *       selected: 0 = no seleccionado, 1 = seleccionado,
-
 
110
     *       delete_link: URL para eliminar la conversación
-
 
111
     *     ]
-
 
112
     *   ]
-
 
113
     * ]
-
 
114
     * 
-
 
115
     * Respuesta de error:
-
 
116
     * [
-
 
117
     *   success: false,
-
 
118
     *   data: mensaje de error
-
 
119
     * ]
-
 
120
     * 
-
 
121
     * @return \Laminas\View\Model\JsonModel
-
 
122
     */
75
 
123
    public function indexAction()
76
    public function indexAction()
124
    {
77
    {
Línea 125... Línea 78...
125
        $request = $this->getRequest();
78
        $request = $this->getRequest();
Línea 199... Línea 152...
199
                'name' => trim($user->first_name . ' ' . $user->last_name),
152
                'name' => trim($user->first_name . ' ' . $user->last_name),
200
                'image' => $storage->getUserImage($user),
153
                'image' => $storage->getUserImage($user),
201
                'profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
154
                'profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
202
                'last_message' => $timeElapsedString,
155
                'last_message' => $timeElapsedString,
203
                'count_unread' => $unread,
156
                'count_unread' => $unread,
204
                'messages_url' => $this->url()->fromRoute('inmail/messages',['uuid' => $user->uuid], ['force_canonical' => true]),
-
 
205
                'selected' => 0,
157
                'selected' => 0,
206
            ]);
158
            ]);
207
        }
159
        }
Línea 208... Línea 160...
208
 
160
 
Línea 223... Línea 175...
223
            'success' => true,
175
            'success' => true,
224
            'data' => $conversations
176
            'data' => $conversations
225
        ]);
177
        ]);
226
    }
178
    }
Línea 227... Línea -...
227
 
-
 
228
 
179
 
229
    public function getMessagesAction()
180
    public function getMessagesAction()
230
    {
181
    {
Línea 231... Línea 182...
231
        $request = $this->getRequest();
182
        $request = $this->getRequest();
Línea 385... Línea 336...
385
            'data' => $messages,
336
            'data' => $messages,
386
            'pagination' => 1
337
            'pagination' => 1
387
        ]);
338
        ]);
388
    }
339
    }
Línea 389... Línea -...
389
 
-
 
390
    /**
-
 
391
     * Envía un mensaje InMail a un usuario específico
-
 
392
     * 
-
 
393
     * Endpoint: POST /inmail/messages/send/:uuid
-
 
394
     * 
-
 
395
     * Parámetros requeridos:
-
 
396
     * - message: texto plano del mensaje
-
 
397
     * 
-
 
398
     * Parámetros opcionales:
-
 
399
     * - file: archivo adjunto (jpg, jpeg, png, mp4, webm, mpeg, pdf)
-
 
400
     * 
-
 
401
     * @return JsonModel
-
 
402
     */
340
 
403
    public function sendMessageAction()
341
    public function sendMessageAction()
404
    {
342
    {
405
        // Verificar que la petición sea POST
343
        // Verificar que la petición sea POST
406
        $request = $this->getRequest();
344
        $request = $this->getRequest();
Línea 597... Línea 535...
597
                'date' => $this->timeAgo($now, $now),
535
                'date' => $this->timeAgo($now, $now),
598
            ]
536
            ]
599
        ]);
537
        ]);
600
    }
538
    }
Línea 601... Línea -...
601
 
-
 
602
    /**
-
 
603
     *
-
 
604
     * @param string $timestamp
-
 
605
     * @param string $now
-
 
606
     * @return string
-
 
607
     */
539
 
608
    private function timeAgo($timestamp, $now = '')
540
    private function timeAgo($timestamp, $now = '')
Línea 609... Línea 541...
609
    {
541
    {
610
 
542
 
Línea 637... Línea 569...
637
            $timemsg = $this->translator->translate('LABEL_AGO_SMALL') . ' ' . $timemsg . '';
569
            $timemsg = $this->translator->translate('LABEL_AGO_SMALL') . ' ' . $timemsg . '';
638
        }
570
        }
639
        return $timemsg;
571
        return $timemsg;
640
    }
572
    }
Línea 641... Línea -...
641
 
-
 
642
    /**
-
 
643
     * Elimina una conversación de mensajes
-
 
644
     * 
-
 
645
     * Endpoint: POST /inmail/messages/delete/:uuid
-
 
646
     * 
-
 
647
     * Respuesta exitosa:
-
 
648
     * [
-
 
649
     *   success: true,
-
 
650
     *   data: "LABEL_CONVERSATION_WAS_DELETED"
-
 
651
     * ]
-
 
652
     * 
-
 
653
     * Respuesta de error:
-
 
654
     * [
-
 
655
     *   success: false,
-
 
656
     *   data: mensaje de error
-
 
657
     * ]
-
 
658
     * 
-
 
659
     * @return \Laminas\View\Model\JsonModel
-
 
660
     */
573
 
661
    public function deleteMessageAction()
574
    public function deleteMessageAction()
662
    {
575
    {
663
        $request = $this->getRequest();
576
        $request = $this->getRequest();
664
        if ($request->isPost()) {
577
        if ($request->isPost()) {