feat: área de soporte con webhook de correo y asignación de tickets

This commit is contained in:
Lizandro Guarnizo
2026-07-28 23:39:03 -05:00
parent 772a4a5656
commit 28affb5a55
16 changed files with 957 additions and 34 deletions
+18 -6
View File
@@ -95,9 +95,25 @@ func DispatchTicketRespuestaAdmin(ticket *models.ProyectoTicket, contenido strin
if ticket == nil {
return
}
portalUser, err := models.GetPortalUserByID(ticket.PortalUserID)
proyectoSlug := ""
if ticket.ProyectoID != nil {
if proy, err := models.GetProyectoByID(*ticket.ProyectoID); err == nil {
proyectoSlug = proy.Slug
proyectoNombre = proy.Nombre
}
}
// Si no está asociado a un portal user (ej: ticket por email), responder por email directo
if ticket.PortalUserID == nil {
if ticket.EmailFrom != "" {
go SendTicketRespuestaPortalUser(ticket.EmailFrom, ticket.AutorNombre, proyectoNombre, ticket.Titulo, contenido, "")
}
return
}
portalUser, err := models.GetPortalUserByID(*ticket.PortalUserID)
if err != nil || portalUser == nil {
log.Printf("[Notif] PortalUser %d no encontrado: %v", ticket.PortalUserID, err)
log.Printf("[Notif] PortalUser %d no encontrado: %v", *ticket.PortalUserID, err)
return
}
@@ -106,10 +122,6 @@ func DispatchTicketRespuestaAdmin(ticket *models.ProyectoTicket, contenido strin
return
}
proyectoSlug := ""
if proy, err := models.GetProyectoByID(ticket.ProyectoID); err == nil {
proyectoSlug = proy.Slug
}
portalPath := portalTicketPath(proyectoSlug, ticket.ID)
portalURL := absAppURL(portalPath)
titulo := fmt.Sprintf("Respuesta en tu ticket: %s", ticket.Titulo)