From 1511ca97d9563fcae1d5aa3361142d52a92e5dff Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Sat, 16 May 2026 21:36:59 -0500 Subject: [PATCH] up --- pkg/models/notif_config.go | 14 +++++ pkg/services/notif_dispatch.go | 13 +++-- resources/views/facturas.html | 36 +++++++------ resources/views/portal/proyecto.html | 76 ++++++++++++++++++--------- rest/controllers/portal_controller.go | 24 ++++++--- rest/routes/portal.go | 1 + 6 files changed, 114 insertions(+), 50 deletions(-) diff --git a/pkg/models/notif_config.go b/pkg/models/notif_config.go index d3f2e61..daa9a5d 100644 --- a/pkg/models/notif_config.go +++ b/pkg/models/notif_config.go @@ -116,3 +116,17 @@ func MarcarTodasLeidas(tipoUsuario string, usuarioID uint) error { Where("tipo_usuario = ? AND (usuario_id = ? OR usuario_id = 0)", tipoUsuario, usuarioID). Update("leida", true).Error } + +func CountUnreadFacturaNotifs(usuarioID uint) int64 { + var count int64 + app.Http.Database.DB.Model(&SistemaNotificacion{}). + Where("tipo_usuario = 'portal_user' AND usuario_id = ? AND icono = 'π§Ύ' AND leida = false", usuarioID). + Count(&count) + return count +} + +func MarcarNotifsFacturasLeidas(usuarioID uint) error { + return app.Http.Database.DB.Model(&SistemaNotificacion{}). + Where("tipo_usuario = 'portal_user' AND usuario_id = ? AND icono = 'π§Ύ'", usuarioID). + Update("leida", true).Error +} diff --git a/pkg/services/notif_dispatch.go b/pkg/services/notif_dispatch.go index ded5df3..11365f2 100644 --- a/pkg/services/notif_dispatch.go +++ b/pkg/services/notif_dispatch.go @@ -147,10 +147,15 @@ func DispatchFacturaSubida(factura *models.Factura) { clienteNombre = factura.Cliente.Nombre } + baseURL := getAppURL() + // Construir URL apuntando a la pestaΓ±a Facturas del proyecto (o dashboard si no tiene proyecto) + portalURL := baseURL + "/portal/dashboard" + if factura.ProyectoID != nil && factura.Proyecto != nil && factura.Proyecto.Slug != "" { + portalURL = baseURL + "/portal/proyecto/" + factura.Proyecto.Slug + "?tab=Facturas" + } + for _, u := range portalUsers { u := u - baseURL := getAppURL() - portalURL := baseURL + "/portal/dashboard" titulo := fmt.Sprintf("Nueva factura disponible: %s", factura.Numero) cuerpo := fmt.Sprintf("Factura %s por %s %.2f", factura.Numero, factura.Moneda, factura.Monto) @@ -169,8 +174,8 @@ func DispatchFacturaSubida(factura *models.Factura) { } if cfg.CanalTelegram && u.TelegramChatID != "" { ts := NewTelegramService() - msg := fmt.Sprintf("π§Ύ Nueva factura disponible\nNΓΊmero: %s\nMonto: %s %.2f", - factura.Numero, factura.Moneda, factura.Monto) + msg := fmt.Sprintf("π§Ύ Nueva factura disponible\nNΓΊmero: %s\nMonto: %s %.2f\n\nπ Ver en el portal", + factura.Numero, factura.Moneda, factura.Monto, portalURL) if err := ts.SendMessageWithToken(u.TelegramChatID, msg, getAdminBotToken()); err != nil { log.Printf("[Notif] Error telegram portal_user %d: %v", u.ID, err) } diff --git a/resources/views/facturas.html b/resources/views/facturas.html index 4806e8f..2664df5 100644 --- a/resources/views/facturas.html +++ b/resources/views/facturas.html @@ -49,23 +49,27 @@ -
{{ .Descripcion }}
-{{ .Moneda }} {{ .Monto }}
- {{ if .FechaVencimiento }}Vence: {{ .FechaVencimiento.Format "02 Jan 2006" }}
{{ end }} + + + + +Sin facturas disponibles.
- {{ end }} + +Sin facturas disponibles.