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

    File:               bez_edit_bezoekers_save.asp
    Description:        Sla de wijzigingen van formulier bez_edit_bezoekers.asp op
    Parameters:
    Context:            POST formulier vanuit bez_edit_bezoekers.asp
                        welke alleen vanuit het blokje onder een reservering wordt aangeroepen
    Note:               Eventueel worden ook parkeerplaatsen gereserveerd

*/
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="bez_edit_bezoekers_save.inc" -->
<%
protectRequest.validateToken();
var urole = getQParamSafe("urole");
var savepark = getQParam("nopark", 0) == 0; // Met nopark laten we parkeerplaatsen ongemoeid
var mobile = getQParamInt("mobile", 0);

var afspraak_key = getFParamInt("afspr_key", -1);
if (afspraak_key == -1)
  afspraak_key = getQParamInt("afspr_key", -1);
var bez_actie_key = getFParamInt("actie_key", -1);
var isRes = false;
if (afspraak_key == -1)
{
  isRes = true;
  var rsv_ruimte_key = getQParamInt("rsv_ruimte_key"); // dan moet deze er zijn
  sql = "SELECT a.bez_afspraak_key"
      + "  FROM bez_afspraak a"
      + " WHERE a.res_rsv_ruimte_key = " + rsv_ruimte_key;
  oRs = Oracle.Execute(sql);
  if (!oRs.eof)
    afspraak_key = oRs("bez_afspraak_key").value;
  oRs.Close();
}
var this_bez = bez.func_enabled_afspraak(afspraak_key);
user.auth_required_or_abort(this_bez.canWriteAny);

var beztrack = [];
// Als de afspraak is verwijderd dan zorgt saveBezoekers-cleanAfspraak ervoor dat als de afspraak van een reservering is,
// de tracking naar de reservering wordt omgehangen (enigszins illegaal).
var result = saveBezoekers(afspraak_key, rsv_ruimte_key, { urole: urole, savepark: savepark });
afspraak_key = result.afspr_key;
  // bezmut for mobile when first visitor is added
  if ((mobile && result.beznewkeyArr.length > 0 && result.beznewkeyArr.length == result.bezkeyArr.length))
  {
    shared.trackaction("BEZMUT", afspraak_key);
  }

// Is de afspraak verwijderd
sql = "SELECT bez_afspraak_key"
    + "  FROM bez_afspraak"
    + " WHERE bez_afspraak_key = " + afspraak_key;
oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
  // update phone number (not for mobile)
  if (Request.Form('phone').Count == 1)
  {
    var fields =  [
                    { dbs: "bez_afspraak_telefoonnr",  typ: "varchar",  frm: "phone",           track: L("lcl_phone"),  len: 20 }
                  ];
    var bezUpd = buildTrackingUpdate("bez_afspraak", " bez_afspraak_key = " + afspraak_key, fields);
    var noNoti = !(bezUpd.trackarray && bezUpd.trackarray.length); // initial true when the appointment is unchanged
    Oracle.Execute(bezUpd.sql);
    if (bezUpd && bezUpd.trackarray && (bezUpd.trackarray.length))
    {
      bez.trackafspraakupdate(afspraak_key, L("lcl_bez_is_bezupdtrack").format(afspraak_key) + "\n" + bezUpd.trackarray.join("\n"), noNoti);
    }
  }

  if (S("res_appointment_action"))
    saveBezAction(afspraak_key, bez_actie_key);
  if (result.beztrack && result.beztrack.length > 0)
    bez.trackafspraakupdate(afspraak_key, L("lcl_bez_is_bezupdtrack").format(afspraak_key) + "\n" + result.beztrack.join("\n"), result.noNoti);
}
else
{ // Afspraak is verwijderd
  // Tracking is met het verwijderen van afspraak ook verwijderd of omgehangen naar de bijbehordende reservering. Dit tracken is onzinnig/niet nodig.
  //bez.trackafspraakupdate(afspraak_key, L("lcl_bez_appdel") + "\n" + result.beztrack.join("\n"));
}
oRs.Close();

// Klantspecifieke check functie (hookfunction) voor de invoer
var pResult = new HookResult();
if (!custfunc.bez_postsave(result.bezkeyArr, pResult))
{
  abort_with_warning(pResult.errmsg);
}

var closeParams = { afspraak_key: afspraak_key,
                    bezkeyArr: result.bezkeyArr, // alle
                    beznewkeyArr: result.beznewkeyArr, // de nieuwe
                    bezBadgeArr: result.bezBadgeArr,
                    warning: result.warning,
                    success: true
                  }
if (mobile == 1)
    closeParams.toaster = L("lcl_mobile_data_saved");

Response.Write(JSON.stringify(closeParams));
%>
<% ASPPAGE_END(); %>
