@forelse ($notificaciones_usuario as $notificacionUsuario) @php $datosNotificacion = $notificacionUsuario->datos_notificacion; $config = $datosNotificacion ? $datosNotificacion->moduloConfig() : \App\Notificacion::configuracionVisualModulo(); $iconoImagen = $datosNotificacion ? $datosNotificacion->iconoModuloImagen() : null; $modulo = $datosNotificacion ? $datosNotificacion->moduloLabel() : 'General'; $generadoPor = $datosNotificacion ? $datosNotificacion->generadoPorNombre() : \App\Notificacion::normalizarNombreGeneradorVisual('Sistema'); // La campanita conserva el layout y muestra fecha corta sin hora. $fecha = $datosNotificacion ? $datosNotificacion->fechaVisual(false) : 'Sin fecha'; $contenidoHomologado = $datosNotificacion ? $datosNotificacion->contenidoVisualHomologado() : ['homologado' => false, 'titulo' => '', 'filas' => []]; $esInformePdfCobranza = $datosNotificacion && $datosNotificacion->esInformePdfCobranza(); $datosInformePdfCobranza = $esInformePdfCobranza && !$contenidoHomologado['homologado'] ? $datosNotificacion->datosVisualesInformePdfCobranza() : null; $esSolicitudReemplazoInformeCobranza = $datosNotificacion && $datosNotificacion->esSolicitudReemplazoInformeCobranza(); $datosSolicitudReemplazoInformeCobranza = $esSolicitudReemplazoInformeCobranza && !$contenidoHomologado['homologado'] ? $datosNotificacion->datosVisualesSolicitudReemplazoInformeCobranza() : null; $esInformeLiberadoCobranza = $datosNotificacion && $datosNotificacion->esInformeLiberadoCobranza(); $datosInformeLiberadoCobranza = $esInformeLiberadoCobranza && !$contenidoHomologado['homologado'] ? $datosNotificacion->datosVisualesInformeLiberadoCobranza() : null; $esInformePdfFacturacion = $datosNotificacion && $datosNotificacion->esInformePdfFacturacion(); $datosInformePdfFacturacion = $esInformePdfFacturacion && !$contenidoHomologado['homologado'] ? $datosNotificacion->datosVisualesInformePdfFacturacion() : null; $esBloqueNotificacionesGeneralesLineaPruebas = $datosNotificacion && $datosNotificacion->esBloqueNotificacionesGeneralesLineaPruebas(); $datosNotificacionGeneralLineaPruebas = $esBloqueNotificacionesGeneralesLineaPruebas && !$contenidoHomologado['homologado'] ? $datosNotificacion->datosVisualesNotificacionGeneralLineaPruebas() : null; $esNotificacionManualAlmacen = $datosNotificacion && $datosNotificacion->esNotificacionManualAlmacen(); $datosNotificacionManualAlmacen = $esNotificacionManualAlmacen && !$contenidoHomologado['homologado'] ? $datosNotificacion->datosVisualesNotificacionManualAlmacen() : null; $esNotificacionBancos = $datosNotificacion && $datosNotificacion->moduloNamespace() === 'bancos'; $estadoClass = $notificacionUsuario->estaVista() ? 'notification-dropdown-card--viewed' : 'notification-dropdown-card--pending'; $requiereAccion = $datosNotificacion ? (int) $datosNotificacion->requiere_accion === 1 : false; $limpiarTextoDropdown = function ($texto) { $texto = html_entity_decode(strip_tags((string) $texto), ENT_QUOTES, 'UTF-8'); $texto = preg_replace('/\s+/u', ' ', trim($texto)); return trim((string) $texto); }; $candidatosMensaje = []; $detallesDropdown = []; if ($datosNotificacion) { $detallesDropdown = $datosNotificacion->detallesAdicionales(); $candidatosMensaje = [ isset($detallesDropdown['Mensaje']) ? $limpiarTextoDropdown($detallesDropdown['Mensaje']) : '', $limpiarTextoDropdown($datosNotificacion->mensajeVisual()), $limpiarTextoDropdown($datosNotificacion->textoPrincipal()), $limpiarTextoDropdown($datosNotificacion->titulo), $datosNotificacion->datos_tipo_notificacion ? $limpiarTextoDropdown($datosNotificacion->datos_tipo_notificacion->tipo) : '', $limpiarTextoDropdown($datosNotificacion->tipoVisual()), $limpiarTextoDropdown($datosNotificacion->descripcion), ]; } $mensajesGenericos = [ 'alert', 'system', 'create', 'update', 'delete', 'restore', 'notificacion del sistema', 'notificación del sistema', ]; $mensajePrincipal = 'Notificación no disponible.'; foreach ($candidatosMensaje as $candidatoMensaje) { if ($candidatoMensaje === '') { continue; } $candidatoNormalizado = function_exists('mb_strtolower') ? mb_strtolower($candidatoMensaje, 'UTF-8') : strtolower($candidatoMensaje); if (in_array($candidatoNormalizado, $mensajesGenericos, true)) { continue; } $mensajePrincipal = $candidatoMensaje; break; } $mensajePrincipal = \Illuminate\Support\Str::limit($mensajePrincipal, 100); @endphp