Files
Facilitor/APPL/CAD/legenda_create.asp
Koen Reefman c0d9cdbed7 UWVA#73608 autorisatie-checks verbeterd
svn path=/Website/branches/v2022.2/; revision=56646
2022-07-20 21:53:50 +00:00

117 lines
3.9 KiB
Plaintext

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: legenda_create.asp
Description: Maak een nieuwe legendawaarde aan in een ruimte.
Parameters: room_key OF: highlight voor meerdere ruimetswp_key
Context: default.asp/$.post
Result:
Note: Vooralsnog *moet* in een ruimte gegooid worden
(werkpleksymbool ondersteunen we nog niet echt).
*/
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="FGII.inc" -->
<!-- #include file="../shared/save2db.inc" -->
<%
protectRequest.validateToken();
var warning = null;
var scenario_key = getQParamInt("scenario_key"); // current scenario.
var vKey = getQParamInt("vKey");
var highlight_arr = getQParamIntArray("highlight", [-1]); // Comma-separated room_key_list (terrains). Optional
var roomKey = getQParamInt("room_key"); // Die moet er zijn
var themaKey = getQParamInt("thema"); // Voor de viewnaam
var lwKey = getQParamInt("lwKey"); // Legenda waarde key
var addmode = getQParamInt("addmode", 0); // 1 voor toevoegen, 0 voor overschijven
var sql = "SELECT cad_thema_view"
+ " , COALESCE(fac_functie_key, -1) fac_functie_key"
+ " FROM cad_thema"
+ " WHERE cad_thema_key = " + themaKey;
var oRs = Oracle.Execute(sql);
var viewname = oRs("cad_thema_view").value;
var functie_key = oRs("fac_functie_key").Value;
oRs.Close();
if (functie_key > -1) // Zonder autorisatie functie is dit niet beperkt
user.checkAutorisation(functie_key);
// Als meerdere ruimtes gehighlight maar je dropt niet in één van die
// ruimtes dan geldt uitsluitend de dropruimte
var roomKeyinHighlight = false;
for (i in highlight_arr)
{
if (roomKey == parseInt(highlight_arr[i], 10))
roomKeyinHighlight = true;
}
if (!roomKeyinHighlight) // ook als geen highlight
highlight_arr = [roomKey];
if (scenario_key == 0)
{
var where = " WHERE alg_ruimte_key IN (" + highlight_arr.join(",") + ")";
var sql = "SELECT waarde, alg_ruimte_key FROM " + viewname + where;
oldvals = [];
var oRs = Oracle.Execute(sql);
while (!oRs.Eof)
{
oldvals[oRs("alg_ruimte_key").value] = oRs("waarde").value;
oRs.MoveNext();
}
oRs.Close();
if (addmode == 0)
{
sql = "UPDATE " + viewname + " SET waarde_key = " + lwKey;
}
else // Toevoegen (shift gedrukt tijdens slepen)
{
sql = "INSERT INTO " + viewname + " (alg_ruimte_key, waarde_key)"
+ "SELECT alg_ruimte_key, " + lwKey + " FROM alg_ruimte";
}
sql += where;
var err = Oracle.Execute(sql, true); // De echte update
if (err.friendlyMsg)
warning = err.friendlyMsg;
// tracking per ruimte
var sql = "SELECT waarde, alg_ruimte_key FROM " + viewname + where;
var oRs = Oracle.Execute(sql);
while (!oRs.Eof)
{
var newval = oRs("waarde").value;
var oldval = oldvals[oRs("alg_ruimte_key").value];
if ((oldval || "") != (newval || ""))
shared.trackaction("ALGCAD", oRs("alg_ruimte_key").value, buildTrackText("varchar", oldval, newval, { nodiff: true } ));
oRs.MoveNext();
}
oRs.Close();
}
else // Scenario
{
if (addmode == 0)
{
sql = "UPDATE "+viewname+" set waarde_key = " + lwKey
}
else // Toevoegen (shift gedrukt tijdens slepen)
{
sql = "INSERT INTO "+viewname+" (prj_ruimte_key, waarde_key)"
+ "SELECT prj_ruimte_key, " + lwKey + " FROM prj_ruimte"
}
sql += " WHERE prj_ruimte_key IN (" + highlight_arr.join(",") + ")";
var err = Oracle.Execute(sql, true); // De echte update
if (err.friendlyMsg)
warning = err.friendlyMsg;
}
Response.Write(JSON.stringify({ success: warning == null, message: warning }));
%>
<% ASPPAGE_END(); %>