package services import ( "fmt" "log" "github.com/sujit-baniya/fiber-boilerplate/app" "github.com/sujit-baniya/fiber-boilerplate/pkg/models" ) // SendSoporteAutoRespuesta envía acuse de recibo automático al crear un ticket por email func SendSoporteAutoRespuesta(ticket *models.ProyectoTicket) { if ticket == nil || ticket.EmailFrom == "" { return } subject := fmt.Sprintf("Recibimos tu solicitud: %s", ticket.Titulo) mensaje := "Hemos recibido tu solicitud y te responderemos a la brevedad." if app.Http.Database.DB != nil { if cfg, err := models.GetSoporteWebhookActivo(); err == nil && cfg.MensajeAuto != "" { mensaje = cfg.MensajeAuto } } htmlBody := fmt.Sprintf(`
U

Ticket recibido

Soporte U-site

Hola %s,

%s

Ticket: #%d

Asunto: %s

Mensaje: %s

Este es un mensaje automático. No respondas a este correo.

`, ticket.AutorNombre, mensaje, ticket.ID, ticket.Titulo, ticket.Descripcion) go func() { if err := app.Http.Mail.Send(ticket.EmailFrom, subject, htmlBody); err != nil { log.Printf("[Soporte] Error enviando auto-respuesta a %s: %v", ticket.EmailFrom, err) } else { log.Printf("[Soporte] Auto-respuesta enviada a %s (ticket #%d)", ticket.EmailFrom, ticket.ID) } }() } // SendSoporteNotifAdmin notifica a los admins sobre un nuevo ticket de email func SendSoporteNotifAdmin(ticket *models.ProyectoTicket) { if ticket == nil { return } adminEmail := "" if app.Http.Database.DB != nil { if cfg, err := models.GetSmtpConfig(); err == nil { adminEmail = cfg.FromAddress } } if adminEmail == "" { return } subject := fmt.Sprintf("🎫 Nuevo ticket por email: %s", ticket.Titulo) htmlBody := fmt.Sprintf(`
🎫

Nuevo ticket por email

De: %s <%s>

Asunto: %s

Mensaje: %s

Ver ticket
`, ticket.AutorNombre, ticket.EmailFrom, ticket.Titulo, ticket.Descripcion, absAppURL(""), ticket.ID) go func() { if err := app.Http.Mail.Send(adminEmail, subject, htmlBody); err != nil { log.Printf("[Soporte] Error notificando admin: %v", err) } }() }