<%@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/json2.js' -->
<!-- #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 oRs = Oracle.Execute("SELECT cad_thema_view FROM cad_thema WHERE cad_thema_key = " + themaKey);
var viewname = oRs("cad_thema_view").value;

// 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();
    }

    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();
    }
}
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 }));
%>
