diff --git a/HSLE/hsle.sql b/HSLE/hsle.sql index 41c823ed7..14a79e8fb 100644 --- a/HSLE/hsle.sql +++ b/HSLE/hsle.sql @@ -25,6 +25,7 @@ SET DEFINE OFF CREATE OR REPLACE PACKAGE HSLE AS PROCEDURE schonen_accounts; + PROCEDURE update_fegroep; END; / @@ -111,6 +112,64 @@ AS fac.writelog ('HSLE_SCHONEN', 'E', v_errormsg, ''); COMMIT; END schonen_accounts; + + -- HSLE#74337: Toekennen medewerkers aan groep 302=FE - Medewerker! + PROCEDURE update_fegroep + AS + c_applname VARCHAR2 (50) := 'UPDATE_FEGROEP'; + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_count NUMBER; + v_datum1 DATE; + v_datum2 DATE; + + CURSOR c_medewerkers + IS + SELECT '[' || TO_CHAR (p.prs_perslid_key) || '|' || p.prs_perslid_email || '|' || pf.prs_perslid_naam_full || '] ' + aanduiding, + p.prs_perslid_key + FROM prs_v_aanwezigperslid p, prs_v_perslid_fullnames_all pf + WHERE INSTR (UPPER (COALESCE (p.prs_perslid_email, 'x')), '@STUDENT.HSLEIDEN.NL') = 0 -- HSLE#73333: Medewerker als email <> @student.hsleiden.nl (of leeg)! + AND p.prs_perslid_externid IS NOT NULL + AND SUBSTR (COALESCE (p.prs_perslid_oslogin, 'x'), 1, 1) <> '_' + AND p.prs_perslid_apikey IS NULL -- Voor de zekerheid! + AND p.prs_perslid_key > 10 -- Voor de zekerheid! + AND p.prs_perslid_key = pf.prs_perslid_key + AND NOT EXISTS + (SELECT 1 + FROM fac_gebruikersgroep + WHERE fac_groep_key = 302 -- FE - Medewerker + AND prs_perslid_key = p.prs_perslid_key) + ORDER BY prs_perslid_key; + BEGIN + v_count := 0; + v_datum1 := SYSDATE; + + FOR rec IN c_medewerkers + LOOP + BEGIN + v_errormsg := 'Fout toevoegen autorisatiegroep'; + + INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key) + VALUES (302, rec.prs_perslid_key); + + v_count := v_count + 1; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.writelog (c_applname, 'E', rec.aanduiding || v_errormsg, ''); + COMMIT; + END; + END LOOP; + + v_datum2 := SYSDATE; + fac.writelog (c_applname, 'S', 'FE - Medewerker/#toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm'); + COMMIT; + END update_fegroep; END; / @@ -122,6 +181,9 @@ AS BEGIN -- Verwijder medewerkers 7 dagen na einddatum (in het verleden)! hsle.schonen_accounts (); + + -- HSLE#74337: Toekennen medewerkers aan groep 302=FE - Medewerker! + hsle.update_fegroep (); EXCEPTION WHEN OTHERS THEN