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

    File:           MLD/mld_group_save.asp
    Description:    Groeperen van meldingen.
                    "Incidenten" met this_stdm.ins_srtdiscipline_mldgroup & 1 mogen gegroepeerd
                    worden onder een "Problem" of "Change" melding met this_stdm.ins_srtdiscipline_mldgroup & 2.
                    Deze groepering is een wat lossere vorm van vervolg en koppelen, een soort van groeps-referentie.
    Parameters:     urole             Userrole voor Autorisatie
                    mld_keys          Array van mld_key die gegroepeerd gaan worden
                    mldgroup_key      De mld_keys worden onder deze melding gegroepeerd

                    Indien gegroepeerd onder een nieuwe melding, dan ook:
                    stdm              Standaardmelding_key
                    disc              Discipline_key
                    subject           Onderwerp
                    descr             Omschrijving
    Context:        Save code van mld_group.asp
    Note:
*/ %>

<%
var JSON_Result = true;
%>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="mld.inc" -->

<%
protectRequest.validateToken();

var urole = getQParamSafe("urole");

// De te-groepren mld_keys
var mld_key_arr = getQParamIntArray("mld_keys");

// Te-groeperen onder deze melding. Er moet altijd een geldige mldgroup_key zijn meegegeven. Of 0 om de groeperingte wissen.
var mldgroup_key = getFParamInt("mldgroup_key");

// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
var autfunction = "";
switch(urole)
{
  case "fo": autfunction = "WEB_MLDFOF";
           break;
  case "bo": autfunction = "WEB_MLDBOF";
           break;
  case "mi": autfunction = "WEB_MLDBAC";
           break;
  case "fe":
  default  : autfunction = "WEB_MLDUSE";
           break;
}
var authparams = user.checkAutorisation(autfunction);

var ingesloten = [];
var this_mld;
var this_stdm;
var mld_info;
if (mldgroup_key > 0)
{
    mld_info = mld.mld_melding_info(mldgroup_key);
    this_stdm = mld.mld_stdmeldinginfo(mld_info.stdm_key);

    // Er moet natuurlijk wel op de "Problem" melding te groeperen zijn
    user.anything_todo_or_abort(this_stdm.srt_disc_mldgroup & 1);
}

// Bepaal de meldingen in de selectie die
// ook echt gegroepeerd kunnen of mogen worden.
for (var i = 0; i < mld_key_arr.length; i++)
{
  // TODO: canGroup ? -> this_mld = mld.func_enabled_melding(mld_key_arr[i]); // Wat heb ik zoal aan rechten op deze specifieke melding
  mld_info = mld.mld_melding_info(mld_key_arr[i]);
  if ((!mld_info.mldgroup_key && mldgroup_key > 0) || (mld_info.mldgroup_key && mldgroup_key >= 0))
  {
    this_stdm = mld.mld_stdmeldinginfo(mld_info.stdm_key);

    if (this_stdm.srt_disc_mldgroup & 2)
      ingesloten.push(mld_key_arr[i]);
  }
}

user.anything_todo_or_abort(ingesloten.length); // We klagen niet over enkele wel en enkele niet

function mld_foreign (pval)
{
    if (!pval)
        return "";
    return mld.referentielabel("M", pval);
}

for (var i = 0; i < ingesloten.length; i++)
{
  var fields = [ { dbs: "mld_melding_mldgroup_key", typ: "key", val: (mldgroup_key?mldgroup_key:null), track: L("lcl_mldgroup_key"), foreign: mld_foreign } ];
  var mldUpd = buildTrackingUpdate("mld_melding", " mld_melding_key = " + ingesloten[i], fields);
  oRs = Oracle.Execute(mldUpd.sql);
  if (mldUpd.trackarray.length)
  {
      mld.trackmeldingupdate(ingesloten[i], L("lcl_mld_is_mldupd") + "\n" + mldUpd.trackarray.join("\n"));
  }
}

var result = {
  success: "true",
  toaster: ingesloten.length + " " + L("lcl_complains") + " " + L("lcl_mld_gegroepeerd")
};

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