Files
soft_usite/pkg/models/notificacion_regla.go
T
2026-05-12 21:22:30 -05:00

80 lines
2.7 KiB
Go

package models
import (
"github.com/sujit-baniya/fiber-boilerplate/app"
"gorm.io/gorm"
)
type NotificacionRegla struct {
gorm.Model
Nombre string `json:"nombre" gorm:"column:nombre"`
TipoEvento string `json:"tipo_evento" gorm:"column:tipo_evento;default:'vencimiento_proximo'"` // vencimiento_proximo | ya_vencido | bienvenida | pago_recibido | manual
DiasAntes int `json:"dias_antes" gorm:"column:dias_antes"`
PlantillaID uint `json:"plantilla_id" gorm:"column:plantilla_id"`
Plantilla PlantillaCorreo `json:"plantilla" gorm:"foreignKey:PlantillaID"`
Activo bool `json:"activo" gorm:"column:activo;default:true"`
AplicaA string `json:"aplica_a" gorm:"column:aplica_a;default:'todos'"` // todos | renovable | unico
PasarelaEnlace string `json:"pasarela_enlace" gorm:"column:pasarela_enlace;default:'bold'"` // bold | dlocal | ninguna
}
func (NotificacionRegla) TableName() string { return "notificacion_reglas" }
func GetAllReglas() ([]NotificacionRegla, error) {
var items []NotificacionRegla
if err := app.Http.Database.DB.Preload("Plantilla").Order("dias_antes DESC").Find(&items).Error; err != nil {
return nil, err
}
return items, nil
}
func GetReglasActivas() ([]NotificacionRegla, error) {
var items []NotificacionRegla
if err := app.Http.Database.DB.Preload("Plantilla").
Where("activo = ?", true).Order("dias_antes DESC").Find(&items).Error; err != nil {
return nil, err
}
return items, nil
}
func GetReglasByTipoEvento(tipoEvento string) ([]NotificacionRegla, error) {
var items []NotificacionRegla
if err := app.Http.Database.DB.Preload("Plantilla").
Where("activo = ? AND tipo_evento = ?", true, tipoEvento).
Order("dias_antes DESC").Find(&items).Error; err != nil {
return nil, err
}
return items, nil
}
func GetReglaByID(id uint) (*NotificacionRegla, error) {
var item NotificacionRegla
if err := app.Http.Database.DB.Preload("Plantilla").First(&item, id).Error; err != nil {
return nil, err
}
return &item, nil
}
func CreateRegla(r NotificacionRegla) error {
return app.Http.Database.DB.Create(&r).Error
}
func UpdateRegla(r NotificacionRegla) error {
return app.Http.Database.DB.Model(&r).Updates(map[string]interface{}{
"nombre": r.Nombre,
"tipo_evento": r.TipoEvento,
"dias_antes": r.DiasAntes,
"plantilla_id": r.PlantillaID,
"activo": r.Activo,
"aplica_a": r.AplicaA,
"pasarela_enlace": r.PasarelaEnlace,
}).Error
}
func DeleteRegla(id uint) error {
var r NotificacionRegla
if err := app.Http.Database.DB.First(&r, id).Error; err != nil {
return err
}
return app.Http.Database.DB.Delete(&r).Error
}