Merge 2023.3 Gold B changes

svn path=/Website/trunk/; revision=63306
This commit is contained in:
2024-01-23 12:34:53 +00:00
parent ed6bb24561
commit 1be764b6b5
12 changed files with 95 additions and 60 deletions

View File

@@ -60,7 +60,11 @@ function _updateIncomingOutlookQueue(etag, CRUD) { // etag = 'The HTTP entity ta
}
incomingOutlookQueue[etag] = new Date().getTime() + 4 * 60 * 60 * 1000; // Expired in 4 uur
} else if (CRUD == "D") {
delete incomingOutlookQueue[etag];
// delete incomingOutlookQueue[etag];
// ipv deleten laten we deze expiren over 3s zodat we reeds verwerkte notificaties niet nog eens gaan verwerken als het HTTP verkeer elkaar kruist
if (etag in incomingOutlookQueue) {
incomingOutlookQueue[etag] = new Date().getTime() + 3 * 1000;
}
}
Application(customerId + "_incomingOutlookQueue") = JSON.stringify(incomingOutlookQueue);
Application.UnLock();

View File

@@ -148,7 +148,10 @@ function model_visitors()
{
if (jsondata.parking)
{
var gebouwterreinkey = "NULL"; // doen we nog even niet aan?
var gebouwterreinkey = "NULL"; // We ondersteunen nog geen expliciete gebouwkeuze
var prkgebter = bez.onlyGebouw(olddata.appointment.id);
var gebouwterreinkey = prkgebter > 0? prkgebter: "null"; // de enige goede
var sql = "BEGIN bez.claim_parking(" + the_key + ", " + gebouwterreinkey + "); END;"
Oracle.Execute(sql);
}
@@ -159,7 +162,7 @@ function model_visitors()
var bezoeker = "";
if ("in" in jsondata)
{
oRs = Oracle.Execute("SELECT bez_bezoekers_done, bez_afspraak_naam"
var oRs = Oracle.Execute("SELECT bez_bezoekers_done, bez_afspraak_naam"
+ " FROM bez_bezoekers"
+ " WHERE bez_bezoekers_key = " + the_key);
olddone = oRs("bez_bezoekers_done").Value;
@@ -189,7 +192,10 @@ function model_visitors()
var result = generic_REST_POST(this)(params, jsondata, parent_key); /* new visitors */
if (jsondata.parking)
{
var gebouwterreinkey = "NULL"; // doen we nog even niet aan?
var gebouwterreinkey = "NULL"; // We ondersteunen nog geen expliciete gebouwkeuze
var prkgebter = bez.onlyGebouw(parent_key); // parent_key is de afspraak_key
var gebouwterreinkey = prkgebter > 0? prkgebter: "null"; // de enige goede
var sql = "BEGIN bez.claim_parking(" + result.key + ", " + gebouwterreinkey + "); END;"
Oracle.Execute(sql);
}

View File

@@ -899,7 +899,37 @@ bez =
actie_key = oRs("bez_actie_key").Value;
oRs.Close()
return actie_key;
},
// Bepaal eventueel het ene gebouw/terrein wat we mogen kiezen. bez.claim_park is nog niet slim genoeg
only_prkgebter: -2,
onlyGebouw: function _onlyGebouw(afspraak_key)
{
if (this.only_prkgebter > -2)
return this.only_prkgebter;
var sql = "SELECT bez_afspraak_datum, bez_afspraak_eind, alg_locatie_key"
+ " FROM bez_afspraak"
+ " WHERE bez_afspraak_key = " + afspraak_key;
var oRs = Oracle.Execute(sql);
var gebtersql = bez.getgebouwterrein_sql(new Date(oRs("bez_afspraak_datum").value), new Date(oRs("bez_afspraak_eind").value), oRs("alg_locatie_key").value);
oRs.Close();
var oRs = Oracle.Execute(gebtersql);
var aantal_gebter = 0;
this.only_prkgebter = -1;
while (!oRs.eof)
{
var alg_type = oRs("alg_type").value;
this.only_prkgebter = (alg_type == "R"? oRs("alg_gebouw_key").value : oRs("alg_terreinsector_key").value);
aantal_gebter++;
oRs.MoveNext();
}
oRs.Close();
if (aantal_gebter != 1)
this.only_prkgebter = -1; // Gebruiker heeft gekozen via Suggest en getFParamInt("gebouwkey" + bznum, "") wordt gebruikt.
return this.only_prkgebter;
}
}
%>

View File

@@ -23,35 +23,6 @@
<%
// Bepaal eventueel het ene gebouw/terrein wat we mogen kiezen. bez.claim_park is nog niet slim genoeg
var only_prkgebter = -2;
function onlyGebouw(afspraak_key)
{
if (only_prkgebter > -2)
return only_prkgebter;
var sql = "SELECT bez_afspraak_datum, bez_afspraak_eind, alg_locatie_key"
+ " FROM bez_afspraak"
+ " WHERE bez_afspraak_key = " + afspraak_key;
var oRs = Oracle.Execute(sql);
var gebtersql = bez.getgebouwterrein_sql(new Date(oRs("bez_afspraak_datum").value), new Date(oRs("bez_afspraak_eind").value), oRs("alg_locatie_key").value);
oRs.Close();
var oRs = Oracle.Execute(gebtersql);
var aantal_gebter = 0;
only_prkgebter = -1;
while (!oRs.eof)
{
var alg_type = oRs("alg_type").value;
only_prkgebter = (alg_type == "R"? oRs("alg_gebouw_key").value : oRs("alg_terreinsector_key").value);
aantal_gebter++;
oRs.MoveNext();
}
oRs.Close();
if (aantal_gebter != 1)
only_prkgebter = -1; // Gebruiker heeft gekozen via Suggest en getFParamInt("gebouwkey" + bznum, "") wordt gebruikt.
return only_prkgebter;
}
// Leest de bezoekers naam, bedrijfnaam, parkeerplaatswens en evt. badgenummer uit Request.Form
// Verondersteld dat bez_afspraak_record al bestaat! of maak hem desnoods aan als afspraak_key==-1
// (dan zal rsv_ruimte_key een waarde hebben)
@@ -482,7 +453,7 @@ function saveOneBezoeker(afspraak_key, rsv_ruimte_key, bznum, params)
gebouwterreinkey = prkgebter; // de gekozen
else
{
var prkgebter = onlyGebouw(afspraak_key)
var prkgebter = bez.onlyGebouw(afspraak_key)
gebouwterreinkey = prkgebter > 0? prkgebter: "null"; // de enige goede
}
sql = "BEGIN bez.claim_parking(" + bez_key + ", " + gebouwterreinkey + "); END;"

View File

@@ -489,7 +489,7 @@ if (Session("interface") == "touch") { %>
<% if (!noTabs && S("menu_tab_toggles_portalmenu")==1)
{
var menuitems = fillMenuArray(true); // portalOnly
var menuitems = fillMenuArray(1, { "portalOnly": true });
%>
if (selectedTabId == 0) // Zelfservice?
{

View File

@@ -126,7 +126,8 @@ function fac_list_query (params)
+ " AND m.fac_activiteit_key IS NULL"
+ " AND (m.mld_workflowstep_key IS NULL OR mld_melding_start_key = mld_melding_key)"
+ " AND m.mld_melding_datum < SYSDATE + " + S("facilitiesfuture") // niet te toekomstig
+ " AND ((m.mld_melding_status IN (1,5,6) AND COALESCE(fac.gettrackingdate('MLDAFM', mld_melding_key),fac.gettrackingdate('MLDREJ', mld_melding_key),mld_melding_einddatum) > SYSDATE - " + S("facilitiespast_mld") + ")" // niet te lang geleden klaar (gepland)
+ " AND ((m.mld_melding_status IN (5,6) AND fac.gettrackingdate('MLDAFM', mld_melding_key) > SYSDATE - " + S("facilitiespast_mld") + ")" // niet te lang geleden klaar
+ " OR (m.mld_melding_status = 1 AND fac.gettrackingdate('MLDREJ', mld_melding_key) > SYSDATE - " + S("facilitiespast_mld") + ")" // niet te lang geleden verworpen
+ " OR m.mld_melding_status NOT IN (1,5,6))" // of ongeacht alles nog niet klaar
+ lees_rechten_sql(lpkey, "sm.mld_ins_discipline_key", ["WEB_MLDBOF", "WEB_MLDFOF"])
);

View File

@@ -117,7 +117,9 @@
"ins_alg_ruimte_key",
"ins_alg_ruimte_type",
"ins_alg_ruimte_type_org",
"ins_alg_ruimte_key_org"]
"ins_alg_ruimte_key_org",
"ins_deel_dwgx",
"ins_deel_dwgy"]
},
"mld_melding_note": { "track": null,
"fields": ["name", "mld_melding_note_flag"]

View File

@@ -19,8 +19,6 @@ var NO_OTP_OK = true;
<!--#include file="../aut/login.inc"-->
<!--#include file="../Shared/encoding.inc" -->
<%
var isExpired = getQParamInt("expired",0) == 1; // Ben ik hier naar toe gestuurd vanwege een expired wachtwoord?
// Dan redirecten we na afloop naar de voorpagina
var theUser_key = getQParamInt("prs_key", user_key);
if (theUser_key != user_key && !user.has("WEB_FACFAC"))
abort_with_warning(L("lcl_no_auth"));
@@ -58,17 +56,40 @@ Session("otp_secret_temp") = '1$30$6$0$' + newsecret;
function otp_accept_callback(data)
{
iface.button.enable("btn_accept_submit");
if (data.success)
if (data.success) {
FcltMgr.closeDetail(window, data);
if (FcltMgr === FcltMgr.topmanager()) {
window.top.location.href = "<%=safe.jsstring(rooturl + "/")%>";
}
}
}
function otp_cancel() {
FcltMgr.confirm("Deze code is nog niet gekoppeld, wilt u dit scherm toch afsluiten?", gen_cancel);
}
$(() => {
iface.button.disable("btn_accept_submit");
$("#otpcode").on("input", event => {
if (event.currentTarget.value === "") {
iface.button.disable("btn_accept_submit");
} else {
iface.button.enable("btn_accept_submit");
}
});
$("form[name=u2]").on("submit", event => {
event.preventDefault();
$("#btn_accept_submit").trigger("click");
});
});
</script>
</head>
<body class="modal" id="mod_authQR">
<%
MODAL_START();
%> <form name="u2"><%
MODAL_BLOCK_START("", L("lcl_otp_authenticatie_activate"), {icon: "fa-shield-check"});
var secret32 = binary_to_base32(hex_to_binary(newsecret));
@@ -83,12 +104,13 @@ Session("otp_secret_temp") = '1$30$6$0$' + newsecret;
MODAL_BLOCK_END();
var buttons = [ {title: L("lcl_submit"), icon: "fa-fclt-save", action: "otp_accept()", singlepress: true, id: "btn_accept_submit", importance: 1 },
{title: L("lcl_cancel"), icon: "fa-fclt-cancel", action: "gen_cancel()", importance: 3 } ];
{title: L("lcl_cancel"), icon: "fa-fclt-cancel", action: "otp_cancel()", importance: 3 } ];
SIMPLE_BLOCK_START();
CreateButtons(buttons);
CreateButtons(buttons, { entersubmit: true });
SIMPLE_BLOCK_END();
IFACE.FORM_END();
%> </form><%
MODAL_END(); %>
</body>
</html>

