F4.3 · dossier INF, GEDO IF y seguimiento

This commit is contained in:
2026-09-07 19:55:04 -03:00
parent 367c7df45a
commit fbe8f2e8cf
10 changed files with 915 additions and 6 deletions
@@ -0,0 +1,64 @@
import { MigrationInterface, QueryRunner } from 'typeorm';
export class PhaseF4ReportDossierPermissions1790042400000 implements MigrationInterface {
name = 'PhaseF4ReportDossierPermissions1790042400000';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
INSERT INTO permissions (code, description)
VALUES
('inspection_reports.edit', 'Editar el contenido de trabajo del Informe de inspección'),
('inspection_reports.officialize', 'Registrar el IF y PDF oficial generado por GEDO'),
('inspection_reports.follow_up', 'Agregar respuestas, notas y documentos al seguimiento del Informe')
ON CONFLICT (code) DO UPDATE SET description = EXCLUDED.description
`);
await queryRunner.query(`
WITH mapping(role_code, permission_code) AS (
VALUES
('admin', 'inspection_reports.edit'),
('admin', 'inspection_reports.officialize'),
('admin', 'inspection_reports.follow_up'),
('supervisor', 'inspection_reports.edit'),
('supervisor', 'inspection_reports.officialize'),
('supervisor', 'inspection_reports.follow_up'),
('inspector', 'inspection_reports.edit'),
('inspector', 'inspection_reports.officialize'),
('inspector', 'inspection_reports.follow_up')
)
INSERT INTO role_permissions (role_id, permission_id)
SELECT role.id, permission.id
FROM mapping
INNER JOIN roles role ON role.code = mapping.role_code
INNER JOIN permissions permission ON permission.code = mapping.permission_code
ON CONFLICT DO NOTHING
`);
await queryRunner.query(`
CREATE UNIQUE INDEX IF NOT EXISTS uq_inspection_reports_gedo_if_identifier
ON inspection_reports(gedo_if_identifier)
WHERE gedo_if_identifier IS NOT NULL
`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX IF EXISTS uq_inspection_reports_gedo_if_identifier`);
await queryRunner.query(`
DELETE FROM role_permissions
WHERE permission_id IN (
SELECT id FROM permissions
WHERE code IN (
'inspection_reports.edit',
'inspection_reports.officialize',
'inspection_reports.follow_up'
)
)
`);
await queryRunner.query(`
DELETE FROM permissions
WHERE code IN (
'inspection_reports.edit',
'inspection_reports.officialize',
'inspection_reports.follow_up'
)
`);
}
}