package routes import ( "github.com/gofiber/fiber/v2" "github.com/sujit-baniya/fiber-boilerplate/migrations" "github.com/sujit-baniya/fiber-boilerplate/rest/controllers" "github.com/sujit-baniya/fiber-boilerplate/rest/middlewares" ) // RenovacionesRoutes registra todas las rutas del módulo de renovaciones/contratos func RenovacionesRoutes(protected fiber.Router) { // ─── Servicios ─────────────────────────────────────────────────── protected.Get("/servicios", middlewares.MenuMiddleware, controllers.ServiciosView) protected.Get("/api/servicios", controllers.GetServicios) protected.Get("/api/servicios/select", controllers.GetServiciosSelect) protected.Post("/api/servicios", controllers.CreateServicio) protected.Put("/api/servicios/:id", controllers.UpdateServicio) protected.Delete("/api/servicios/:id", controllers.DeleteServicio) // ─── Clientes ──────────────────────────────────────────────────── protected.Get("/clientes", middlewares.MenuMiddleware, controllers.ClientesView) protected.Get("/api/clientes", controllers.GetClientes) protected.Get("/api/clientes/select", controllers.GetClientesSelect) protected.Post("/api/clientes", controllers.CreateCliente) protected.Put("/api/clientes/:id", controllers.UpdateCliente) protected.Delete("/api/clientes/:id", controllers.DeleteCliente) // Documentos de cliente protected.Get("/api/clientes/:clienteID/documentos", controllers.GetClienteDocumentos) protected.Post("/api/clientes/:clienteID/documentos", controllers.UploadClienteDocumentos) protected.Delete("/api/clientes/:clienteID/documentos/:docID", controllers.DeleteClienteDocumento) protected.Get("/api/clientes/:clienteID/documentos/:docID/download", controllers.DownloadClienteDocumento) // ─── Contratos ─────────────────────────────────────────────────── protected.Get("/contratos", middlewares.MenuMiddleware, controllers.ContratosView) protected.Get("/api/contratos", controllers.GetContratos) protected.Post("/api/contratos", controllers.CreateContrato) protected.Put("/api/contratos/:id", controllers.UpdateContrato) protected.Delete("/api/contratos/:id", controllers.DeleteContrato) protected.Post("/api/contratos/:id/renovar", controllers.RenovarContrato) protected.Post("/api/contratos/:id/enviar-correo", controllers.EnviarCorreoContrato) protected.Get("/api/contratos/:id/historial", controllers.GetHistorialContrato) protected.Post("/api/contratos/:id/verificar-pago", controllers.VerificarPagoBold) // ─── Plantillas de correo ───────────────────────────────────────── protected.Get("/plantillas-correo", middlewares.MenuMiddleware, controllers.PlantillasView) protected.Get("/api/plantillas-correo", controllers.GetPlantillas) protected.Post("/api/plantillas-correo", controllers.CreatePlantilla) protected.Put("/api/plantillas-correo/:id", controllers.UpdatePlantilla) protected.Delete("/api/plantillas-correo/:id", controllers.DeletePlantilla) protected.Get("/api/plantillas-correo/:id/preview", controllers.PreviewPlantilla) protected.Post("/api/plantillas-correo/:id/test", controllers.TestEnvioPlantilla) protected.Post("/api/plantillas-correo/validate", controllers.ValidarPlantilla) // ─── Reglas de notificación ─────────────────────────────────────── protected.Get("/reglas-notificacion", middlewares.MenuMiddleware, controllers.ReglasView) protected.Get("/api/reglas-notificacion", controllers.GetReglas) protected.Post("/api/reglas-notificacion", controllers.CreateRegla) protected.Put("/api/reglas-notificacion/:id", controllers.UpdateRegla) protected.Delete("/api/reglas-notificacion/:id", controllers.DeleteRegla) // ─── Historial de notificaciones ───────────────────────────────── protected.Get("/historial-notificaciones", middlewares.MenuMiddleware, controllers.HistorialView) protected.Get("/api/historial-notificaciones", controllers.GetHistorial) protected.Post("/api/historial-notificaciones/:id/reenviar", controllers.ReenviarNotificacion) protected.Get("/api/historial-notificaciones/:id/preview", controllers.VerPreviewLog) // ─── Configuración SMTP ─────────────────────────────────────────── protected.Get("/smtp-config", middlewares.MenuMiddleware, controllers.SmtpConfigView) protected.Get("/api/smtp-config", controllers.GetSmtpConfig) protected.Post("/api/smtp-config", controllers.SaveSmtpConfig) protected.Post("/api/smtp-config/test", controllers.TestSmtpConfig) // ─── Diagnóstico ────────────────────────────────────────────────── protected.Post("/api/diagnostico/ciclo-notificaciones", controllers.EjecutarTestCiclo) // ─── Admin: seed de módulos (idempotente) ───────────────────────── protected.Post("/api/admin/seed-renovaciones", func(c *fiber.Ctx) error { migrations.SeedRenovaciones() return c.JSON(fiber.Map{"ok": true, "message": "Seed de Renovaciones ejecutado correctamente"}) }) }