<%@ 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/json2.js" -->
<!-- #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 = getFParamInt("sel_controlemode", -1) > 0; // Bij mobile is een geldige methode meegegeven.

var tobefinished = 0;
var ingeslotendsc = [];
// Bepaal de objecten/delen in de selectie die ook echt gestart kunnen of mogen worden.
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;

  // Deze actie rond alleen afgemelde inspecties af.
  var sql = "SELECT idsc.ins_deelsrtcontrole_status"
          + "  FROM ins_deelsrtcontrole idsc"
          + " WHERE idsc.ins_deelsrtcontrole_key = " + dlsrtcont_key_arr[i]
          + "   AND idsc.ins_deelsrtcontrole_status = 5";
  var oRs = Oracle.Execute(sql);
  if (oRs.eof)
  {
    oRs.Close();
    continue;
  }
  oRs.Close();

  var this_ins = ins.func_enabled_deel(ins_key_arr[i]);
  // Als ik mag inspecteren mag ik ook starten.
  if (this_ins.canInspect)
  { // Alle Arrays zijn even groot.
    ingeslotendsc.push(dlsrtcont_key_arr[i]);
    tobefinished++;
  }
}
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 methode, opmerking en flexkenmerken opslaan want die kunnen aangepast zijn.
  if (mobile)
  {
    var fields =  [ { dbs: "ins_controlemode_key",          typ: "key",      frm: "sel_controlemode",        track: L("lcl_ins_controle_mode"), foreign: "ins_controlemode" },
                    { dbs: "prs_perslid_key",               typ: "key",      val: user_key },
                    { dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar",  frm: "opmerk",                  track: L("lcl_remark"),       len: 2000 }
                  ];

    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;
    }

    // HIER WORDEN DE SAVEFLEXKENMERKEN GEREGELD
    currentKenmerkenSQL = " SELECT kd.ins_kenmerk_key"
                        + "      , kd.ins_kmdeelsrtcontr_waarde"
                        + "   FROM ins_kmdeelsrtcontr kd"
                        + "      , ins_kenmerk k"
                        + "  WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key"
                        + "    AND kd.ins_kmdeelsrtcontr_verwijder IS NULL"
                        + "    AND kd.ins_deelsrtcontrole_key = " + ingeslotendsc[i];

    var flextrack = saveFlexKenmerken( ingeslotendsc[i]
                                     , { kenmerkTable: "ins_kmdeelsrtcontr"
                                       , kenmerkParentKey : "ins_deelsrtcontrole_key"
                                       , kenmerkWaarde: "ins_kmdeelsrtcontr_waarde"
                                       , kenmerkKey: "ins_kenmerk_key"
                                       , currentKenmerkenSQL: currentKenmerkenSQL
                                       , requestQF: Request.Form
                                       , isNew: false
                                       , flexPath: "INS/I"
                                       , module: "INS"
                                       }
                                     );

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

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

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