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

     File:        bez_check_out.asp
*/ %>

<%
var JSON_Result = true;
%>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="./bez.inc" -->
<!-- #include file="../Shared/json2.js" -->

<%
protectRequest.validateToken();
/***** Get webform parameters *****/
var bez_key_arr = getFParamIntArray("bez_key");
var	undo_check_out = S("vis_allow_uncheck") && (getFParamInt("undo_check_out", 0) == 1);
var message = "";
var checkOutDone = new Array();
var aantal_ojb = new Array();
var tobeapproved = 0;
var deletedvis = false;
/***** End get webform parameters *****/

var sql = "SELECT distinct bez_afspraak_key"
        + "  FROM bez_bezoekers"
        + " WHERE bez_bezoekers_key " + (bez_key_arr.length > 0? " IN (" + bez_key_arr.join(",") + ")" : " = -1");
oRs = Oracle.Execute(sql);
while (!oRs.eof)
{
    afspr_key = oRs("bez_afspraak_key").value;
    this_bez = bez.func_enabled_afspraak(afspr_key);
    user.auth_required_or_abort(this_bez.canCheckInOut);
    oRs.MoveNext();
}
oRs.Close();

for (i = 0 ; i < bez_key_arr.length; i++)
{
  aantal_ojb[i] = 0;
  if (undo_check_out)
		var bezoekers_out = " TO_DATE(NULL)";
	else
		var bezoekers_out = " SYSDATE";

  sql = "SELECT bez_bezoekers_key"
      + "     , bez_afspraak_key"
      + "     , bez_afspraak_naam"
      + "     , prs_perslid_key"
      + "     , prs_contactpersoon_key"
      + "  FROM bez_bezoekers"
      + " WHERE bez_bezoekers_key = " + bez_key_arr[i]
      + "   AND bez_bezoekers_done IS NOT NULL";
  oRs = Oracle.Execute(sql);

  if (!oRs.eof)
  {
    var afspr_key = oRs("bez_afspraak_key").value;
    var bezoeker = oRs("bez_afspraak_naam").value;
    var prs_key = oRs("prs_perslid_key").value || -1;
    var cps_key = oRs("prs_contactpersoon_key").value || -1;

    sql = "UPDATE bez_bezoekers"
        + "   SET bez_bezoekers_out = " + bezoekers_out
        + " WHERE bez_bezoekers_key = " + bez_key_arr[i];
    oRs = Oracle.Execute(sql);
    tobeapproved++;
    // Undo ook afzonderlijk tracken! (gebruikt zelfde label als bij undo checkin)
    var trackstr = L("lcl_bez_is_out_1") + bezoeker + (undo_check_out ? L("lcl_bez_is_in_3") : L("lcl_bez_is_out_2") );
    shared.trackaction("BEZOUT", bez_key_arr[i], trackstr);
    checkOutDone[i] = true;

    // Customer hook
    pResult = new HookResult();
    custfunc.bez_checkout(bez_key_arr[i], pResult);
    if (pResult.errmsg != null)
    {
      message = pResult.errmsg;
    }

    if (prs_key > 0 || cps_key > 0)
    { // objecten om in te nemen
      sql = "SELECT ins_deel_key"
          + " FROM ins_deel i"
          + " WHERE i.ins_alg_ruimte_key = " + prs_key
          + " AND i.ins_alg_ruimte_type = 'P'"
          + " AND i.ins_alg_ruimte_key_org IS NOT NULL"
          + " AND i.ins_alg_ruimte_type_org IS NOT NULL"
          + " UNION"
          + " SELECT ins_deel_key"
          + " FROM ins_deel i"
          + " WHERE i.ins_alg_ruimte_key = " + cps_key
          + " AND i.ins_alg_ruimte_type = 'C'"
          + " AND i.ins_alg_ruimte_key_org IS NOT NULL"
          + " AND i.ins_alg_ruimte_type_org IS NOT NULL";
      sql = "SELECT COUNT(ins_deel_key) aantal FROM (" + sql + ")";
      oRs = Oracle.Execute(sql);
      aantal_ojb = oRs("aantal").value;
    }
  }
  else
  {
    checkOutDone[i] = false;
    // Is bezoeker verwijderd of nog niet binnen gemeld?
    sql = "SELECT bez_bezoekers_key"
        + "  FROM bez_bezoekers"
        + " WHERE bez_bezoekers_key = " + bez_key_arr[i];
    oRs = Oracle.Execute(sql);
    if (oRs.eof)
      deletedvis = true; // Bezoeker is verwijderd.
  }
}
if (tobeapproved == 0) // enkele wel en enkele niet klagen we niet over
  message = deletedvis? L("lcl_bez_deleted_vis") : L("lcl_vis_no_checkout");

var result = {bez_key_arr: bez_key_arr, undo_check_out: undo_check_out, checkOutDone: checkOutDone, message: message, aantal_ojb: aantal_ojb, prs_key: prs_key, cps_key: cps_key};
Response.Write(JSON.stringify(result));
%>
