<%@language = "javascript" %>
<% /*
     $Revision$
     $Id$

    File:               shared/AjaxSaveFlex.asp
    Description:        *Direct* opslaan Flexkenmerken (met name/alleen nog maar voor type 'F'/'E')
    Parameters:
        module          MLD, OPDR, CNT, ALG, PRS, INS, RES
                        (nog niet BES maar die heeft? dan ook geen type 'F'/'E')
        parentKey       Key van melding/ opdracht etc.
        kenmerkKey      Key van het flexkenmerk
        flexVal         de bestandsnaam LET OP: Dit is een post-var! om bijvoorbeeld een plus in de naam beter te ondersteunen
    Context:            Via Ajax aangeroepen direct na verlaten 'upload' schermpje
    Note:               Met TAMPER bescherming!
*/ %>

<!-- #include file="../Shared/common.inc" -->
<%
protectQS.verify(); // tamper check

var module = getQParam("module");
var parentKey = getQParamInt("parentKey", -1);
var kenmerkKey = getQParamInt("kenmerkKey");
var flexVal = getFParam("flexVal"); // LET OP: Post-var dus
var kenmerk_module= getQParam("kenmerk_module", "");
saveFlexKenmerk(module, parentKey, kenmerkKey, flexVal, kenmerk_module);

// Sla een flexkenmerk op. Als flexval leeg is dan wordt het kenmerk gewist.
// kenmerk_module is optioneel. Alleen ALG heeft daarin een 'L','G', 'R'
function saveFlexKenmerk(module, parentKey, kenmerkKey, flexVal, kenmerk_module)
{ //TODO modulename en moduleval voor ALG!
  var moduleName = null;
  switch (module)
  {
    case "ALG":
        {
            nmTable = "alg_onrgoedkenmerk";
            nmParentKey = "alg_onrgoed_key";
            nmWaarde = "alg_onrgoedkenmerk_waarde";
            nmKenmerkKey = "alg_kenmerk_key";
            moduleName = "alg_onrgoed_niveau";
            //kenmerk_module is meegekomen
            break;
        }
    case "BES":
        {
            nmTable = "bes_kenmerkbestell";
            nmParentKey = "bes_bestelling_key";
            nmWaarde = "bes_kenmerkbestell_waarde";
            nmKenmerkKey = "bes_kenmerk_key";
            break;
        }
    case "BEZ":
        {
            nmTable = "bez_kenmerkwaarde";
            nmParentKey = "bez_bezoekers_key";
            nmWaarde = "bez_kenmerkwaarde_waarde";
            nmKenmerkKey = "bez_kenmerk_key";
            break;
        }
    case "CNT":
        {
            nmTable = "cnt_kenmerkcontract";
            nmParentKey = "cnt_contract_key";
            nmWaarde = "cnt_kenmerkcontract_waarde";
            nmKenmerkKey = "cnt_kenmerk_key";
            break;
        }
    case "FAQ":
        {
            nmTable = "faq_kenmerkwaarde";
            nmParentKey = "fac_faq_key";
            nmWaarde = "faq_kenmerkwaarde_waarde";
            nmKenmerkKey = "faq_kenmerk_key";
            break;
        }
    case "FIN":
        {
            nmTable = "fin_kenmerkfactuur";
            nmParentKey = "fin_factuur_key";
            nmWaarde = "fin_kenmerkfactuur_waarde";
            nmKenmerkKey = "fin_kenmerk_key";
            break;
        }
    case "FINR":
        {
            nmTable = "fin_kenmerkfactregel";
            nmParentKey = "fin_factuurregel_key";
            nmWaarde = "fin_kenmerkfactregel_waarde";
            nmKenmerkKey = "fin_kenmerk_key";
            break;
        }
    case "INS":
        {
            nmTable = "ins_kenmerkdeel";
            nmParentKey = "ins_deel_key";
            nmWaarde = "ins_kenmerkdeel_waarde";
            nmKenmerkKey = "ins_kenmerk_key";
            break;
        }
    case "MLD":
        {
            nmTable = "mld_kenmerkmelding";
            nmParentKey = "mld_melding_key";
            nmWaarde = "mld_kenmerkmelding_waarde";
            nmKenmerkKey = "mld_kenmerk_key";
            break;
        }
    case "OPDR":
        {
            nmTable = "mld_kenmerkopdr";
            nmParentKey = "mld_opdr_key";
            nmWaarde = "mld_kenmerkopdr_waarde";
            nmKenmerkKey = "mld_kenmerk_key";
            break;
        }
    case "PRS":
        {
            nmTable = "prs_kenmerklink";
            nmParentKey = "prs_link_key";
            nmWaarde = "prs_kenmerklink_waarde";
            nmKenmerkKey = "prs_kenmerk_key";
            moduleName = "prs_kenmerklink_niveau";
            //kenmerk_module is meegekomen
            break;
        }
    case "RES":
        {
            nmTable = "res_kenmerkwaarde";
            nmParentKey = "res_rsv_ruimte_key";
            nmWaarde = "res_kenmerkreservering_waarde";
            nmKenmerkKey = "res_kenmerk_key";
            break;
        }
    case "RESA":
        {
            nmTable = "res_kenmerkartikel";
            nmParentKey = "res_rsv_artikel_key";
            nmWaarde = "res_kenmerkartikel_waarde";
            nmKenmerkKey = "res_kenmerk_key";
            break;
        }
    default:
        INTERNAL_ERROR;
  }

  if (flexVal == "" || flexVal == null)
  {
    var sql = "DELETE FROM " + nmTable
            + " WHERE " + nmParentKey + " = " + parentKey
            + "   AND " + nmKenmerkKey + " = " + kenmerkKey;
  }
  else
  {
    var sql = "SELECT 1 FROM " + nmTable
            + " WHERE " + nmParentKey + " = " + parentKey
            +   " AND " + nmKenmerkKey + " = " + kenmerkKey;
    var oRs = Oracle.Execute(sql);
    if (oRs.Eof)
    {
        sql = "INSERT INTO " + nmTable
            +      "(" + nmParentKey + ","
            +          nmKenmerkKey + "," + nmWaarde + (moduleName? "," + moduleName : '') + ")"
            + " VALUES (" + parentKey + ", " + kenmerkKey + ", "+safe.quoted_sql(flexVal)
            +                    (moduleName? "," + safe.quoted_sql(kenmerk_module) : "") + ")";
    }
    else
    {
        sql = "UPDATE " + nmTable
            + "   SET " + nmWaarde + " = " + safe.quoted_sql(flexVal)
            + " WHERE " + nmParentKey + " = " + parentKey
            + "   AND " + nmKenmerkKey + " = " + kenmerkKey;
    }
    oRs.Close();
  }
  Oracle.Execute(sql);
}
%><% ASPPAGE_END(); %>
