up
This commit is contained in:
@@ -95,6 +95,14 @@ func JoinModulos(modules []string) string {
|
||||
return strings.Join(clean, ",")
|
||||
}
|
||||
|
||||
func GetAiConfigSelect() ([]AiConfig, error) {
|
||||
var items []AiConfig
|
||||
if err := app.Http.Database.DB.Model(&AiConfig{}).Select("id, nombre, provider").Order("nombre ASC").Find(&items).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
// GetAiConfigForService retorna la config activa asignada al módulo indicado.
|
||||
// Lógica de prioridad:
|
||||
// 1. Config activa con modulo conteniendo service (puede ser comma-separated)
|
||||
|
||||
+28
-4
@@ -20,6 +20,13 @@ type Contrato struct {
|
||||
Estado string `json:"estado" gorm:"column:estado;default:'activo'"` // activo | vencido | cancelado | renovado
|
||||
AutoRenovar bool `json:"auto_renovar" gorm:"column:auto_renovar;default:false"`
|
||||
Notas string `json:"notas" gorm:"column:notas"`
|
||||
// Infraestructura asociada (opcional)
|
||||
ServidorID *uint `json:"servidor_id" gorm:"column:servidor_id"`
|
||||
Servidor Servidor `json:"servidor" gorm:"foreignKey:ServidorID"`
|
||||
ConxDbID *uint `json:"conx_db_id" gorm:"column:conx_db_id"`
|
||||
ConxDb ConxDb `json:"conx_db" gorm:"foreignKey:ConxDbID"`
|
||||
AiConfigID *uint `json:"ai_config_id" gorm:"column:ai_config_id"`
|
||||
AiConfig AiConfig `json:"ai_config" gorm:"foreignKey:AiConfigID"`
|
||||
// Enlace de pago Bold: único por ciclo de pago.
|
||||
// Se reutiliza en múltiples notificaciones del mismo ciclo.
|
||||
// Se anula (vacía) cuando SALE_APPROVED llega y se registra el pago.
|
||||
@@ -36,7 +43,8 @@ func GetAllContratos(limit, offset int, search, estado string) ([]Contrato, int6
|
||||
var items []Contrato
|
||||
var total int64
|
||||
db := app.Http.Database.DB.Model(&Contrato{}).
|
||||
Preload("Cliente").Preload("Servicios")
|
||||
Preload("Cliente").Preload("Servicios").
|
||||
Preload("Servidor").Preload("ConxDb").Preload("AiConfig")
|
||||
if search != "" {
|
||||
db = db.Joins("JOIN clientes ON clientes.id = contratos.cliente_id").
|
||||
Where("clientes.nombre ILIKE ? OR clientes.empresa ILIKE ?",
|
||||
@@ -56,7 +64,7 @@ func GetAllContratos(limit, offset int, search, estado string) ([]Contrato, int6
|
||||
|
||||
func GetContratoByID(id uint) (*Contrato, error) {
|
||||
var item Contrato
|
||||
if err := app.Http.Database.DB.Preload("Cliente").Preload("Servicios").First(&item, id).Error; err != nil {
|
||||
if err := app.Http.Database.DB.Preload("Cliente").Preload("Servicios").Preload("Servidor").Preload("ConxDb").Preload("AiConfig").First(&item, id).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &item, nil
|
||||
@@ -156,7 +164,7 @@ func CreateContrato(c Contrato, servicioIDs []uint) error {
|
||||
|
||||
func UpdateContrato(c Contrato, servicioIDs []uint) error {
|
||||
db := app.Http.Database.DB
|
||||
if err := db.Model(&Contrato{}).Where("id = ?", c.ID).Updates(map[string]interface{}{
|
||||
updates := map[string]interface{}{
|
||||
"cliente_id": c.ClienteID,
|
||||
"fecha_inicio": c.FechaInicio,
|
||||
"fecha_vencimiento": c.FechaVencimiento,
|
||||
@@ -165,7 +173,23 @@ func UpdateContrato(c Contrato, servicioIDs []uint) error {
|
||||
"estado": c.Estado,
|
||||
"auto_renovar": c.AutoRenovar,
|
||||
"notas": c.Notas,
|
||||
}).Error; err != nil {
|
||||
}
|
||||
if c.ServidorID != nil {
|
||||
updates["servidor_id"] = *c.ServidorID
|
||||
} else {
|
||||
updates["servidor_id"] = nil
|
||||
}
|
||||
if c.ConxDbID != nil {
|
||||
updates["conx_db_id"] = *c.ConxDbID
|
||||
} else {
|
||||
updates["conx_db_id"] = nil
|
||||
}
|
||||
if c.AiConfigID != nil {
|
||||
updates["ai_config_id"] = *c.AiConfigID
|
||||
} else {
|
||||
updates["ai_config_id"] = nil
|
||||
}
|
||||
if err := db.Model(&Contrato{}).Where("id = ?", c.ID).Updates(updates).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if servicioIDs != nil {
|
||||
|
||||
@@ -88,3 +88,15 @@ func DeleteConxDb(conxDb ConxDb) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetConxDbSelect(servidorID string) ([]ConxDb, error) {
|
||||
var items []ConxDb
|
||||
db := app.Http.Database.DB.Model(&ConxDb{}).Select("id, nombre, servidor_id").Order("nombre ASC")
|
||||
if servidorID != "" {
|
||||
db = db.Where("servidor_id = ?", servidorID)
|
||||
}
|
||||
if err := db.Find(&items).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user