This commit is contained in:
Lizandro Guarnizo
2026-05-15 12:55:57 -05:00
parent 939a1b320c
commit 70a43597f3
2 changed files with 116 additions and 0 deletions
+2
View File
@@ -70,6 +70,8 @@ func main() {
migrations.SeedServidores()
migrations.SeedAdministracion()
migrations.SeedPlantillasBase()
migrations.SeedTelegram()
migrations.SeedPortalClientes()
// Iniciar cron de vencimientos
services.IniciarCron()
defer services.DetenerCron()
+114
View File
@@ -710,3 +710,117 @@ func SeedSaas() {
log.Println("[SEED] Seed de SaaS completado.")
}
// SeedTelegram agrega el submódulo "Telegram" al módulo "Integraciones". Es idempotente.
func SeedTelegram() {
db := app.Http.Database.DB
var modulo models.Modules
if err := db.Where("title = ?", "Integraciones").First(&modulo).Error; err != nil {
log.Printf("[SEED] Módulo 'Integraciones' no encontrado para SeedTelegram: %v", err)
return
}
entries := []struct{ title, desc, url string }{
{"Telegram", "Notificaciones y alertas por Telegram", "/app/telegram"},
}
var insertados []models.Submodules
for _, e := range entries {
var sub models.Submodules
if err := db.Where("url = ?", e.url).First(&sub).Error; err != nil {
sub = models.Submodules{
Title: e.title,
Description: e.desc,
Url: e.url,
ModuleId: modulo.ID,
ModifiedAt: time.Now(),
}
if err := db.Create(&sub).Error; err != nil {
log.Printf("[SEED] Error creando submódulo '%s': %v", e.title, err)
continue
}
log.Printf("[SEED] Submódulo '%s' creado (ID %d)", e.title, sub.ID)
} else {
log.Printf("[SEED] Submódulo '%s' ya existe (ID %d)", sub.Title, sub.ID)
}
insertados = append(insertados, sub)
}
var roles []models.Roles
if err := db.Find(&roles).Error; err != nil {
log.Printf("[SEED] Error obteniendo roles: %v", err)
return
}
for _, rol := range roles {
if err := db.Model(&rol).Association("Submodules").Append(&insertados); err != nil {
log.Printf("[SEED] Error asignando Telegram al rol '%s': %v", rol.Name, err)
} else {
log.Printf("[SEED] Telegram asignado al rol '%s'", rol.Name)
}
}
log.Println("[SEED] Seed de Telegram completado.")
}
// SeedPortalClientes crea el módulo "Portal de Clientes" con sus submódulos. Es idempotente.
func SeedPortalClientes() {
db := app.Http.Database.DB
var modulo models.Modules
if err := db.Where("title = ?", "Portal de Clientes").First(&modulo).Error; err != nil {
modulo = models.Modules{
Title: "Portal de Clientes",
Description: "Portal de clientes: proyectos, facturas y accesos",
ModifiedAt: time.Now(),
}
if err := db.Create(&modulo).Error; err != nil {
log.Printf("[SEED] Error creando módulo Portal de Clientes: %v", err)
return
}
log.Printf("[SEED] Módulo 'Portal de Clientes' creado con ID %d", modulo.ID)
} else {
log.Printf("[SEED] Módulo 'Portal de Clientes' ya existe (ID %d)", modulo.ID)
}
entries := []struct{ title, desc, url string }{
{"Proyectos", "Gestión de proyectos y avances del portal", "/app/proyectos"},
{"Facturas", "Gestión de facturas y pagos por cliente", "/app/facturas"},
{"Portal Usuarios", "Usuarios con acceso al portal de clientes", "/app/portal-usuarios"},
}
var insertados []models.Submodules
for _, e := range entries {
var sub models.Submodules
if err := db.Where("url = ?", e.url).First(&sub).Error; err != nil {
sub = models.Submodules{
Title: e.title,
Description: e.desc,
Url: e.url,
ModuleId: modulo.ID,
ModifiedAt: time.Now(),
}
if err := db.Create(&sub).Error; err != nil {
log.Printf("[SEED] Error creando submódulo '%s': %v", e.title, err)
continue
}
log.Printf("[SEED] Submódulo '%s' creado (ID %d)", e.title, sub.ID)
} else {
log.Printf("[SEED] Submódulo '%s' ya existe (ID %d)", sub.Title, sub.ID)
}
insertados = append(insertados, sub)
}
var roles []models.Roles
if err := db.Find(&roles).Error; err != nil {
log.Printf("[SEED] Error obteniendo roles: %v", err)
return
}
for _, rol := range roles {
if err := db.Model(&rol).Association("Submodules").Append(&insertados); err != nil {
log.Printf("[SEED] Error asignando submódulos Portal al rol '%s': %v", rol.Name, err)
} else {
log.Printf("[SEED] Submódulos de Portal de Clientes asignados al rol '%s'", rol.Name)
}
}
log.Println("[SEED] Seed de Portal de Clientes completado.")
}