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

     File:               ins_inspect_start.asp
     Description:        Afronden van de inspecties.
     Parameters:
         ins_keys        Array van objecten waarvan inspecties moeten worden afgerond.
         srtcont_keys    Array van soort controles die moeten worden afgerond.

     Context:            Inline actie ins_list.inc of actie ins_inspect_list
     Note:               Parameter mobile doet niets met navigatie, sluiten enzo, die submit gewoon.
                         Resultaat van een submit is een json object

*/ %>

<%
var JSON_Result = true;
%>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../shared/save2db.inc" -->
<!-- #include file="../Shared/kenmerk_common.inc" -->
<!-- #include file="ins.inc" -->

<%
protectRequest.validateToken();
var ins_key_arr = getFParamIntArray("ins_keys");
var dlsrtcont_key_arr = getFParamIntArray("dlsrtcont_key_arr", []);
var multi = dlsrtcont_key_arr.length > 1;
var mobile = Request.Form("opmerk").count == 1; // Bij mobile is een geldige opmerking meegegeven.

var tobefinished = 0;
var ingeslotendsc = [];
// Bepaal de objecten/delen in de selectie die ook echt gestart kunnen of mogen worden.
var ctrdisc_key = -1;
if (dlsrtcont_key_arr.length > 0)
{
  for (var i = 0; i < ins_key_arr.length; i++)
  {
    // Als er nog geen inspectierecord aangemaakt is, dan deze overslaan. Dan had je Afmelden/Afronden moeten kiezen.
    if (dlsrtcont_key_arr[i] < 0)
      continue;

    var sql = "SELECT idsc.ins_srtcontrole_key"
            + "     , isc.ctr_discipline_key"
            + "  FROM ins_srtcontrole isc"
            + "     , ins_deelsrtcontrole idsc"
            + " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key"
            + "   AND idsc.ins_deelsrtcontrole_key = " + dlsrtcont_key_arr[i];
    var oRs = Oracle.Execute(sql);
    ctrdisc_key = oRs("ctr_discipline_key").Value

    var this_ins = ins.func_enabled_deel(ins_key_arr[i],
                                         {srtcont_key: oRs("ins_srtcontrole_key").Value,
                                          deelsrtcont_key: dlsrtcont_key_arr[i]
                                         });
    oRs.Close();

    // Deze actie rond alleen afgemelde inspecties af.
    if (this_ins.canInspFastFinish)
    { // Alle Arrays zijn even groot.
      ingeslotendsc.push(dlsrtcont_key_arr[i]);
      tobefinished++;
    }
  }
}
lcl.set_dialect(ctrdisc_key, "CTR_DISCIPLINE_KEY");
user.anything_todo_or_abort(tobefinished > 0); // We klagen niet over enkele wel en enkele niet.

var result = { success: true, multi: multi, finish: true };

for (var i = 0; i < ingeslotendsc.length; i++)
{ // Bij mobile ook opmerking opslaan want die kan aangepast zijn.
  if (mobile)
  { // Opmerking ook opslaan.
    var fields = [{dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 4000}];

    var insUpd = buildTrackingUpdate("ins_deelsrtcontrole", " ins_deelsrtcontrole_key = " + ingeslotendsc[i], fields);
    var err = Oracle.Execute(insUpd.sql, true);

    if (err.friendlyMsg)
    {
      result.warning = err.friendlyMsg;
      result.success = false;
    }

    if (insUpd.trackarray.length)
      ins.trackinspectupdate(ingeslotendsc[i], L("lcl_ins_controle_is_upd") + "\n" + insUpd.trackarray.join("\n"));
  }

  // De status zetten, tracking genereren en notificaties sturen.
  ins.setinspectstatus(ingeslotendsc[i], 6); // History/Verwerkt(6).
}

result.key = ingeslotendsc.join(",");
Response.Write(JSON.stringify(result));
%>
<% ASPPAGE_END(); %> 
