From fef471ff6c64aec7b844c5c4bc0207856db5e43d Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Sat, 16 May 2026 14:37:57 -0500 Subject: [PATCH] up --- pkg/models/proyecto_ticket.go | 10 +++++++ rest/controllers/proyecto_controller.go | 18 +++++++++++++ rest/routes/user.go | 36 +++++++++++++++++++++++++ 3 files changed, 64 insertions(+) diff --git a/pkg/models/proyecto_ticket.go b/pkg/models/proyecto_ticket.go index 45bdbd2..bda8f1f 100644 --- a/pkg/models/proyecto_ticket.go +++ b/pkg/models/proyecto_ticket.go @@ -67,3 +67,13 @@ func GetTicketsByPortalUser(portalUserID uint) ([]ProyectoTicket, error) { Preload("Mensajes").Order("created_at DESC").Find(&items).Error return items, err } + +func GetAllTickets(estado string) ([]ProyectoTicket, error) { + var items []ProyectoTicket + db := app.Http.Database.DB.Preload("Mensajes").Order("created_at DESC") + if estado != "" && estado != "todos" { + db = db.Where("estado = ?", estado) + } + err := db.Find(&items).Error + return items, err +} diff --git a/rest/controllers/proyecto_controller.go b/rest/controllers/proyecto_controller.go index 994ceb1..f9d45f5 100644 --- a/rest/controllers/proyecto_controller.go +++ b/rest/controllers/proyecto_controller.go @@ -459,6 +459,24 @@ func AdminResponderTicket(c *fiber.Ctx) error { return c.Status(201).JSON(msg) } +// ─── Tickets global (admin) ────────────────────────────────────────────────── + +func TicketsAdminIndex(c *fiber.Ctx) error { + return c.Render("tickets_admin", fiber.Map{ + "user": c.Locals("user"), + "modules": c.Locals("userModules"), + }, "layouts/main") +} + +func GetAllTicketsAdmin(c *fiber.Ctx) error { + estado := c.Query("estado", "todos") + items, err := models.GetAllTickets(estado) + if err != nil { + return c.Status(500).JSON(fiber.Map{"error": err.Error()}) + } + return c.JSON(items) +} + // ─── helpers ────────────────────────────────────────────────────────────────── func slugify(s string) string { diff --git a/rest/routes/user.go b/rest/routes/user.go index b3b8a0b..b8d61a6 100755 --- a/rest/routes/user.go +++ b/rest/routes/user.go @@ -263,6 +263,42 @@ func UserRoutes(app fiber.Router) { protected.Post("/facturas/:id/upload-pdf", controllers.UploadFacturaPDF) protected.Get("/facturas/:id/download", controllers.DownloadFacturaPDF) + // ─── USITE Shield ───────────────────────────────────────────────────────── + protected.Get("/shield", middlewares.MenuMiddleware, controllers.ShieldIndex) + protected.Get("/loadshield", controllers.LoadShieldConfig) + protected.Post("/saveshield", controllers.SaveShieldConfig) + protected.Get("/shield/health", controllers.ShieldHealth) + protected.Get("/shield/extension-version", controllers.ShieldExtensionVersion) + protected.Get("/shield/logs", controllers.ShieldLogs) + protected.Get("/shield/logs/stats", controllers.ShieldLogStats) + protected.Get("/shield/review-requests", controllers.ShieldReviewRequests) + protected.Put("/shield/review-requests/:id/approve", controllers.ShieldApproveRequest) + protected.Put("/shield/review-requests/:id/reject", controllers.ShieldRejectRequest) + protected.Get("/shield/whitelist", controllers.ShieldWhitelist) + protected.Post("/shield/whitelist", controllers.ShieldAddWhitelist) + protected.Delete("/shield/whitelist/:domain", controllers.ShieldDeleteWhitelist) + protected.Get("/shield/blacklist", controllers.ShieldBlacklist) + protected.Post("/shield/blacklist", controllers.ShieldAddBlacklist) + protected.Delete("/shield/blacklist/:domain", controllers.ShieldDeleteBlacklist) + protected.Get("/shield/reputation/:domain", controllers.ShieldReputation) + protected.Put("/shield/reputation/:domain/score", controllers.ShieldAdjustScore) + + // Tickets global (todos los proyectos) + protected.Get("/tickets", middlewares.MenuMiddleware, controllers.TicketsAdminIndex) + protected.Get("/tickets/data", controllers.GetAllTicketsAdmin) + protected.Put("/tickets/:ticketID/estado", controllers.UpdateTicketEstadoAdmin) + protected.Post("/tickets/:ticketID/mensaje", controllers.AdminResponderTicket) + + // Configuración de notificaciones + protected.Get("/notif-config", middlewares.MenuMiddleware, controllers.NotifConfigIndex) + protected.Get("/notif-config/data", controllers.GetNotifConfigs) + protected.Post("/notif-config", controllers.SaveNotifConfig) + + // Notificaciones in-app del admin (bell) + protected.Get("/mis-notifs", controllers.GetMisNotifs) + protected.Put("/mis-notifs/:id/leida", controllers.MarcarNotifLeida) + protected.Post("/mis-notifs/marcar-todas", controllers.MarcarTodasLeidas) + // ─── Planes dLocal (gestión desde panel protegido) ──────────────────────── protected.Get("/dlocal/planes", apiControllers.SeePlanes) protected.Post("/dlocal/planes", apiControllers.CreatePlan)