From 70a43597f370600016069f7f1d8d7841e7786e94 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Fri, 15 May 2026 12:55:57 -0500 Subject: [PATCH] up --- main.go | 2 + migrations/migrate.go | 114 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) diff --git a/main.go b/main.go index 903ab92..d900ead 100755 --- a/main.go +++ b/main.go @@ -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() diff --git a/migrations/migrate.go b/migrations/migrate.go index 5126721..5a2d8ae 100755 --- a/migrations/migrate.go +++ b/migrations/migrate.go @@ -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.") +}