Update renovacion_service.go
This commit is contained in:
@@ -74,17 +74,39 @@ func EnviarCorreoPrueba(email string, p *models.PlantillaCorreo) error {
|
||||
return app.Http.Mail.Send(email, "[PRUEBA] "+p.Asunto, html)
|
||||
}
|
||||
|
||||
// EnviarCorreoManual envía correo de aviso para un contrato específico
|
||||
// EnviarCorreoManual envía correo de aviso para un contrato específico.
|
||||
// Usa la primera regla activa para obtener la plantilla y la pasarela de pago;
|
||||
// si no hay regla, usa la primera plantilla disponible con pasarela "bold".
|
||||
func EnviarCorreoManual(contrato *models.Contrato) error {
|
||||
// Usar la primera plantilla activa de tipo renovacion/vencimiento como fallback
|
||||
plantillas, err := models.GetAllPlantillasSelect()
|
||||
if err != nil || len(plantillas) == 0 {
|
||||
return fmt.Errorf("no hay plantillas de correo disponibles")
|
||||
// Intentar obtener plantilla y pasarela desde la primera regla activa
|
||||
var p *models.PlantillaCorreo
|
||||
gateway := "bold"
|
||||
|
||||
reglas, err := models.GetReglasActivas()
|
||||
if err == nil && len(reglas) > 0 {
|
||||
regla := reglas[0]
|
||||
gateway = regla.PasarelaEnlace
|
||||
p, err = models.GetPlantillaByID(regla.PlantillaID)
|
||||
if err != nil {
|
||||
p = nil
|
||||
}
|
||||
}
|
||||
p, err := models.GetPlantillaByID(plantillas[0].ID)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
// Fallback: primera plantilla disponible
|
||||
if p == nil {
|
||||
plantillas, err2 := models.GetAllPlantillasSelect()
|
||||
if err2 != nil || len(plantillas) == 0 {
|
||||
return fmt.Errorf("no hay plantillas de correo disponibles")
|
||||
}
|
||||
p, err = models.GetPlantillaByID(plantillas[0].ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// Generar o reutilizar el enlace de pago
|
||||
enlacePago := ObtenerOCrearEnlacePago(contrato, gateway)
|
||||
|
||||
dias := int(contrato.FechaVencimiento.Sub(time.Now()).Hours() / 24)
|
||||
var items []ItemServicio
|
||||
for _, s := range contrato.Servicios {
|
||||
@@ -103,6 +125,7 @@ func EnviarCorreoManual(contrato *models.Contrato) error {
|
||||
DiasRestantes: dias,
|
||||
Total: contrato.PrecioAcordado,
|
||||
Servicios: items,
|
||||
EnlacePago: enlacePago,
|
||||
}
|
||||
html, err := RenderPlantilla(p, datos)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user