diff --git a/EXC/EXC_PAC.SRC b/EXC/EXC_PAC.SRC index ca3cfe3b..787b7280 100644 --- a/EXC/EXC_PAC.SRC +++ b/EXC/EXC_PAC.SRC @@ -13,6 +13,7 @@ AS RETURN NUMBER; PROCEDURE set_ruimtes_clean(p_import_key IN NUMBER); + PROCEDURE importBezoekers(p_import_key IN NUMBER, p_appt_id IN VARCHAR2, p_recur_id IN VARCHAR2, p_rsv_ruimte_key IN NUMBER, date_interval_start IN DATE, date_interval_end IN DATE); PROCEDURE import_exchange(p_import_key IN NUMBER, p_days_from IN NUMBER DEFAULT 0, p_days_to IN NUMBER DEFAULT 90); PROCEDURE update_exchange(p_import_key IN NUMBER, p_days_from IN NUMBER DEFAULT 0, p_days_to IN NUMBER DEFAULT 90); @@ -87,6 +88,91 @@ AS RETURN NULL; END; + PROCEDURE importBezoekers (p_import_key IN NUMBER, p_appt_id IN VARCHAR2, p_recur_id IN VARCHAR2, p_rsv_ruimte_key IN NUMBER, date_interval_start IN DATE, date_interval_end IN DATE) + IS + v_afspraak_key bez_afspraak.bez_afspraak_key%TYPE := -1; + + CURSOR bezoekers IS + SELECT subject, + starttime, + endtime, + organizer, + att_name, + att_mail, + appt_id, + recur_id + FROM exc_import + WHERE starttime <= date_interval_end + AND endtime >= date_interval_start + AND appt_id || '|' || recur_id = p_appt_id || '|' || p_recur_id + AND gelukt IS NULL + AND NOT REGEXP_LIKE (att_mail, (SELECT COALESCE (fac_setting_pvalue, fac_setting_default) + FROM fac_setting + WHERE fac_setting_name = 'exchange_internal_email_regexp')); + BEGIN + FOR exc_bez IN bezoekers + LOOP + IF v_afspraak_key = -1 + THEN + SELECT bez_s_bez_afspraak_key.NEXTVAL INTO v_afspraak_key FROM DUAL; + INSERT INTO bez_afspraak (bez_afspraak_key, + prs_perslid_key, + bez_afspraak_datum, + bez_actie_key, + bez_afspraak_ruimte, + bez_afspraak_opmerking, + bez_afspraak_eind, + alg_locatie_key, + alg_onrgoed_keys, + bez_afspraak_host_key, + bez_afspraak_contact_key, + res_rsv_ruimte_key) + SELECT v_afspraak_key, + rr.res_rsv_ruimte_contact_key, + rr.res_rsv_ruimte_van, + r.bez_actie_key, + SUBSTR (r.res_ruimte_nr, 1, 30), + SUBSTR ('Overgenomen uit Exchange', 1, 320), + rr.res_rsv_ruimte_tot, + g.alg_locatie_key, + MIN (rar.alg_ruimte_key), + rr.res_rsv_ruimte_host_key, + rr.res_rsv_ruimte_contact_key, + p_rsv_ruimte_key + FROM res_rsv_ruimte rr, + res_ruimte_opstelling ro, + res_ruimte r, + res_alg_ruimte rar, + alg_v_aanwezigruimte ar, + alg_verdieping v, + alg_gebouw g + WHERE rr.res_rsv_ruimte_key = p_rsv_ruimte_key + AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key + AND r.res_ruimte_key = ro.res_ruimte_key + AND rar.res_ruimte_key = r.res_ruimte_key + AND rar.res_alg_ruimte_verwijder IS NULL + AND ar.alg_ruimte_key = rar.alg_ruimte_key + AND v.alg_verdieping_key = ar.alg_verdieping_key + AND g.alg_gebouw_key = v.alg_gebouw_key + GROUP BY rr.res_rsv_ruimte_contact_key, + rr.res_rsv_ruimte_van, + r.bez_actie_key, + r.res_ruimte_nr, + rr.res_rsv_ruimte_tot, + g.alg_locatie_key, + rr.res_rsv_ruimte_host_key, + rr.res_rsv_ruimte_contact_key; + END IF; + + INSERT INTO bez_bezoekers (bez_afspraak_key, + bez_afspraak_naam, + bez_bezoekers_email) + VALUES (v_afspraak_key, + SUBSTR (exc_bez.att_name, 1, 60), + exc_bez.att_mail); + END LOOP; + END; + -- Welbeschouwd kunnen door de Exchange-constraints ruimte reserveringen nooit overlappen -- Als er in FACILITOR toch een overlap is ontstaan is dat eigenlijk een gebrek van -- de synchronisatie procedure @@ -772,8 +858,7 @@ AS organizer, modifier, appt_id, - recur_id, - COUNT (*) num_bez + recur_id FROM exc_import WHERE modifier = 'U' AND starttime <= date_interval_end @@ -1267,7 +1352,6 @@ AS IF ( v_ruimte_extern_id != rec.res_ruimte_extern_id OR rec.res_rsv_ruimte_omschrijving != SUBSTR (rec.subject, 1, 60) - OR rec.res_rsv_ruimte_bezoekers != rec.num_bez OR rec.res_rsv_ruimte_van != rec.starttime OR rec.res_rsv_ruimte_tot != rec.endtime) THEN @@ -1291,8 +1375,7 @@ AS res_rsv_ruimte_omschrijving = SUBSTR (rec.subject, 1, 60), res_rsv_ruimte_van = rec.starttime, - res_rsv_ruimte_tot = rec.endtime, - res_rsv_ruimte_bezoekers = rec.num_bez + res_rsv_ruimte_tot = rec.endtime WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key; -- Opruimen en voorzieningen en bezoekers laten volgen @@ -1353,14 +1436,6 @@ AS 'DD-MM-YYYY HH24:MI') || '-->' || TO_CHAR (rec.endtime, 'DD-MM-YYYY HH24:MI')); - fac.imp_writelog ( - p_import_key, - 'I', - v_aanduiding, - 'Bezoekers: ' - || rec.res_rsv_ruimte_bezoekers - || '-->' - || rec.num_bez); END IF; fac.trackaction ('RESUPD', @@ -1609,6 +1684,9 @@ AS || ')'); END IF; + v_errorhint := 'Toevoegen bezoekers'; + exc.importBezoekers(p_import_key, rec.appt_id, rec.recur_id, v_rsv_ruimte_key, date_interval_start, date_interval_end); + -- Succesvol afgerond; zet vlag. -- TODO: komen we hier ook als er iets mis ging met de bezoekers? UPDATE exc_import diff --git a/FAC/FAC_SET.SRC b/FAC/FAC_SET.SRC index c57c7191..6d1849a1 100644 --- a/FAC/FAC_SET.SRC +++ b/FAC/FAC_SET.SRC @@ -168,7 +168,7 @@ DEFINE_SETTING('CNT', 0001, 'WEB_FACTAB', 'cntd_image_path' DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'NotifyMessageInterval' , 'number' , '0' , 'time (seconds) between NotifyMessage.asp [=Check for popups] refreshes. 0=disable') DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'PerformInterval' , 'number' , '0' , 'time (seconds) between shared/performancetester.asp refreshes 0=disable') DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'allow_framed_facilitor' , 'boolean' , 'false' , 'Is it allowed to use Facilitor in an (i)frame?') -DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'allowedImgRegex' , 'string' , '^((http|https):\/\/)' , 'Allowed url-regex in between [img][/img]-tags') +DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'allowedImgRegex' , 'string' , '^((http|https):\/\/)' , '[DEPRECATED] Allowed url-regex in between [img][/img]-tags') DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'allowedLinkRegex' , 'string' , '^((ftp|http|https):\/\/|(mailto|tel):)' , 'Allowed link-regex in between [link][/link]-tags') DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'auto_https' , 'number' , '3' , '0=not https, 1=http redirects to https, (3=also all cookies ;Secure)') DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'fac_html_strictness' , 'number' , '0' , '0=allow html in message, res-room description, flex-labels, 1=do not allow (strict, more secure)') @@ -797,6 +797,7 @@ DEFINE_SETTING('RES', 0001, 'WEB_PRSSYS', 'res_pda_deel_times' DEFINE_SETTING('RES', 0001, 'WEB_PRSSYS', 'res_pda_room_times' , 'array' , '30,60,120' , 'Mobile proposed reservation times for rooms') DEFINE_SETTING('RES', 0001, 'WEB_PRSSYS', 'res_adhoc_threshold' , 'number' , '10' , 'The amount of time (in minutes) before the end of a reservation before an adhoc reservation can be made') DEFINE_SETTING('RES', 0001, 'WEB_PRSSYS', 'msgraph_sync_level' , 'number' , '0' , 'Level of synchronization (Sufficient rights required); { 0: No sync, +1: Facilitor reads from Exchange, +2: Facilitor writes only to Exchange rooms, +4: Facilitor writes to all Exchange users }') +DEFINE_SETTING('RES', 0001, 'WEB_PRSSYS', 'exchange_internal_email_regexp' , 'string' , '*' , 'Regular expression to match internal visitors by; internal visitors are not registered in Facilitor (All visitors are internal by default)') DEFINE_SETTING('SLE', 0001, 'WEB_PRSSYS', 'cil_ins_srt_groep_key' , 'number' , '-1' , 'INS_SRTDEEL_KEY of object type Cylinders') DEFINE_SETTING('SLE', 0001, 'WEB_PRSSYS', 'sle_cil_koppelen' , 'number' , '1' , 'Sleutels en cilinders zijn door bo handmatig te koppelen {0=nee, 1=ja(default)}') DEFINE_SETTING('SLE', 0001, 'WEB_PRSSYS', 'sle_ins_srt_groep_key' , 'number' , '-1' , 'INS_SRTDEEL_KEY of object type Keys')