<%@ LANGUAGE = JavaScript %>
<% /*
    $Revision$
    $Id$

    File:           alg_delete.asp (formerly setAlgverwijder.asp)
    Description:    Verwijderen alg-object en deels PRS

    Parameters:     key (van het onroerend goed)
                    level: "D", "RE", "L", "G", "V", "R", "W" (werkplek) of "PW" (perslid_werkplek)
    Context:        Vanuit show-schermen en of vanuit overzichten
    Result:         JSON object
    Note:

*/
var JSON_Result = true;
%>
<!--#include file="../Shared/common.inc"-->
<!--#include file="../Shared/json2.js" -->
<%
protectRequest.validateToken();

var level = getFParam("level");
var dis_key_arr = getFParamIntArray("key");

var autfunction = {D : "WEB_ALGMAN",
                   RE: "WEB_ALGMAN",
                   L : "WEB_ALGMAN",
                   T : "WEB_TERMAN", // Met ALG* bepaal je wat je ziet (Read), met RUI* en TER* bepaal je wat je kunt wijzigen (Write).
                   G : "WEB_ALGMAN",
                   V : "WEB_ALGMAN",
                   R : "WEB_RUIMAN", // Met ALG* bepaal je wat je ziet (Read), met RUI* en TER* bepaal je wat je kunt wijzigen (Write).
                   W : "WEB_PRSBOF",
                   PW: "WEB_PRSBOF"}[level];

var authParams = user.checkAutorisation(autfunction);

var table = {D : "ALG_DISTRICT",
             RE: "ALG_REGIO",
             L : "ALG_LOCATIE",
             T : "ALG_TERREINSECTOR",
             G : "ALG_GEBOUW",
             V : "ALG_VERDIEPING",
             R : "ALG_RUIMTE",
             W : "PRS_WERKPLEK",
             PW: "PRS_PERSLIDWERKPLEK"}[level];

result = { success: true, deleted: true };
for (var i = 0; i < dis_key_arr.length; i++)
{
    // W en WP hebben geen verwijderveld (meer), die gaan echt weg.
    if (level == "W" || level == "PW")
    {
        // Een WP gooit via de cascade zijn bezetting mee weg.
        // Een bezetting verwijderen doet niets extra
        // Bij impliciet verwijderen van wp-bezetting dus ook de werkplek weggooien
        // die nu (per definitie) leeg wordt. Dit moet eerst, want straks weet
        // ik niet meer genoeg
        if (level == "PW" && S("prs_werkplek_implicit") == 1)
        {
            sql = "DELETE FROM prs_werkplek"
                + " WHERE prs_werkplek_key IN "
                + "     (SELECT prs_werkplek_key "
                + "        FROM prs_perslidwerkplek"
                + "        WHERE prs_perslidwerkplek_key IN (" + dis_key_arr[i] + "))"
            var err = Oracle.Execute(sql, true);
            if (err.friendlyMsg)
              abort_with_warning(err.friendlyMsg);
        }
        // En dit moet ongeacht impliciet of expliciet.
        // Alleen bij PW&implicit zal dit niets meer verwijderen vanwege de cascade hiervoor
        sql = "DELETE FROM " + table
            + " WHERE " + table + "_key IN (" + dis_key_arr[i] + ")";
    }
    else
    {
        sql = "UPDATE " + table
            + "   SET " + table + "_VERWIJDER = " + "SYSDATE"
            + " WHERE " + table + "_key IN (" + dis_key_arr[i] + ")";
    }
    var err = Oracle.Execute(sql, true);
    if (err.friendlyMsg)
      abort_with_warning(err.friendlyMsg);
}

Response.Write(JSON.stringify(result));
%>