View File

@@ -94,6 +94,7 @@ function SLNKDWF (myProps)
// De DLL kent alleen (nog) versie A dus rekenen we B terug naar A
// om dat te kunnen omrekenen hebben we DWGminX..DWGmaxY nodig
// maar die krijgen we dan gelukkig aangereikt door de aanroeper
var paperRot = parseInt(_getParam("rotation",0),10);
if (_getParam("maximize","0")=="1" || _getParam("DWGminX","")=="")
{
var ox = _getParam("offsetX",0);
@@ -110,8 +111,6 @@ function SLNKDWF (myProps)
var centerX = parseFloat(_getParam("centerX", (DWGminX + DWGmaxX)/2));
var centerY = parseFloat(_getParam("centerY", (DWGminY + DWGmaxY)/2));
var paperRot = parseInt(_getParam("rotation",0),10);
// Bepaal schaal
//
var units = Math.max((DWGmaxX - DWGminX) / sizeX, (DWGmaxY - DWGminY) / sizeY) ; // DWG units per pixel bij schaal 1

View File

@@ -210,7 +210,7 @@ function getCalendarEventByID(userPrincipalName, id)
{
var request = {
"method": "GET",
"url": "https://graph.microsoft.com/v1.0/users/" + userPrincipalName + "/events/" + id
"url": "https://graph.microsoft.com/v1.0/users/" + encodeURIComponent(userPrincipalName) + "/events/" + id
+ "?$expand=singleValueExtendedProperties($filter=id eq '" + FCLT_KEY_PROP_ID_NAME + "')",
"headers": { "Authorization": "Bearer " + token }
}
@@ -221,7 +221,7 @@ function getCalendarEventByID(userPrincipalName, id)
function getCalendarEventByICalUId(userPrincipalName, iCalUId, isOccurrence)
{ // occurrences (en exceptions) zijn alleen via de calenderView beschikbaar, seriesMaster alleen via events (singleInstance via beiden)
var endpoint = isOccurrence ? "calendarView" : "events";
var url = "https://graph.microsoft.com/v1.0/users/" + userPrincipalName + "/" + endpoint + "?$filter=iCalUId eq '" + iCalUId + "'"
var url = "https://graph.microsoft.com/v1.0/users/" + encodeURIComponent(userPrincipalName) + "/" + endpoint + "?$filter=iCalUId eq '" + iCalUId + "'"
+ "&$expand=singleValueExtendedProperties($filter=id eq '" + FCLT_KEY_PROP_ID_NAME + "')";
if (isOccurrence) { // Dit endpoint heeft verplichte datum-parameters
var calendarDates = getCalendarViewDates(userPrincipalName);
@@ -244,7 +244,7 @@ function getCalendarEventByRsv(userPrincipalName, res_rsv_ruimte_key)
{
var request = {
"method": "GET",
"url": "https://graph.microsoft.com/v1.0/users/" + userPrincipalName + "/events?"
"url": "https://graph.microsoft.com/v1.0/users/" + encodeURIComponent(userPrincipalName) + "/events?"
+ "$filter=singleValueExtendedProperties/Any(ep: ep/id eq '" + FCLT_KEY_PROP_ID_NAME + "' and ep/value eq '" + res_rsv_ruimte_key + "')",
"headers": { "Authorization": "Bearer " + token }
}
@@ -276,7 +276,7 @@ function getCalendarItems(userPrincipalName, skiptoken, deltatoken)
var request = {
"method": "GET",
"url": "https://graph.microsoft.com/v1.0/users/" + userPrincipalName + "/calendarView/delta?" + parms,
"url": "https://graph.microsoft.com/v1.0/users/" + encodeURIComponent(userPrincipalName) + "/calendarView/delta?" + parms,
"headers": { "Accept": "application/json", "Authorization": "Bearer " + token }
}
return doHTTP(request);
@@ -684,7 +684,7 @@ function patchEventWithFcltKey(roomCalendarEvent, res_rsv_ruimte_key) {
}
var request = {
"method": "PATCH",
"url": "https://graph.microsoft.com/v1.0/users/" + userPrincipalName + "/events/" + organisatorEvent.id,
"url": "https://graph.microsoft.com/v1.0/users/" + encodeURIComponent(userPrincipalName) + "/events/" + organisatorEvent.id,
"body": JSON.stringify(data),
"headers": { "Content-Type": "application/json", "Authorization": "Bearer " + token }
}
@@ -776,7 +776,7 @@ function createSubscription(userPrincipalName, res_ruimte_key, notificationUrl,
var data = {
"changeType" : changeType,
"notificationUrl" : notificationUrl + "&res_ruimte=" + res_ruimte_key + "&hookcreated=" + new Date().toISOString(),
"resource" : "/users/" + userPrincipalName + "/events",
"resource" : "/users/" + encodeURIComponent(userPrincipalName) + "/events",
"clientState" : clientState,
"expirationDateTime": expirationDate
}
@@ -810,7 +810,7 @@ function deleteSubscription(userPrincipalName) {
var response = getSubscriptions();
var subscriptionList = [];
if (response && response.value) {
var resource = "/users/" + userPrincipalName + "/events";
var resource = "/users/" + encodeURIComponent(userPrincipalName) + "/events";
for (var i = 0; i < response.value.length; i++) {
if (response.value[i].resource == resource) { // Filter op Extern ID
subscriptionList.push(response.value[i].id);

View File

@@ -301,12 +301,12 @@ function _resToGraph(oRs, CRUD, params)
return false;
}
var targetId = res_ruimte_extern_id;
var userPrincipalName = res_ruimte_extern_id;
if (getMSGraphSyncLevel() & 4) {
targetId = host_mail;
userPrincipalName = host_mail;
}
if (targetId === undefined || targetId === null) {
if (userPrincipalName === undefined || userPrincipalName === null) {
__DoLog("Error: Kan geen gebruiker vinden namens wie we de reservering kunnen maken", "#FF0000");
return false;
}
@@ -407,7 +407,7 @@ function _resToGraph(oRs, CRUD, params)
}
}
var url = (params.batch ? "" : "https://graph.microsoft.com/v1.0") + "/users/" + targetId + "/events";
var url = (params.batch ? "" : "https://graph.microsoft.com/v1.0") + "/users/" + encodeURIComponent(userPrincipalName) + "/events";
if (CRUD == "U" || CRUD == "D")
url += "/" + organizerEventID;

View File

@@ -223,7 +223,7 @@ function cleanup_temp()
var thisFolder = fso.GetFolder(p_thisPath);
if (p_folder)
{
var regexp_f = new RegExp(p_folder);
var regexp_f = new RegExp(p_folder, "i");
var enumFolder = new Enumerator(thisFolder.SubFolders);
for (; !enumFolder.atEnd(); enumFolder.moveNext())
{
@@ -271,7 +271,7 @@ function cleanup_temp()
//__Log("scanFile: "+p_thisPath);
var fso = new ActiveXObject("Scripting.FileSystemObject");
var thisFolder = fso.GetFolder(p_thisPath);
var regexp_f = new RegExp(p_file_regexp);
var regexp_f = new RegExp(p_file_regexp, "i");
var enumFile = new Enumerator(thisFolder.Files);
for (; !enumFile.atEnd(); enumFile.moveNext())
{
@@ -301,7 +301,7 @@ function cleanup_temp()
var tempFolder = "../../../temp/" + CustId + "/";
var cleanup_regexp_arr =
[ { expr_folder: "", max_checklevel: 9, expr_file: "^(?:log_"+CustId+"_)\\S+\\\.html$", keep: "d30"} // Alle log_CustId_*.html-bestanden in TEMP\CustId van meer dan 30 dagen oud verwijderen.
, { expr_folder: "", max_checklevel: 9, expr_file: "\\S+\\\.(xml|jpg|json|pdf)$", keep: "d10"} // Alle *.xml-, *.jpg- en *.json-bestanden in TEMP\CustId van meer dan 10 dagen oud verwijderen.
, { expr_folder: "", max_checklevel: 9, expr_file: "\\S+\\\.(xml|jpg|json|pdf|eml|msg)$", keep: "d10"} // Alle *.xml-, *.jpg- en *.json-bestanden in TEMP\CustId van meer dan 10 dagen oud verwijderen.
, { expr_folder: "", max_checklevel: 9, expr_file: "^(?:(putorders.*_"+CustId+"))\\S+\\\.log$", keep: "m1" } // Alle putordersI_CustId_*.log en putorders_CustId_*.log verwijderen van voor de 1-ste van 1 maand geleden.
, { expr_folder: "^(putorders)$", max_checklevel: 9, expr_file: "^\\S+\.\\S+$", keep: "d30"} // Alles in TEMP\CustId\putorders van meer dan 30 dagen oud verwijderen.
, { expr_folder: "^(ALG|BES|CNT|FIN|INS|MRK|MLD|RES|FAQ|.__NEW__)", max_checklevel: 2, expr_file: "^\\S+", keep: "d2" } // In mappen TEMP\CustId\Module\*__NEW__* bestanden die ouder zijn dan 2 dagen verwijderen, en als deze map dan leeg is de map ook verwijderen.