up
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/sujit-baniya/fiber-boilerplate/pkg/models"
|
||||
)
|
||||
|
||||
// ─── Configuración de canales de notificación ─────────────────────────────────
|
||||
|
||||
func NotifConfigIndex(c *fiber.Ctx) error {
|
||||
return c.Render("notif_config", fiber.Map{
|
||||
"user": c.Locals("user"),
|
||||
"modules": c.Locals("userModules"),
|
||||
}, "layouts/main")
|
||||
}
|
||||
|
||||
func GetNotifConfigs(c *fiber.Ctx) error {
|
||||
items, err := models.GetAllNotifConfigs()
|
||||
if err != nil {
|
||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
return c.JSON(items)
|
||||
}
|
||||
|
||||
func SaveNotifConfig(c *fiber.Ctx) error {
|
||||
var cfg models.NotifEventoConfig
|
||||
if err := c.BodyParser(&cfg); err != nil {
|
||||
return c.Status(400).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
if cfg.Evento == "" || cfg.Destinatario == "" {
|
||||
return c.Status(400).JSON(fiber.Map{"error": "evento y destinatario son requeridos"})
|
||||
}
|
||||
if err := models.UpsertNotifConfig(&cfg); err != nil {
|
||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
return c.JSON(fiber.Map{"ok": true})
|
||||
}
|
||||
|
||||
// ─── Notificaciones in-app (sistema) ─────────────────────────────────────────
|
||||
|
||||
// GetMisNotifs devuelve notificaciones del admin autenticado (tipo_usuario=admin, usuario_id=0).
|
||||
func GetMisNotifs(c *fiber.Ctx) error {
|
||||
soloNoLeidas := c.Query("no_leidas") == "1"
|
||||
items, err := models.GetSistemaNotifs("admin", 0, soloNoLeidas)
|
||||
if err != nil {
|
||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
count := models.CountUnreadNotifs("admin", 0)
|
||||
return c.JSON(fiber.Map{"items": items, "unread": count})
|
||||
}
|
||||
|
||||
func MarcarNotifLeida(c *fiber.Ctx) error {
|
||||
id, _ := c.ParamsInt("id")
|
||||
if err := models.MarcarNotifLeida(uint(id)); err != nil {
|
||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
return c.JSON(fiber.Map{"ok": true})
|
||||
}
|
||||
|
||||
func MarcarTodasLeidas(c *fiber.Ctx) error {
|
||||
if err := models.MarcarTodasLeidas("admin", 0); err != nil {
|
||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
return c.JSON(fiber.Map{"ok": true})
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/sujit-baniya/fiber-boilerplate/pkg/auth"
|
||||
"github.com/sujit-baniya/fiber-boilerplate/pkg/models"
|
||||
"github.com/sujit-baniya/fiber-boilerplate/pkg/services"
|
||||
"github.com/sujit-baniya/fiber-boilerplate/rest/middlewares"
|
||||
)
|
||||
|
||||
@@ -228,6 +229,7 @@ func PortalCrearTicket(c *fiber.Ctx) error {
|
||||
if err := models.CreateProyectoTicket(t); err != nil {
|
||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
go services.DispatchTicketNuevo(t, u, proy.Nombre)
|
||||
return c.Status(201).JSON(t)
|
||||
}
|
||||
|
||||
@@ -262,6 +264,7 @@ func PortalResponderTicket(c *fiber.Ctx) error {
|
||||
if err := models.CreateTicketMensaje(msg); err != nil {
|
||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
go services.DispatchTicketRespuestaCliente(ticket, req.Contenido, ticket.Proyecto.Nombre)
|
||||
return c.Status(201).JSON(msg)
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/sujit-baniya/fiber-boilerplate/pkg/models"
|
||||
"github.com/sujit-baniya/fiber-boilerplate/pkg/services"
|
||||
)
|
||||
|
||||
// ─── Admin pages ──────────────────────────────────────────────────────────────
|
||||
@@ -458,6 +459,11 @@ func AdminResponderTicket(c *fiber.Ctx) error {
|
||||
}
|
||||
// Cambiar estado a en_progreso si estaba abierto
|
||||
_ = models.UpdateTicketEstado(uint(ticketID), "en_progreso")
|
||||
// Notificar al portal user
|
||||
ticket, _ := models.GetTicketByID(uint(ticketID))
|
||||
if ticket != nil {
|
||||
go services.DispatchTicketRespuestaAdmin(ticket, req.Contenido, ticket.Proyecto.Nombre)
|
||||
}
|
||||
return c.Status(201).JSON(msg)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user