first commit
This commit is contained in:
138
RS_system/Migrations/SeedAsistenciaModule.sql
Normal file
138
RS_system/Migrations/SeedAsistenciaModule.sql
Normal file
@@ -0,0 +1,138 @@
|
||||
-- SQL para insertar módulo de Asistencia y permisos básicos
|
||||
-- PostgreSQL
|
||||
-- Ejecutar después de crear la tabla asistencias_culto
|
||||
|
||||
-- 1. Insertar módulo de Asistencia (si no existe)
|
||||
INSERT INTO modulos (id, nombre, icono, orden, activo, creado_en, parent_id)
|
||||
VALUES (
|
||||
(SELECT COALESCE(MAX(id), 0) + 1 FROM modulos),
|
||||
'Asistencia',
|
||||
'bi-people',
|
||||
(SELECT COALESCE(MAX(orden), 0) + 10 FROM modulos WHERE parent_id IS NULL),
|
||||
true,
|
||||
NOW(),
|
||||
NULL
|
||||
)
|
||||
ON CONFLICT (nombre) DO NOTHING;
|
||||
|
||||
-- Obtener el ID del módulo insertado (o existente)
|
||||
DO $$
|
||||
DECLARE
|
||||
modulo_asistencia_id INTEGER;
|
||||
rol_admin_id INTEGER;
|
||||
BEGIN
|
||||
-- Obtener ID del módulo de Asistencia
|
||||
SELECT id INTO modulo_asistencia_id FROM modulos WHERE nombre = 'Asistencia';
|
||||
|
||||
-- Obtener ID del rol Administrador (asumiendo que existe)
|
||||
SELECT id INTO rol_admin_id FROM roles_sistema WHERE nombre = 'Administrador' LIMIT 1;
|
||||
|
||||
-- 2. Insertar permisos básicos para el módulo de Asistencia
|
||||
-- Permiso: Ver asistencias
|
||||
INSERT INTO permisos (modulo_id, codigo, nombre, descripcion, url, icono, orden, es_menu, creado_en)
|
||||
VALUES (
|
||||
modulo_asistencia_id,
|
||||
'asistencia.ver',
|
||||
'Ver Asistencias',
|
||||
'Permite ver el listado de asistencias de cultos',
|
||||
'/AsistenciaCulto',
|
||||
'bi-eye',
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (codigo) DO NOTHING;
|
||||
|
||||
-- Permiso: Crear asistencias
|
||||
INSERT INTO permisos (modulo_id, codigo, nombre, descripcion, url, icono, orden, es_menu, creado_en)
|
||||
VALUES (
|
||||
modulo_asistencia_id,
|
||||
'asistencia.crear',
|
||||
'Crear Asistencia',
|
||||
'Permite registrar nueva asistencia de culto',
|
||||
'/AsistenciaCulto/Create',
|
||||
'bi-plus-circle',
|
||||
2,
|
||||
true,
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (codigo) DO NOTHING;
|
||||
|
||||
-- Permiso: Editar asistencias
|
||||
INSERT INTO permisos (modulo_id, codigo, nombre, descripcion, url, icono, orden, es_menu, creado_en)
|
||||
VALUES (
|
||||
modulo_asistencia_id,
|
||||
'asistencia.editar',
|
||||
'Editar Asistencia',
|
||||
'Permite editar registros de asistencia existentes',
|
||||
'/AsistenciaCulto/Edit',
|
||||
'bi-pencil',
|
||||
3,
|
||||
true,
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (codigo) DO NOTHING;
|
||||
|
||||
-- Permiso: Eliminar asistencias
|
||||
INSERT INTO permisos (modulo_id, codigo, nombre, descripcion, url, icono, orden, es_menu, creado_en)
|
||||
VALUES (
|
||||
modulo_asistencia_id,
|
||||
'asistencia.eliminar',
|
||||
'Eliminar Asistencia',
|
||||
'Permite eliminar registros de asistencia',
|
||||
'/AsistenciaCulto/Delete',
|
||||
'bi-trash',
|
||||
4,
|
||||
true,
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (codigo) DO NOTHING;
|
||||
|
||||
-- 3. Asignar permisos al rol Administrador (si existe)
|
||||
IF rol_admin_id IS NOT NULL THEN
|
||||
-- Asignar permiso: asistencia.ver
|
||||
INSERT INTO roles_permisos (rol_id, permiso_id)
|
||||
SELECT rol_admin_id, id
|
||||
FROM permisos
|
||||
WHERE codigo = 'asistencia.ver'
|
||||
ON CONFLICT (rol_id, permiso_id) DO NOTHING;
|
||||
|
||||
-- Asignar permiso: asistencia.crear
|
||||
INSERT INTO roles_permisos (rol_id, permiso_id)
|
||||
SELECT rol_admin_id, id
|
||||
FROM permisos
|
||||
WHERE codigo = 'asistencia.crear'
|
||||
ON CONFLICT (rol_id, permiso_id) DO NOTHING;
|
||||
|
||||
-- Asignar permiso: asistencia.editar
|
||||
INSERT INTO roles_permisos (rol_id, permiso_id)
|
||||
SELECT rol_admin_id, id
|
||||
FROM permisos
|
||||
WHERE codigo = 'asistencia.editar'
|
||||
ON CONFLICT (rol_id, permiso_id) DO NOTHING;
|
||||
|
||||
-- Asignar permiso: asistencia.eliminar
|
||||
INSERT INTO roles_permisos (rol_id, permiso_id)
|
||||
SELECT rol_admin_id, id
|
||||
FROM permisos
|
||||
WHERE codigo = 'asistencia.eliminar'
|
||||
ON CONFLICT (rol_id, permiso_id) DO NOTHING;
|
||||
|
||||
RAISE NOTICE 'Permisos de Asistencia asignados al rol Administrador (ID: %)', rol_admin_id;
|
||||
ELSE
|
||||
RAISE NOTICE 'Rol Administrador no encontrado. Los permisos deben asignarse manualmente.';
|
||||
END IF;
|
||||
|
||||
RAISE NOTICE 'Módulo de Asistencia y permisos configurados correctamente.';
|
||||
END $$;
|
||||
|
||||
-- Verificación final
|
||||
SELECT
|
||||
m.nombre as modulo,
|
||||
p.codigo as permiso,
|
||||
p.nombre as nombre_permiso,
|
||||
p.url
|
||||
FROM modulos m
|
||||
JOIN permisos p ON m.id = p.modulo_id
|
||||
WHERE m.nombre = 'Asistencia'
|
||||
ORDER BY p.orden;
|
||||
Reference in New Issue
Block a user