138 lines
4.3 KiB
SQL
138 lines
4.3 KiB
SQL
-- 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; |