| Línea 287... |
Línea 287... |
| 287 |
'data' => 'ERROR_METHOD_NOT_ALLOWED'
|
287 |
'data' => 'ERROR_METHOD_NOT_ALLOWED'
|
| 288 |
]);
|
288 |
]);
|
| 289 |
}
|
289 |
}
|
| 290 |
}
|
290 |
}
|
| Línea 291... |
Línea -... |
| 291 |
|
- |
|
| 292 |
|
291 |
|
| 293 |
/**
|
292 |
/**
|
| - |
|
293 |
* Recupera los mensajes de una conversación específica entre usuarios
|
| 294 |
* Esta función remueve el usuario del grupo
|
294 |
*
|
| - |
|
295 |
* Endpoint: GET /inmail/message/:id
|
| 295 |
* Es una petición GET el url recuperado en /inmail
|
296 |
*
|
| - |
|
297 |
* Parámetros de consulta:
|
| - |
|
298 |
* - page: número de página para paginación (opcional, por defecto 0)
|
| 296 |
* [ruta del servidor]/inmail/[uuid]/message
|
299 |
*
|
| 297 |
* retorna un json en caso de ser positivo
|
300 |
* Respuesta exitosa:
|
| 298 |
* [
|
301 |
* [
|
| 299 |
* success: true,
|
302 |
* success: true,
|
| 300 |
* data: [
|
303 |
* data: [
|
| - |
|
304 |
* [
|
| 301 |
* [
|
305 |
* uuid: UUID del mensaje,
|
| 302 |
* sender_name: nombre de quien que envia el mensaje,
|
306 |
* sender_name: nombre del remitente,
|
| 303 |
* sender_image: imagen de quien que recibe el mensaje,
|
307 |
* sender_image: URL de la imagen del remitente,
|
| 304 |
* sender_profile: url de profile de quien que envia el mensaje,
|
308 |
* sender_profile: URL del perfil del remitente,
|
| 305 |
* receiver_name: nombre de quien que recibe el mensaje,
|
309 |
* receiver_name: nombre del destinatario,
|
| 306 |
* receiver_image: url de la imagen de quien que recibe el mensaje,
|
310 |
* receiver_image: URL de la imagen del destinatario,
|
| 307 |
* receiver_profile: url del profile de quien recibe el mensaje,
|
311 |
* receiver_profile: URL del perfil del destinatario,
|
| 308 |
* side: left/righ de que lado de la pantalla se mostrara,
|
312 |
* side: 'left' (mensaje propio) | 'right' (mensaje recibido),
|
| 309 |
* message: texto del mensaje,
|
313 |
* message: contenido del mensaje,
|
| 310 |
* type: text|image|video|document,
|
314 |
* type: 'text' | 'image' | 'video' | 'document',
|
| 311 |
* filename: url del archivo enviado,
|
315 |
* filename: URL del archivo adjunto (si existe),
|
| - |
|
316 |
* date: tiempo transcurrido desde el envío,
|
| 312 |
* date: cadena que describe hace cuanto se recibio el mensaje
|
317 |
* url_abuse_report: URL para reportar abuso (solo mensajes recibidos)
|
| 313 |
* ]
|
318 |
* ]
|
| - |
|
319 |
* ],
|
| 314 |
* ]
|
320 |
* pagination: información de paginación
|
| - |
|
321 |
* ]
|
| 315 |
* ]
|
322 |
*
|
| 316 |
* En caso de ser negativo puede haber 2 formatos
|
323 |
* Respuesta de error:
|
| 317 |
* [
|
324 |
* [
|
| 318 |
* 'success' : false,
|
325 |
* success: false,
|
| 319 |
* 'data' : mensaje de error
|
326 |
* data: mensaje de error
|
| - |
|
327 |
* ]
|
| 320 |
* ]
|
328 |
*
|
| 321 |
* @return \Laminas\View\Model\JsonModel
|
329 |
* @return \Laminas\View\Model\JsonModel
|
| 322 |
*/
|
330 |
*/
|
| 323 |
public function messageAction()
|
331 |
public function messageAction()
|
| 324 |
{
|
332 |
{
|
| 325 |
$request = $this->getRequest();
|
- |
|
| 326 |
if ($request->isGet()) {
|
- |
|
| 327 |
$page = intval($this->params()->fromQuery('page', 0), 10);
|
333 |
$request = $this->getRequest();
|
| 328 |
|
- |
|
| 329 |
$currentUserPlugin = $this->plugin('currentUserPlugin');
|
- |
|
| 330 |
$currentUser = $currentUserPlugin->getUser();
|
- |
|
| 331 |
|
- |
|
| 332 |
$userMapper = UserMapper::getInstance($this->adapter);
|
334 |
|
| 333 |
$now = $userMapper->getDatebaseNow();
|
- |
|
| 334 |
|
- |
|
| 335 |
$conversationMapper = ConversationMapper::getInstance($this->adapter);
|
- |
|
| 336 |
|
- |
|
| 337 |
$messageMapper = MessageMapper::getInstance($this->adapter);
|
- |
|
| 338 |
|
- |
|
| 339 |
$id = $this->params()->fromRoute('id');
|
- |
|
| 340 |
if (!$id) {
|
- |
|
| 341 |
return new JsonModel([
|
- |
|
| 342 |
'success' => false,
|
- |
|
| 343 |
'data' => 'ERROR_PARAMETERS_ARE_INVALID'
|
- |
|
| 344 |
]);
|
- |
|
| 345 |
}
|
- |
|
| 346 |
|
- |
|
| 347 |
$user = $userMapper->fetchOneByUuid($id);
|
335 |
// Verificar que la petición sea GET
|
| 348 |
if (!$user) {
|
336 |
if (!$request->isGet()) {
|
| 349 |
return new JsonModel([
|
337 |
return new JsonModel([
|
| 350 |
'success' => false,
|
338 |
'success' => false,
|
| 351 |
'data' => 'ERROR_REQUEST_IS_INVALID'
|
339 |
'data' => 'ERROR_METHOD_NOT_ALLOWED'
|
| 352 |
]);
|
340 |
]);
|
| 353 |
}
|
- |
|
| 354 |
|
- |
|
| 355 |
$abuseReportMapper = AbuseReportMapper::getInstance($this->adapter);
|
- |
|
| 356 |
$abuse_report_message_ids = $abuseReportMapper->fetchAllDataByUserReportingIdAndTypeReturnIds($currentUser->id, AbuseReport::TYPE_INMAIL_MESSAGE);
|
- |
|
| 357 |
|
- |
|
| 358 |
|
- |
|
| 359 |
$conversationMapper = ConversationMapper::getInstance($this->adapter);
|
- |
|
| 360 |
$conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
|
- |
|
| 361 |
|
- |
|
| 362 |
$messages = [];
|
- |
|
| 363 |
if ($conversation) {
|
- |
|
| 364 |
$records = $messageMapper->getAllMessagesPaginatorByConversationId($conversation->id, $page);
|
- |
|
| Línea -... |
Línea 341... |
| - |
|
341 |
}
|
| - |
|
342 |
|
| - |
|
343 |
// ========================================
|
| - |
|
344 |
// INICIALIZACIÓN Y VALIDACIÓN DE PARÁMETROS
|
| 365 |
|
345 |
// ========================================
|
| - |
|
346 |
|
| - |
|
347 |
// Obtener parámetros de la petición
|
| - |
|
348 |
$page = intval($this->params()->fromQuery('page', 0), 10);
|
| - |
|
349 |
$id = $this->params()->fromRoute('id');
|
| 366 |
|
350 |
|
| 367 |
foreach ($records as $record) {
|
351 |
// Validar que se proporcione el ID del usuario
|
| 368 |
/*
|
352 |
if (!$id) {
|
| 369 |
echo '<pre>';
|
353 |
return new JsonModel([
|
| - |
|
354 |
'success' => false,
|
| - |
|
355 |
'data' => 'ERROR_PARAMETERS_ARE_INVALID'
|
| Línea -... |
Línea 356... |
| - |
|
356 |
]);
|
| 370 |
print_r($record);
|
357 |
}
|
| - |
|
358 |
|
| - |
|
359 |
// Obtener el usuario actual autenticado
|
| - |
|
360 |
$currentUserPlugin = $this->plugin('currentUserPlugin');
|
| - |
|
361 |
$currentUser = $currentUserPlugin->getUser();
|
| - |
|
362 |
|
| - |
|
363 |
// Obtener la fecha actual de la base de datos para cálculos de tiempo
|
| - |
|
364 |
$userMapper = UserMapper::getInstance($this->adapter);
|
| - |
|
365 |
$now = $userMapper->getDatebaseNow();
|
| - |
|
366 |
|
| - |
|
367 |
// ========================================
|
| - |
|
368 |
// VALIDACIÓN DEL USUARIO DESTINATARIO
|
| - |
|
369 |
// ========================================
|
| - |
|
370 |
|
| - |
|
371 |
// Buscar el usuario destinatario por UUID
|
| - |
|
372 |
$user = $userMapper->fetchOneByUuid($id);
|
| - |
|
373 |
if (!$user) {
|
| - |
|
374 |
return new JsonModel([
|
| - |
|
375 |
'success' => false,
|
| Línea -... |
Línea 376... |
| - |
|
376 |
'data' => 'ERROR_REQUEST_IS_INVALID'
|
| - |
|
377 |
]);
|
| - |
|
378 |
}
|
| - |
|
379 |
|
| - |
|
380 |
// ========================================
|
| - |
|
381 |
// OBTENCIÓN DE REPORTES DE ABUSO
|
| - |
|
382 |
// ========================================
|
| - |
|
383 |
|
| - |
|
384 |
// Obtener IDs de mensajes reportados por el usuario actual
|
| - |
|
385 |
$abuseReportMapper = AbuseReportMapper::getInstance($this->adapter);
|
| - |
|
386 |
$abuse_report_message_ids = $abuseReportMapper->fetchAllDataByUserReportingIdAndTypeReturnIds(
|
| - |
|
387 |
$currentUser->id,
|
| - |
|
388 |
AbuseReport::TYPE_INMAIL_MESSAGE
|
| - |
|
389 |
);
|
| - |
|
390 |
|
| - |
|
391 |
// ========================================
|
| - |
|
392 |
// BÚSQUEDA DE LA CONVERSACIÓN
|
| - |
|
393 |
// ========================================
|
| - |
|
394 |
|
| - |
|
395 |
$conversationMapper = ConversationMapper::getInstance($this->adapter);
|
| - |
|
396 |
$messageMapper = MessageMapper::getInstance($this->adapter);
|
| - |
|
397 |
|
| - |
|
398 |
// Buscar la conversación entre los dos usuarios
|
| - |
|
399 |
$conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
|
| - |
|
400 |
|
| - |
|
401 |
$messages = [];
|
| - |
|
402 |
|
| - |
|
403 |
// ========================================
|
| - |
|
404 |
// PROCESAMIENTO DE MENSAJES
|
| - |
|
405 |
// ========================================
|
| - |
|
406 |
|
| - |
|
407 |
if ($conversation) {
|
| - |
|
408 |
// Obtener mensajes paginados de la conversación
|
| - |
|
409 |
$records = $messageMapper->getAllMessagesPaginatorByConversationId($conversation->id, $page);
|
| - |
|
410 |
|
| - |
|
411 |
foreach ($records as $record) {
|
| - |
|
412 |
// Calcular tiempo transcurrido desde el envío del mensaje
|
| - |
|
413 |
$timeElapsedString = $this->timeAgo($record->added_on, $now);
|
| - |
|
414 |
|
| - |
|
415 |
// ========================================
|
| - |
|
416 |
// MENSAJES ENVIADOS POR EL USUARIO ACTUAL
|
| - |
|
417 |
// ========================================
|
| - |
|
418 |
|
| - |
|
419 |
if ($record->sender_id == $currentUser->id) {
|
| - |
|
420 |
array_push($messages, [
|
| - |
|
421 |
'uuid' => $record->uuid,
|
| - |
|
422 |
'sender_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
|
| - |
|
423 |
'sender_image' => $this->url()->fromRoute('storage', [
|
| - |
|
424 |
'type' => 'user',
|
| - |
|
425 |
'filename' => $currentUser->image,
|
| - |
|
426 |
'code' => $currentUser->uuid
|
| - |
|
427 |
], ['force_canonical' => true]),
|
| - |
|
428 |
'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $currentUser->uuid]),
|
| - |
|
429 |
'receiver_name' => trim($user->first_name . ' ' . $user->last_name),
|
| - |
|
430 |
'receiver_image' => $this->url()->fromRoute('storage', [
|
| - |
|
431 |
'type' => 'user',
|
| - |
|
432 |
'filename' => $user->image,
|
| - |
|
433 |
'code' => $user->uuid
|
| - |
|
434 |
], ['force_canonical' => true]),
|
| - |
|
435 |
'receiver_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
|
| - |
|
436 |
'side' => 'left', // Mensaje propio (lado izquierdo)
|
| - |
|
437 |
'message' => $record->message,
|
| - |
|
438 |
'type' => $record->type,
|
| - |
|
439 |
'filename' => $record->filename ? $this->url()->fromRoute('storage', [
|
| - |
|
440 |
'type' => 'message',
|
| - |
|
441 |
'filename' => $record->filename,
|
| - |
|
442 |
'code' => $record->uuid
|
| - |
|
443 |
], ['force_canonical' => true]) : '',
|
| - |
|
444 |
'date' => $timeElapsedString,
|
| - |
|
445 |
'url_abuse_report' => '', // No se puede reportar mensajes propios
|
| - |
|
446 |
]);
|
| - |
|
447 |
}
|
| - |
|
448 |
// ========================================
|
| - |
|
449 |
// MENSAJES RECIBIDOS DEL OTRO USUARIO
|
| - |
|
450 |
// ========================================
|
| - |
|
451 |
else {
|
| - |
|
452 |
// Verificar si el mensaje ha sido reportado por abuso
|
| - |
|
453 |
if (in_array($record->id, $abuse_report_message_ids)) {
|
| - |
|
454 |
// Mensaje reportado - mostrar mensaje de contenido reportado
|
| - |
|
455 |
array_push($messages, [
|
| - |
|
456 |
'uuid' => $record->uuid,
|
| - |
|
457 |
'sender_name' => trim($user->first_name . ' ' . $user->last_name),
|
| - |
|
458 |
'sender_image' => $this->url()->fromRoute('storage', [
|
| - |
|
459 |
'type' => 'user',
|
| - |
|
460 |
'filename' => $user->image,
|
| - |
|
461 |
'code' => $user->uuid
|
| - |
|
462 |
], ['force_canonical' => true]),
|
| - |
|
463 |
'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
|
| - |
|
464 |
'receiver_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
|
| - |
|
465 |
'receiver_image' => $this->url()->fromRoute('storage', [
|
| - |
|
466 |
'type' => 'user',
|
| - |
|
467 |
'filename' => $currentUser->image,
|
| - |
|
468 |
'code' => $user->uuid
|
| - |
|
469 |
], ['force_canonical' => true]),
|
| - |
|
470 |
'receiver_profile' => $this->url()->fromRoute('profile/view', ['id' => $currentUser->uuid]),
|
| - |
|
471 |
'side' => 'right', // Mensaje recibido (lado derecho)
|
| - |
|
472 |
'message' => 'LABEL_ABUSE_CONTENT_REPORTED',
|
| - |
|
473 |
'type' => Message::TYPE_TEXT,
|
| - |
|
474 |
'filename' => '',
|
| - |
|
475 |
'date' => $timeElapsedString,
|
| - |
|
476 |
'url_abuse_report' => '', // Ya no se puede reportar
|
| - |
|
477 |
]);
|
| - |
|
478 |
} else {
|
| - |
|
479 |
// Mensaje normal - generar URL para reportar abuso
|
| Línea 371... |
Línea -... |
| 371 |
echo '</pre>'; */
|
- |
|
| 372 |
|
480 |
$url_abuse_report = $this->url()->fromRoute('helpers/abuse-report', [
|
| 373 |
$timeElapsedString = $this->timeAgo($record->added_on, $now);
|
481 |
'type' => 'message',
|
| 374 |
|
482 |
'id' => $record->uuid
|
| 375 |
|
483 |
], ['force_canonical' => true]);
|
| - |
|
484 |
|
| - |
|
485 |
array_push($messages, [
|
| - |
|
486 |
'uuid' => $record->uuid,
|
| - |
|
487 |
'sender_name' => trim($user->first_name . ' ' . $user->last_name),
|
| 376 |
if ($record->sender_id == $currentUser->id) {
|
488 |
'sender_image' => $this->url()->fromRoute('storage', [
|
| 377 |
array_push($messages, [
|
489 |
'type' => 'user',
|
| 378 |
'uuid' => $record->uuid,
|
490 |
'filename' => $user->image,
|
| - |
|
491 |
'code' => $user->uuid
|
| - |
|
492 |
], ['force_canonical' => true]),
|
| - |
|
493 |
'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
|
| - |
|
494 |
'receiver_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
|
| 379 |
'sender_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
|
495 |
'receiver_image' => $this->url()->fromRoute('storage', [
|
| 380 |
'sender_image' => $this->url()->fromRoute('storage', ['type' => 'user', 'filename' => $currentUser->image, 'code' => $currentUser->uuid], ['force_canonical' => true]),
|
496 |
'type' => 'user',
|
| 381 |
'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $currentUser->uuid]),
|
497 |
'filename' => $currentUser->image,
|
| 382 |
'receiver_name' => trim($user->first_name . ' ' . $user->last_name),
|
498 |
'code' => $user->uuid
|
| 383 |
'receiver_image' => $this->url()->fromRoute('storage', ['type' => 'user', 'filename' => $user->image, 'code' => $user->uuid], ['force_canonical' => true]),
|
499 |
], ['force_canonical' => true]),
|
| - |
|
500 |
'receiver_profile' => $this->url()->fromRoute('profile/view', ['id' => $currentUser->uuid]),
|
| - |
|
501 |
'side' => 'right', // Mensaje recibido (lado derecho)
|
| - |
|
502 |
'message' => $record->message,
|
| - |
|
503 |
'type' => $record->type,
|
| 384 |
'receiver_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
|
504 |
'filename' => $record->filename ? $this->url()->fromRoute('storage', [
|
| 385 |
'side' => 'left',
|
505 |
'type' => 'message',
|
| 386 |
'message' => $record->message,
|
506 |
'filename' => $record->filename,
|
| 387 |
'type' => $record->type,
|
- |
|
| 388 |
'filename' => $record->filename ? $this->url()->fromRoute('storage', ['type' => 'message', 'filename' => $record->filename, 'code' => $record->uuid], ['force_canonical' => true]) : '',
|
- |
|
| 389 |
'date' => $timeElapsedString,
|
- |
|
| 390 |
'url_abuse_report' => '',
|
- |
|
| 391 |
]);
|
- |
|
| 392 |
} else {
|
- |
|
| 393 |
|
- |
|
| 394 |
if (in_array($record->id, $abuse_report_message_ids)) {
|
- |
|
| 395 |
|
- |
|
| 396 |
array_push($messages, [
|
- |
|
| 397 |
'uuid' => $record->uuid,
|
- |
|
| 398 |
'sender_name' => trim($user->first_name . ' ' . $user->last_name),
|
- |
|
| 399 |
'sender_image' => $this->url()->fromRoute('storage', ['type' => 'user', 'filename' => $user->image, 'code' => $user->uuid], ['force_canonical' => true]),
|
- |
|
| 400 |
'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
|
- |
|
| 401 |
'receiver_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
|
- |
|
| 402 |
'receiver_image' => $this->url()->fromRoute('storage', ['type' => 'user', 'filename' => $currentUser->image, 'code' => $user->uuid], ['force_canonical' => true]),
|
- |
|
| 403 |
'receiver_profile' => $this->url()->fromRoute('profile/view', ['id' => $currentUser->uuid]),
|
- |
|
| 404 |
'side' => 'right',
|
- |
|
| 405 |
'message' => 'LABEL_ABUSE_CONTENT_REPORTED',
|
- |
|
| 406 |
'type' => Message::TYPE_TEXT,
|
- |
|
| 407 |
'filename' => '',
|
- |
|
| 408 |
'date' => $timeElapsedString,
|
- |
|
| 409 |
'url_abuse_report' => '',
|
- |
|
| 410 |
]);
|
- |
|
| 411 |
} else {
|
- |
|
| 412 |
$url_abuse_report = $this->url()->fromRoute('helpers/abuse-report', ['type' => 'message', 'id' => $record->uuid], ['force_canonical' => true]);
|
- |
|
| 413 |
|
- |
|
| 414 |
array_push($messages, [
|
- |
|
| 415 |
'uuid' => $record->uuid,
|
- |
|
| 416 |
'sender_name' => trim($user->first_name . ' ' . $user->last_name),
|
- |
|
| 417 |
'sender_image' => $this->url()->fromRoute('storage', ['type' => 'user', 'filename' => $user->image, 'code' => $user->uuid], ['force_canonical' => true]),
|
- |
|
| 418 |
'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
|
- |
|
| 419 |
'receiver_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
|
- |
|
| 420 |
'receiver_image' => $this->url()->fromRoute('storage', ['type' => 'user', 'filename' => $currentUser->image, 'code' => $user->uuid], ['force_canonical' => true]),
|
- |
|
| 421 |
'receiver_profile' => $this->url()->fromRoute('profile/view', ['id' => $currentUser->uuid]),
|
- |
|
| 422 |
'side' => 'right',
|
- |
|
| 423 |
'message' => $record->message,
|
- |
|
| 424 |
'type' => $record->type,
|
- |
|
| Línea -... |
Línea 507... |
| - |
|
507 |
'code' => $record->uuid
|
| 425 |
'filename' => $record->filename ? $this->url()->fromRoute('storage', ['type' => 'message', 'filename' => $record->filename, 'code' => $record->uuid], ['force_canonical' => true]) : '',
|
508 |
], ['force_canonical' => true]) : '',
|
| 426 |
'date' => $timeElapsedString,
|
509 |
'date' => $timeElapsedString,
|
| 427 |
'url_abuse_report' => $url_abuse_report,
|
510 |
'url_abuse_report' => $url_abuse_report,
|
| 428 |
]);
|
- |
|
| 429 |
}
|
- |
|
| 430 |
|
- |
|
| 431 |
$messageMapper->markAsRead($record->id);
|
- |
|
| 432 |
}
|
- |
|
| 433 |
}
|
- |
|
| 434 |
|
511 |
]);
|
| Línea -... |
Línea 512... |
| - |
|
512 |
|
| - |
|
513 |
// Marcar el mensaje como leído
|
| - |
|
514 |
$messageMapper->markAsRead($record->id);
|
| 435 |
return new JsonModel([
|
515 |
}
|
| 436 |
'success' => true,
|
516 |
}
|
| 437 |
'data' => $messages,
|
517 |
}
|
| 438 |
'pagination' => $records->getPages()
|
518 |
|
| 439 |
]);
|
519 |
// ========================================
|
| 440 |
}
|
- |
|
| 441 |
|
- |
|
| 442 |
|
- |
|
| 443 |
return new JsonModel([
|
- |
|
| 444 |
'success' => true,
|
- |
|
| 445 |
'data' => $messages,
|
520 |
// RESPUESTA CON MENSAJES Y PAGINACIÓN
|
| 446 |
'pagination' => 1
|
521 |
// ========================================
|
| - |
|
522 |
|
| - |
|
523 |
return new JsonModel([
|
| - |
|
524 |
'success' => true,
|
| - |
|
525 |
'data' => $messages,
|
| - |
|
526 |
'pagination' => $records->getPages()
|
| - |
|
527 |
]);
|
| - |
|
528 |
}
|
| - |
|
529 |
|
| - |
|
530 |
// ========================================
|
| - |
|
531 |
// RESPUESTA CUANDO NO EXISTE CONVERSACIÓN
|
| 447 |
]);
|
532 |
// ========================================
|
| Línea 448... |
Línea 533... |
| 448 |
} else {
|
533 |
|
| 449 |
return new JsonModel([
|
534 |
return new JsonModel([
|
| 450 |
'success' => false,
|
535 |
'success' => true,
|