diff --git a/DLLG/DLLG.sql b/DLLG/DLLG.sql index 644a1bb4d..b781936f8 100644 --- a/DLLG/DLLG.sql +++ b/DLLG/DLLG.sql @@ -17,7 +17,6 @@ SET DEFINE OFF ------ payload begin ------ - CREATE OR REPLACE PACKAGE DLLG AS FUNCTION res_presave (p_user_key IN NUMBER, @@ -41,6 +40,8 @@ AS END; / + + CREATE OR REPLACE PACKAGE BODY DLLG AS FUNCTION res_presave (p_user_key IN NUMBER, @@ -307,7 +308,7 @@ AS v_result := FourBin2Hex (v_bin_str) || v_result; END LOOP; - RETURN v_result; + RETURN LOWER(LTRIM(v_result, '0')); END; @@ -334,6 +335,7 @@ AS v_card_number_key NUMBER; v_facility_code_key NUMBER; v_hex_code_key NUMBER; + v_dec_code_key NUMBER; v_date DATE; BEGIN FOR rec IN c @@ -388,6 +390,11 @@ AS FROM bez_kenmerk WHERE bez_kenmerk_upper = 'HEX CODE'; + SELECT bez_kenmerk_key + INTO v_dec_code_key + FROM bez_kenmerk + WHERE bez_kenmerk_upper = 'DEC CODE'; + DBMS_OUTPUT.put_line ('v_date'); SELECT bez_afspraak_datum @@ -404,34 +411,15 @@ AS WHERE kw.bez_bezoekers_key = p_bezkey AND kw.bez_kenmerk_key = v_card_number_key; - WHILE v_found = 0 AND v_count < 1000 - LOOP - --DBMS_OUTPUT.put_line (COALESCE (v_code, '-1')); + IF v_code IS NULL OR SUBSTR(v_code, 2, 4) <> SUBSTR(p_bezkey, 2, 4) + THEN + v_code := ROUND(DBMS_RANDOM.value(0,4)) || SUBSTR(p_bezkey, LENGTH(p_bezkey)-3, LENGTH(p_bezkey)); - SELECT COUNT (*) - INTO v_exists - FROM bez_bezoekers b, bez_kenmerkwaarde kw, bez_afspraak a - WHERE a.bez_afspraak_key = b.bez_afspraak_key - AND kw.bez_bezoekers_key = b.bez_bezoekers_key - AND b.bez_bezoekers_key <> p_bezkey - AND kw.bez_kenmerk_key = v_card_number_key - AND kw.bez_kenmerkwaarde_waarde = COALESCE (v_code, '-1') - AND bez_afspraak_datum BETWEEN v_date - 1 AND v_date + 2; - - IF v_exists > 0 OR v_code IS NULL - THEN - v_code := TRUNC (DBMS_RANDOM.VALUE (9999, 50000)); - --DBMS_OUTPUT.put_line ('Nieuwe code:' || v_code); - ELSE - v_found := 1; - FLX.setflex ('BEZ', - v_card_number_key, - p_bezkey, - v_code); - END IF; - - v_count := v_count + 1; - END LOOP; + FLX.setflex ('BEZ', + v_card_number_key, + p_bezkey, + v_code); + END IF; FLX.setflex ('BEZ', v_facility_code_key, @@ -440,6 +428,7 @@ AS -- Vul het flexveld hex code met de hex waarde die gescant moet worden. -- We gebruiken hiervoor 'The Standard 26-Bit Format' + FLX.setflex ( 'BEZ', v_hex_code_key, @@ -447,6 +436,13 @@ AS DLLG.get_hex_card_data ( LPAD (TRIM (TO_CHAR (v_code, 'XXXXXX')), 4, '0'), LPAD (TRIM (TO_CHAR (123, 'XXXXXX')), 2, '0'))); + + FLX.setflex ( + 'BEZ', + v_dec_code_key, + p_bezkey, + '123' || LPAD(TRIM(v_code), 5, '0')); + END; PROCEDURE set_bezoeker_syncdate (p_bezkey IN NUMBER, @@ -489,7 +485,7 @@ AS FLX.setflex ('BEZ', v_sync_timestamp_key, p_bezkey, - TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SSS')); + TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')); END; END; @@ -1819,6 +1815,7 @@ CREATE OR REPLACE VIEW dllg_v_bezoeker_brivo bezoeker_email, card_number, facility_code, + hex_code, afspraak_van, afspraak_tot, meeting_id @@ -1834,6 +1831,7 @@ SELECT 'POST', b.bez_bezoekers_email, c.card, f.facility, + h.hex_code, TRUNC(a.bez_afspraak_datum), TRUNC(a.bez_afspraak_datum)+1, '' @@ -1846,11 +1844,16 @@ SELECT 'POST', (SELECT kw.bez_bezoekers_key, bez_kenmerkwaarde_waarde facility FROM bez_kenmerk k, bez_kenmerkwaarde kw WHERE k.bez_kenmerk_upper LIKE 'FACILITY CODE%' - AND kw.bez_kenmerk_key = k.bez_kenmerk_key) f + AND kw.bez_kenmerk_key = k.bez_kenmerk_key) f, + (SELECT kw.bez_bezoekers_key, bez_kenmerkwaarde_waarde hex_code + FROM bez_kenmerk k, bez_kenmerkwaarde kw + WHERE k.bez_kenmerk_upper LIKE 'HEX CODE%' + AND kw.bez_kenmerk_key = k.bez_kenmerk_key) h WHERE b.bez_afspraak_key = a.bez_afspraak_key AND TRUNC(a.bez_afspraak_datum) = TRUNC (SYSDATE) -- Alleen afspraken nu AND b.bez_bezoekers_key = c.bez_bezoekers_key AND b.bez_bezoekers_key = f.bez_bezoekers_key + AND b.bez_bezoekers_key = h.bez_bezoekers_key AND NOT EXISTS (SELECT kw.bez_bezoekers_key, bez_kenmerkwaarde_waarde FROM bez_kenmerk k, bez_kenmerkwaarde kw @@ -1858,6 +1861,29 @@ SELECT 'POST', AND kw.bez_kenmerk_key = k.bez_kenmerk_key AND kw.bez_bezoekers_key = b.bez_bezoekers_key); +-- Notificatie naar bezoekers +CREATE OR REPLACE VIEW dllg_v_noti_visitor +AS + SELECT NULL sender, + NULL receiver, + 'Bezoekafspraak op ' || TO_CHAR('bez_afspraak_datum', 'DD-MM-YYYY') || ' om ' || TO_CHAR('bez_afspraak_datum', 'HH24:MI') || ' uur bij DLL' text, + 'CUST01' code, + a.bez_afspraak_key key, + bez_bezoekers_key xkey, + bez_bezoekers_email xemail, + NULL xmobile + FROM bez_afspraak a, bez_bezoekers b + WHERE a.bez_afspraak_key = b.bez_afspraak_key + AND a.bez_afspraak_datum < fac.datumtijdplusuitvoertijd (SYSDATE, 3, 'D') + AND a.bez_afspraak_datum > SYSDATE + AND NOT EXISTS + (SELECT 1 + FROM fac_tracking t, fac_srtnotificatie sn + WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key + AND t.fac_tracking_refkey = a.bez_afspraak_key + AND b.bez_bezoekers_aanmaak < fac_tracking_datum); + + ------ payload end ------