Primer Commit
This commit is contained in:
186
DB/PROCEDURES/ACTION_MESSAGE_CONF.sql
Normal file
186
DB/PROCEDURES/ACTION_MESSAGE_CONF.sql
Normal file
@@ -0,0 +1,186 @@
|
||||
--------------------------------------------------------
|
||||
-- DDL for Procedure ACTION_MESSAGE_CONF
|
||||
--------------------------------------------------------
|
||||
set define off;
|
||||
|
||||
CREATE OR REPLACE EDITIONABLE PROCEDURE "ENVX_OPER"."ACTION_MESSAGE_CONF" (
|
||||
pi_id_action IN NUMBER,
|
||||
pi_id_request IN NUMBER,
|
||||
pi_observertion IN VARCHAR2,
|
||||
pi_request_status IN VARCHAR2,
|
||||
po_subject OUT VARCHAR2,
|
||||
po_message OUT CLOB,
|
||||
po_message_type OUT NUMBER
|
||||
) IS
|
||||
v_response_code VARCHAR2(4000);
|
||||
v_error_message VARCHAR2(4000);
|
||||
r_drh deployment_req_hgroup%rowtype;
|
||||
v_step_flow NUMBER(38, 0);
|
||||
log_program_name VARCHAR2(100);
|
||||
r_ref action_message%rowtype;
|
||||
v_err_msg VARCHAR2(2000);
|
||||
v_err_code VARCHAR2(50);
|
||||
BEGIN
|
||||
log_program_name := 'Procedure action_message_conf';
|
||||
log_collector(
|
||||
pi_program_name => log_program_name,
|
||||
pi_log_level => 4,
|
||||
--- DEBUG
|
||||
pi_log_message => 'Inicio Procedimiento action_message_conf - '
|
||||
|| log_program_name
|
||||
|| ': '
|
||||
|| sysdate
|
||||
);
|
||||
|
||||
------------------------------------------
|
||||
--busca el cuerpo,asunto,tipo de mensensaja,etc segun la accion realizada
|
||||
BEGIN
|
||||
SELECT am.*
|
||||
INTO r_ref
|
||||
FROM action_message am
|
||||
WHERE am.id_action = pi_id_action;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
v_err_code := sqlcode;
|
||||
v_err_msg := substr(sqlerrm, 1, 1000);
|
||||
log_collector(
|
||||
pi_program_name => log_program_name,
|
||||
pi_log_level => 4,
|
||||
--- DEBUG
|
||||
pi_log_message => 'Error Procedimiento action_message_conf - '
|
||||
|| v_err_msg
|
||||
|| ': '
|
||||
|| sysdate
|
||||
);
|
||||
|
||||
END;
|
||||
--
|
||||
------------------------------------------
|
||||
|
||||
--busca el Nº completo de la request (REQ_HGROUP_NAME)
|
||||
BEGIN
|
||||
SELECT r_drh.*
|
||||
INTO r_drh
|
||||
FROM deployment_req_hgroup r_drh
|
||||
WHERE r_drh.id_request = pi_id_request
|
||||
AND r_drh.id_req_hgroup_level = 'R';
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
v_err_code := sqlcode;
|
||||
v_err_msg := substr(sqlerrm, 1, 1000);
|
||||
log_collector(
|
||||
pi_program_name => log_program_name,
|
||||
pi_log_level => 4,
|
||||
--- DEBUG
|
||||
pi_log_message => 'Error Procedimiento action_message_conf - '
|
||||
|| v_err_msg
|
||||
|| ': '
|
||||
|| sysdate
|
||||
);
|
||||
|
||||
END;
|
||||
--
|
||||
------------------------------------------
|
||||
|
||||
--Crea y extrae el Cuerpo del mensage
|
||||
|
||||
IF pi_observertion IS NULL THEN
|
||||
po_message := 'La solicitud Nº '
|
||||
|| r_drh.req_hgroup_name
|
||||
|| chr(10)
|
||||
|| 'Accion Realizada: '
|
||||
|| r_ref.action_message_body
|
||||
|| chr(10)
|
||||
|| 'Fecha: '
|
||||
|| sysdate
|
||||
|| chr(10)
|
||||
|| 'Observacion: Sin observaciones'
|
||||
|| chr(10)
|
||||
|| 'Estado de la solicitud: '
|
||||
|| pi_request_status;
|
||||
ELSE
|
||||
po_message := 'La solicitud Nº '
|
||||
|| r_drh.req_hgroup_name
|
||||
|| chr(10)
|
||||
|| 'Accion Realizada: '
|
||||
|| r_ref.action_message_body
|
||||
|| chr(10)
|
||||
|| 'Fecha: '
|
||||
|| sysdate
|
||||
|| chr(10)
|
||||
|| 'Observacion: '
|
||||
|| pi_observertion
|
||||
|| chr(10)
|
||||
|| 'Estado de la solicitud: '
|
||||
|| pi_request_status;
|
||||
END IF;
|
||||
--
|
||||
------------------------------------------
|
||||
--Crea y extrae el Asunto del mensage a enviar
|
||||
|
||||
po_subject := r_ref.action_message_subject
|
||||
|| r_drh.req_hgroup_name
|
||||
|| ' - '
|
||||
|| to_char(sysdate, 'DD/MM/YYYY - HH24:MI:SS');
|
||||
|
||||
-- extraigo el tipo de mensage
|
||||
|
||||
po_message_type := r_ref.action_message_type;
|
||||
log_collector(
|
||||
pi_program_name => log_program_name,
|
||||
pi_log_level => 4,
|
||||
--- DEBUG
|
||||
pi_log_message => 'Asunto del mensaje es : ' || po_subject
|
||||
);
|
||||
|
||||
log_collector(
|
||||
pi_program_name => log_program_name,
|
||||
pi_log_level => 4,
|
||||
--- DEBUG
|
||||
pi_log_message => 'Notificacion es : ' || po_message
|
||||
);
|
||||
|
||||
log_collector(
|
||||
pi_program_name => log_program_name,
|
||||
pi_log_level => 4,
|
||||
--- DEBUG
|
||||
pi_log_message => 'Fin Procedimiento action_message_conf - '
|
||||
|| log_program_name
|
||||
|| ': '
|
||||
|| sysdate
|
||||
);
|
||||
|
||||
EXCEPTION
|
||||
WHEN no_data_found THEN
|
||||
dbms_output.put_line('No datos');
|
||||
v_err_code := sqlcode;
|
||||
v_err_msg := substr(sqlerrm, 1, 1000);
|
||||
log_collector(
|
||||
pi_program_name => log_program_name,
|
||||
pi_log_level => 4,
|
||||
--- DEBUG
|
||||
pi_log_message => 'Error tipo:No data found - '
|
||||
|| v_err_msg
|
||||
|| ': '
|
||||
|| sysdate
|
||||
);
|
||||
|
||||
WHEN OTHERS THEN
|
||||
dbms_output.put_line('Error');
|
||||
v_err_code := sqlcode;
|
||||
v_err_msg := substr(sqlerrm, 1, 1000);
|
||||
log_collector(
|
||||
pi_program_name => log_program_name,
|
||||
pi_log_level => 4,
|
||||
--- DEBUG
|
||||
pi_log_message => 'Error tipo:when others- '
|
||||
|| v_err_msg
|
||||
|| ': '
|
||||
|| sysdate
|
||||
);
|
||||
|
||||
END;
|
||||
|
||||
/
|
||||
38
DB/PROCEDURES/CHANGE_QUEUE_ORDER.sql
Normal file
38
DB/PROCEDURES/CHANGE_QUEUE_ORDER.sql
Normal file
@@ -0,0 +1,38 @@
|
||||
--------------------------------------------------------
|
||||
-- DDL for Procedure CHANGE_QUEUE_ORDER
|
||||
--------------------------------------------------------
|
||||
set define off;
|
||||
|
||||
CREATE OR REPLACE EDITIONABLE PROCEDURE "ENVX_OPER"."CHANGE_QUEUE_ORDER" (
|
||||
pi_queue_alias IN VARCHAR2,
|
||||
pi_id_request IN NUMBER,
|
||||
po_result OUT NUMBER
|
||||
) AS
|
||||
j NUMBER := 0;
|
||||
v_order NUMBER := 0;
|
||||
BEGIN
|
||||
|
||||
FOR i IN (
|
||||
SELECT *
|
||||
FROM deployment_request_queue
|
||||
WHERE queue_alias = pi_queue_alias
|
||||
AND id_request != pi_id_request
|
||||
AND status_queue = 0
|
||||
ORDER BY queue_order
|
||||
) LOOP
|
||||
|
||||
j := j + 1;
|
||||
|
||||
UPDATE deployment_request_queue
|
||||
SET queue_order = j
|
||||
WHERE queue_alias = i.queue_alias
|
||||
AND id_request = i.id_request;
|
||||
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
|
||||
END;
|
||||
|
||||
|
||||
/
|
||||
42
DB/PROCEDURES/LOG_COLLECTOR.sql
Normal file
42
DB/PROCEDURES/LOG_COLLECTOR.sql
Normal file
@@ -0,0 +1,42 @@
|
||||
--------------------------------------------------------
|
||||
-- DDL for Procedure LOG_COLLECTOR
|
||||
--------------------------------------------------------
|
||||
set define off;
|
||||
|
||||
CREATE OR REPLACE EDITIONABLE PROCEDURE "ENVX_OPER"."LOG_COLLECTOR" (
|
||||
pi_program_name IN VARCHAR2,
|
||||
pi_log_level IN NUMBER,
|
||||
pi_log_message IN VARCHAR2
|
||||
) AS
|
||||
v_log_level NUMBER := 0;
|
||||
BEGIN
|
||||
---
|
||||
SELECT to_number(parameter_value)
|
||||
INTO v_log_level
|
||||
FROM system_parameter p
|
||||
WHERE p.parameter_name = 'LOG_LEVEL';
|
||||
---
|
||||
IF v_log_level > 0 AND pi_log_level <= v_log_level THEN
|
||||
---
|
||||
INSERT INTO logs (
|
||||
message,
|
||||
date_time,
|
||||
order_log,
|
||||
program_name
|
||||
) VALUES (
|
||||
pi_log_message,
|
||||
systimestamp,
|
||||
order_log.NEXTVAL,
|
||||
pi_program_name
|
||||
);
|
||||
---
|
||||
COMMIT;
|
||||
---
|
||||
END IF;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
NULL;
|
||||
END log_collector;
|
||||
|
||||
/
|
||||
30
DB/PROCEDURES/MANAGE_REQ_HGROUP_ORDER.sql
Normal file
30
DB/PROCEDURES/MANAGE_REQ_HGROUP_ORDER.sql
Normal file
@@ -0,0 +1,30 @@
|
||||
--------------------------------------------------------
|
||||
-- DDL for Procedure MANAGE_REQ_HGROUP_ORDER
|
||||
--------------------------------------------------------
|
||||
set define off;
|
||||
|
||||
CREATE OR REPLACE EDITIONABLE PROCEDURE "ENVX_OPER"."MANAGE_REQ_HGROUP_ORDER" (
|
||||
pi_id_request IN NUMBER,
|
||||
pi_id_req_hgroup_level IN VARCHAR2
|
||||
) AS
|
||||
i NUMBER := 0;
|
||||
BEGIN
|
||||
FOR hg_ord IN (
|
||||
SELECT id_req_hgroup
|
||||
FROM deployment_req_hgroup hg
|
||||
WHERE hg.id_request = pi_id_request
|
||||
AND hg.id_req_hgroup_level = pi_id_req_hgroup_level
|
||||
ORDER BY req_hgroup_order
|
||||
) LOOP
|
||||
i := i + 1;
|
||||
UPDATE deployment_req_hgroup
|
||||
SET req_hgroup_order = i
|
||||
WHERE id_req_hgroup = hg_ord.id_req_hgroup;
|
||||
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
END manage_req_hgroup_order;
|
||||
|
||||
|
||||
/
|
||||
31
DB/PROCEDURES/MANAGE_REQ_OBJECT_ORDER.sql
Normal file
31
DB/PROCEDURES/MANAGE_REQ_OBJECT_ORDER.sql
Normal file
@@ -0,0 +1,31 @@
|
||||
--------------------------------------------------------
|
||||
-- DDL for Procedure MANAGE_REQ_OBJECT_ORDER
|
||||
--------------------------------------------------------
|
||||
set define off;
|
||||
|
||||
CREATE OR REPLACE EDITIONABLE PROCEDURE "ENVX_OPER"."MANAGE_REQ_OBJECT_ORDER" (pi_id_dep_req_object IN NUMBER,
|
||||
pi_id_req_hgroup IN VARCHAR2)
|
||||
AS
|
||||
v_aux NUMBER := 0;
|
||||
BEGIN
|
||||
|
||||
DELETE FROM DEPLOYMENT_REQ_OBJECT
|
||||
WHERE ID_DEP_REQ_OBJECT = pi_id_dep_req_object;
|
||||
commit;
|
||||
|
||||
FOR i in (select *
|
||||
from deployment_req_object
|
||||
where ID_REQ_HGROUP = pi_id_req_hgroup--:P300_ID
|
||||
ORDER BY OBJECT_ORDER
|
||||
)
|
||||
LOOP
|
||||
v_aux := v_aux + 1;
|
||||
update DEPLOYMENT_REQ_OBJECT
|
||||
set OBJECT_ORDER = v_aux
|
||||
where ID_DEP_REQ_OBJECT = i.ID_DEP_REQ_OBJECT;
|
||||
|
||||
END LOOP;
|
||||
END;
|
||||
|
||||
|
||||
/
|
||||
67
DB/PROCEDURES/P_ELIMINAR_SOLICITUD.sql
Normal file
67
DB/PROCEDURES/P_ELIMINAR_SOLICITUD.sql
Normal file
@@ -0,0 +1,67 @@
|
||||
--------------------------------------------------------
|
||||
-- DDL for Procedure P_ELIMINAR_SOLICITUD
|
||||
--------------------------------------------------------
|
||||
set define off;
|
||||
|
||||
CREATE OR REPLACE EDITIONABLE PROCEDURE "ENVX_OPER"."P_ELIMINAR_SOLICITUD" (pi_id_request IN NUMBER)
|
||||
AS
|
||||
|
||||
v_aux NUMBER := 0;
|
||||
|
||||
BEGIN
|
||||
|
||||
--Proceso para eliminar 1 solicitud de despliegue completa--
|
||||
|
||||
--Eliminar los objetos del request--
|
||||
delete from deployment_req_object where id_request = pi_id_request;
|
||||
commit;
|
||||
|
||||
--Eliminar los ambientes del request--
|
||||
delete from deployment_req_env where id_request = pi_id_request;
|
||||
commit;
|
||||
|
||||
--Eliminar los grupos del request--
|
||||
delete from deployment_req_hgroup where id_request = pi_id_request;
|
||||
commit;
|
||||
|
||||
--Eliminar los tickets del request--
|
||||
delete from deployment_req_reference where id_request = pi_id_request;
|
||||
commit;
|
||||
|
||||
--Eliminar los queue del request--
|
||||
delete from deployment_request_queue where id_request = pi_id_request;
|
||||
commit;
|
||||
|
||||
--Eliminar el historial de ejecucion del request--
|
||||
FOR i IN (select * from request_exec_deploy ed where ed.id_request = pi_id_request) LOOP
|
||||
delete from request_exec_deploy where id_control_deploy = i.id_control_deploy;
|
||||
v_aux := v_aux + 1;
|
||||
IF v_aux = 100 THEN
|
||||
commit;
|
||||
v_aux := 0;
|
||||
END IF;
|
||||
END LOOP;
|
||||
v_aux := 0;
|
||||
commit;
|
||||
|
||||
--Eliminar el historial de flow del request--
|
||||
FOR h IN (select * from request_exec_flow ef where ef.id_request = pi_id_request) LOOP
|
||||
delete from request_exec_flow where id_request = h.id_request;
|
||||
v_aux := v_aux + 1;
|
||||
IF v_aux = 100 THEN
|
||||
commit;
|
||||
v_aux := 0;
|
||||
END IF;
|
||||
END LOOP;
|
||||
v_aux := 0;
|
||||
commit;
|
||||
|
||||
--Eliminar los request--
|
||||
delete from deployment_request where id_request = pi_id_request;
|
||||
commit;
|
||||
|
||||
--Proceso para eliminar 1 solicitud de despliegue completa--
|
||||
|
||||
END;
|
||||
|
||||
/
|
||||
55
DB/PROCEDURES/P_MANAGE_AUX_PROFILE.sql
Normal file
55
DB/PROCEDURES/P_MANAGE_AUX_PROFILE.sql
Normal file
@@ -0,0 +1,55 @@
|
||||
--------------------------------------------------------
|
||||
-- DDL for Procedure P_MANAGE_AUX_PROFILE
|
||||
--------------------------------------------------------
|
||||
set define off;
|
||||
|
||||
CREATE OR REPLACE EDITIONABLE PROCEDURE "ENVX_OPER"."P_MANAGE_AUX_PROFILE" (
|
||||
pi_id_sys_profile_tree IN NUMBER,
|
||||
pi_id_sys_profile IN NUMBER,
|
||||
pi_id_step_flow IN NUMBER,
|
||||
po_resultado OUT VARCHAR2
|
||||
) AS
|
||||
v_insert BOOLEAN := false;
|
||||
v_aux NUMBER;
|
||||
BEGIN
|
||||
IF pi_id_sys_profile != pi_id_sys_profile_tree THEN
|
||||
SELECT COUNT(1)
|
||||
INTO v_aux
|
||||
FROM request_sw_auxiliar_profile
|
||||
WHERE id_step_flow = pi_id_step_flow
|
||||
AND id_sys_profile = pi_id_sys_profile_tree;
|
||||
|
||||
IF v_aux > 0 THEN
|
||||
v_insert := false;
|
||||
po_resultado := 'El perfil ya se encuentra como auxiliar del paso seleccionado';
|
||||
ELSE
|
||||
v_insert := true;
|
||||
END IF;
|
||||
|
||||
IF v_insert THEN
|
||||
INSERT INTO request_sw_auxiliar_profile (
|
||||
id_sw_aux_profile,
|
||||
id_step_flow,
|
||||
id_sys_profile,
|
||||
status_aux_profile
|
||||
) VALUES (
|
||||
s_request_sw_aux_profile_id.NEXTVAL,
|
||||
pi_id_step_flow,
|
||||
pi_id_sys_profile_tree,
|
||||
1
|
||||
);
|
||||
|
||||
po_resultado := 'Perfil agregado como auxiliar';
|
||||
END IF;
|
||||
|
||||
ELSE
|
||||
po_resultado :=
|
||||
CASE
|
||||
WHEN pi_id_sys_profile_tree > 0 THEN
|
||||
'El perfil ya se encuentra como auxiliar del paso seleccionado'
|
||||
ELSE 'No puede agregar un rol como auxiliar, seleccione un perfil'
|
||||
END;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
/
|
||||
101
DB/PROCEDURES/P_MANAGE_REQ_OBJ.sql
Normal file
101
DB/PROCEDURES/P_MANAGE_REQ_OBJ.sql
Normal file
@@ -0,0 +1,101 @@
|
||||
--------------------------------------------------------
|
||||
-- DDL for Procedure P_MANAGE_REQ_OBJ
|
||||
--------------------------------------------------------
|
||||
set define off;
|
||||
|
||||
CREATE OR REPLACE EDITIONABLE PROCEDURE "ENVX_OPER"."P_MANAGE_REQ_OBJ" (
|
||||
-- '[{"request_id": 159,"branch_name": "AMDES","type_group": "commit","group_id": "a2s34d5f67c6x5a4sdf567f8dsa76c5vbn67r65s","file_name": "config/api-casa-v1/file1.txt"},{"request_id": 159,"branch_name": "AMDES","type_group": "commit","group_id": "a2s34d5f67c6x5a4sdf567f8dsa76c5vbn67r65s","file_name": "config/api-casa-v1/archivossssssssssssssssss.txt"}]'
|
||||
p_json_parameters IN OUT CLOB,
|
||||
p_object_order IN OUT NUMBER,
|
||||
pi_json_objects IN CLOB,
|
||||
pi_name_object IN VARCHAR2 DEFAULT NULL,
|
||||
pi_select_action IN VARCHAR2,
|
||||
po_message OUT CLOB
|
||||
) AS
|
||||
|
||||
v_request_id VARCHAR2(100);
|
||||
v_branches VARCHAR2(100);
|
||||
v_type VARCHAR2(100);
|
||||
v_group_id VARCHAR2(100);
|
||||
v_object_name VARCHAR2(100);
|
||||
v_object_order VARCHAR2(100);
|
||||
v_coincidence NUMBER := 0;
|
||||
v_json_array json_array_t := json_array_t();
|
||||
json_aux JSON;
|
||||
json_aux_del CLOB;
|
||||
obj json_object_t := json_object_t();
|
||||
BEGIN
|
||||
v_object_order := p_object_order + 1;
|
||||
v_request_id := JSON_VALUE(pi_json_objects, '$.request_id');
|
||||
v_branches := JSON_VALUE(pi_json_objects, '$.branch_name');
|
||||
v_type := JSON_VALUE(pi_json_objects, '$.type_group');
|
||||
v_group_id := JSON_VALUE(pi_json_objects, '$.group_id');
|
||||
v_object_name := JSON_VALUE(pi_json_objects, '$.file_name');
|
||||
|
||||
CASE
|
||||
WHEN pi_select_action = 'add' THEN
|
||||
|
||||
|
||||
json_aux := json(pi_json_objects);
|
||||
v_coincidence := 0;--instr(p_json_parameters, v_object_name);
|
||||
|
||||
select count(*)
|
||||
into v_coincidence
|
||||
from json_table(json(nvl(p_json_parameters,'[]')), '$[*]' columns (obj VARCHAR2(1000) PATH '$.file_name')) j
|
||||
where j.obj = JSON_VALUE(json_aux,'$.file_name');
|
||||
|
||||
IF v_coincidence = 0 OR v_coincidence IS NULL THEN
|
||||
|
||||
v_json_array := json_array_t.parse(nvl(p_json_parameters,'[]'));
|
||||
v_json_array.append(json_aux);
|
||||
p_json_parameters := v_json_array.to_clob;
|
||||
|
||||
|
||||
po_message := 'El objeto "'
|
||||
|| v_object_name
|
||||
|| '" se ha agregado con exito';
|
||||
p_object_order := v_object_order;
|
||||
|
||||
ELSE
|
||||
po_message := 'El objeto "'
|
||||
|| v_object_name
|
||||
|| '" ya existe';
|
||||
END IF;
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------
|
||||
WHEN pi_select_action = 'delete' THEN
|
||||
|
||||
json_aux_del := p_json_parameters;
|
||||
p_json_parameters := NULL;
|
||||
FOR obj IN (
|
||||
SELECT c_object,
|
||||
file_name
|
||||
FROM JSON_TABLE (
|
||||
JSON(json_aux_del), '$[*]'
|
||||
COLUMNS
|
||||
c_object JSON PATH '$',
|
||||
file_name VARCHAR2 (1000) PATH '$.file_name'
|
||||
)
|
||||
)
|
||||
LOOP
|
||||
IF obj.file_name != pi_name_object THEN
|
||||
v_json_array.append(obj.c_object);
|
||||
p_json_parameters := v_json_array.to_string;
|
||||
ELSE
|
||||
po_message := 'El objeto "'
|
||||
|| pi_name_object
|
||||
|| '" ha sido eliminado';
|
||||
p_object_order := p_object_order - 1;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
ELSE
|
||||
NULL;
|
||||
END CASE;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
po_message := 'Error: ' || sqlerrm;
|
||||
END;
|
||||
|
||||
/
|
||||
135
DB/PROCEDURES/P_MANAGE_USERS.sql
Normal file
135
DB/PROCEDURES/P_MANAGE_USERS.sql
Normal file
@@ -0,0 +1,135 @@
|
||||
--------------------------------------------------------
|
||||
-- DDL for Procedure P_MANAGE_USERS
|
||||
--------------------------------------------------------
|
||||
set define off;
|
||||
|
||||
CREATE OR REPLACE EDITIONABLE PROCEDURE "ENVX_OPER"."P_MANAGE_USERS" (
|
||||
pi_internal_profile IN OUT CLOB
|
||||
) AS
|
||||
v_json_aux json;
|
||||
v_id_user NUMBER := JSON_VALUE(pi_internal_profile, '$.userId');
|
||||
v_user_name VARCHAR2(500) := JSON_VALUE(pi_internal_profile, '$.user');
|
||||
v_user_mail VARCHAR2(500) := JSON_VALUE(pi_internal_profile, '$.email');
|
||||
v_user_status NUMBER := 0;
|
||||
BEGIN
|
||||
|
||||
--- Verificación de Roles Revocados ---
|
||||
DELETE user_roles ur
|
||||
WHERE ur.id_user = v_id_user
|
||||
AND (
|
||||
SELECT 1
|
||||
FROM JSON_TABLE (
|
||||
JSON(pi_internal_profile), '$.idm[*]'
|
||||
COLUMNS (
|
||||
"domain" VARCHAR2 (100) PATH '$.domain',
|
||||
"group" VARCHAR2 (100) PATH '$.group'
|
||||
)
|
||||
)
|
||||
j,
|
||||
system_role sr
|
||||
WHERE j."domain" = nvl(sr.idm_domain, 'others')
|
||||
AND lower(j."group") = lower(sr.idm_group)
|
||||
AND sr.id_role = ur.id_role
|
||||
) IS NULL;
|
||||
--- Verificación de Roles Revocados ---
|
||||
|
||||
--- Verificación de Perfiles Revocados ---
|
||||
DELETE user_roles ur
|
||||
WHERE ur.id_user = v_id_user
|
||||
AND (
|
||||
SELECT 1
|
||||
FROM JSON_TABLE (
|
||||
JSON(pi_internal_profile), '$.idm[*]'
|
||||
COLUMNS (
|
||||
"domain" VARCHAR2 (100) PATH '$.domain',
|
||||
"group" VARCHAR2 (100) PATH '$.group'
|
||||
)
|
||||
)
|
||||
j,
|
||||
system_role sr,
|
||||
system_profile sp
|
||||
WHERE j."domain" = nvl(sr.idm_domain, 'others')
|
||||
AND lower(j."group") = lower(sp.idm_group)
|
||||
AND lower(sr.id_role) = lower(sp.id_role)
|
||||
AND sr.id_role = ur.id_role
|
||||
AND sp.id_sys_profile = ur.id_sys_profile
|
||||
) IS NULL;
|
||||
--- Verificación de Perfiles Revocados ---
|
||||
|
||||
--- Incorporación de Nuevos Perfiles ---
|
||||
FOR prf IN (
|
||||
|
||||
SELECT v_id_user AS id_user,
|
||||
v_user_name AS user_name,
|
||||
v_user_mail AS user_mail,
|
||||
sr.id_role,
|
||||
sp.id_sys_profile,
|
||||
1
|
||||
FROM JSON_TABLE (
|
||||
JSON(pi_internal_profile), '$.idm[*]'
|
||||
COLUMNS (
|
||||
"domain" VARCHAR2 (100) PATH '$.domain',
|
||||
"group" VARCHAR2 (100) PATH '$.group'
|
||||
)
|
||||
)
|
||||
j,
|
||||
system_role sr,
|
||||
system_profile sp
|
||||
WHERE j."domain" = nvl(sr.idm_domain, 'others')
|
||||
AND lower(j."group") = lower(sp.idm_group)
|
||||
AND lower(sr.id_role) = lower(sp.id_role)
|
||||
)
|
||||
LOOP
|
||||
|
||||
BEGIN
|
||||
INSERT INTO user_roles ur
|
||||
VALUES prf;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
NULL;
|
||||
END;
|
||||
|
||||
END LOOP;
|
||||
--- Incorporación de Nuevos Perfiles ---
|
||||
|
||||
--- Extraccion de roles ENVX correspondientes ---
|
||||
SELECT JSON_ARRAYAGG(JSON_OBJECT('roleId' VALUE r1.id_role, 'roleName' VALUE r1.role_name)) AS roles_array
|
||||
INTO v_json_aux
|
||||
FROM (
|
||||
SELECT UNIQUE ur.id_role,
|
||||
sr.role_name
|
||||
FROM user_roles ur,
|
||||
system_role sr
|
||||
WHERE ur.id_role = sr.id_role
|
||||
AND id_user = v_id_user
|
||||
) r1;
|
||||
|
||||
SELECT JSON_TRANSFORM(pi_internal_profile, INSERT '$.roles' = v_json_aux)
|
||||
INTO pi_internal_profile
|
||||
FROM dual;
|
||||
--- Extraccion de roles ENVX correspondientes ---
|
||||
|
||||
--- Extraccion de perfiles ENVX correspondientes ---
|
||||
SELECT JSON_ARRAYAGG(
|
||||
JSON_OBJECT('roleId' VALUE r1.id_role, 'sysProfileId' VALUE r1.id_sys_profile, 'sysProfileName' VALUE r1.sys_profile_name)
|
||||
) AS json_profiles
|
||||
INTO v_json_aux
|
||||
FROM (
|
||||
SELECT UNIQUE ur.id_role,
|
||||
sp.id_sys_profile,
|
||||
sp.sys_profile_name
|
||||
FROM user_roles ur,
|
||||
system_profile sp
|
||||
WHERE ur.id_role = sp.id_role
|
||||
AND ur.id_sys_profile = sp.id_sys_profile
|
||||
AND id_user = v_id_user
|
||||
) r1;
|
||||
|
||||
SELECT JSON_TRANSFORM(pi_internal_profile, INSERT '$.profiles' = v_json_aux)
|
||||
INTO pi_internal_profile
|
||||
FROM dual;
|
||||
--- Extraccion de perfiles ENVX correspondientes ---
|
||||
|
||||
END;
|
||||
|
||||
/
|
||||
79
DB/PROCEDURES/P_MANAGE_USERS_OLD.sql
Normal file
79
DB/PROCEDURES/P_MANAGE_USERS_OLD.sql
Normal file
@@ -0,0 +1,79 @@
|
||||
--------------------------------------------------------
|
||||
-- DDL for Procedure P_MANAGE_USERS_OLD
|
||||
--------------------------------------------------------
|
||||
set define off;
|
||||
|
||||
CREATE OR REPLACE EDITIONABLE PROCEDURE "ENVX_OPER"."P_MANAGE_USERS_OLD" (pi_id_role IN NUMBER,
|
||||
pi_id_sys_profile IN NUMBER,
|
||||
pi_status IN VARCHAR2,
|
||||
pi_user_name IN VARCHAR2,
|
||||
pi_ldap_user IN VARCHAR2,
|
||||
pi_user_mail IN VARCHAR2,
|
||||
pi_app_id NUMBER,
|
||||
pi_apex_role NUMBER) AS
|
||||
|
||||
|
||||
BEGIN
|
||||
|
||||
--Elimino los roles donde pertenezca el usuario--
|
||||
FOR c IN (
|
||||
SELECT DISTINCT
|
||||
user_name,
|
||||
id_apex_role
|
||||
FROM
|
||||
user_roles u,
|
||||
system_profile p,
|
||||
system_role r
|
||||
WHERE
|
||||
u.id_sys_profile = p.id_sys_profile
|
||||
AND p.id_role = r.id_role
|
||||
AND upper(user_name) = upper(pi_user_name)
|
||||
) LOOP
|
||||
|
||||
apex_acl.remove_user_role(p_application_id => pi_app_id,
|
||||
p_user_name => upper(pi_user_name),
|
||||
p_role_id => c.id_apex_role
|
||||
);
|
||||
|
||||
END LOOP;
|
||||
|
||||
|
||||
--Actualizar el perfil y rol correspondiente--
|
||||
UPDATE user_roles
|
||||
set id_sys_profile = pi_id_sys_profile,
|
||||
id_role = pi_id_role,
|
||||
user_mail = pi_user_mail
|
||||
where user_name = pi_user_name;
|
||||
|
||||
--Buscar si actualizo algun registro--
|
||||
IF sql%rowcount = 0 THEN
|
||||
|
||||
--Si no actualizo ninguno, inserto el registro--
|
||||
INSERT INTO user_roles (
|
||||
id_user,
|
||||
id_role,
|
||||
id_sys_profile,
|
||||
user_name,
|
||||
user_mail
|
||||
) VALUES (
|
||||
S_USER_ROLES_ID.nextval,
|
||||
pi_id_role,
|
||||
pi_id_sys_profile,
|
||||
pi_user_name,
|
||||
pi_user_mail
|
||||
);
|
||||
|
||||
END IF;
|
||||
|
||||
IF pi_status = 1 THEN
|
||||
--Agrego el rol de apex correspondiente--
|
||||
apex_acl.add_user_role(p_application_id => pi_app_id,
|
||||
p_user_name => upper(pi_user_name),
|
||||
p_role_id => pi_apex_role
|
||||
);
|
||||
END IF;
|
||||
|
||||
|
||||
END;
|
||||
|
||||
/
|
||||
Reference in New Issue
Block a user