Primer Commit

This commit is contained in:
2023-06-08 11:55:59 -03:00
commit a269361962
432 changed files with 203156 additions and 0 deletions

View 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 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;
/

View 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;
/

View 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;
/

View 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;
/

View 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;
/

View 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;
/

View 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;
/

View 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;
/

View 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;
/

View 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;
/