Files
Facilitor/APPL/BEZ/bez_check_in.asp
Erik Groener f04130d615 UWVA#35128 notificatie naar alle gastheren van poolreservering
svn path=/Website/trunk/; revision=28188
2016-02-16 13:03:14 +00:00

156 lines
5.5 KiB
Plaintext

<%@ language="javascript" %>
<% /*
$Revision$
$Id$
File: bez_check_in.asp
Note: De multi-variant wordt alleen gebruikt als S("vis_allow_check_all") == 1
*/ %>
<%
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="./bez.inc" -->
<!-- #include file="../Shared/json2.js" -->
<%
protectRequest.validateToken();
var bez_key_arr = getFParamIntArray("bez_key");
var undo_check_in = S("vis_allow_uncheck") && (getFParamInt("undo_check_in", 0) == 1);
var message = "";
var checkInDone = [];
var badges = [];
var autoprint = [];
var tobeapproved = 0;
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");
var oRs = Oracle.Execute(sql);
while (!oRs.eof)
{
var afspr_key = oRs("bez_afspraak_key").value;
var 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++)
{
if (undo_check_in)
var bezoekers_done = " TO_DATE(NULL)";
else
var bezoekers_done = " SYSDATE";
// Voorkom wijzigingen aan toekomstige afspraken (UWVA#15416)
sql = "SELECT bez_afspraak_datum"
+ " , b.bez_afspraak_key"
+ " , b.bez_afspraak_naam"
+ " , bez_bezoekers_pasnr"
+ " , bez_actie_flags"
+ " , a.alg_locatie_key"
+ " , a.alg_onrgoed_keys"
+ " FROM bez_afspraak a, bez_actie ba, bez_bezoekers b"
+ " WHERE a.bez_afspraak_key = b.bez_afspraak_key"
+ " AND a.bez_actie_key = ba.bez_actie_key(+)"
+ " AND TRUNC(SYSDATE) >= TRUNC(bez_afspraak_datum) - " + S("vis_future_checkin")
+ (undo_check_in? " AND bez_bezoekers_out IS NULL" : "")
+ " AND b.bez_bezoekers_key = " + bez_key_arr[i];
oRs_A = Oracle.Execute(sql);
if (!oRs_A.eof)
{ // afspraak is vandaag of eerder, dan mag het
var afspr_key = oRs_A("bez_afspraak_key").value;
var bezoeker = oRs_A("bez_afspraak_naam").value;
var flags = oRs_A("bez_actie_flags").value||0;
autoprint[i] = !undo_check_in
&& (S("vis_badgeprint_enable")&1==1) // autoprint
&& ((flags&2)==2 || (S("vis_badgeprint_enable")&4)==0) // dit is autobadge of niet 'alleen-voor-autobadge'
if (!undo_check_in &&
S("vis_bo_uses_badgenrs") == 1 &&
(flags & 2) && // auto-badge
oRs_A("bez_bezoekers_pasnr").Value == null)
{
var loc_key = oRs_A("alg_locatie_key").Value;
var onr_key = oRs_A("alg_onrgoed_keys").Value||-1;
var seq_name = "ALG_LOCATIE_KEY_" + loc_key + "_BADGE"; // Badge nummering per locatie is de default.
if ((S("vis_badgeprint_enable")&8) == 1) //badgenummering per gebouw
{
if (onr_key > 0)
{
sql = "SELECT alg_gebouw_key"
+ " FROM alg_v_onroerendgoed"
+ " WHERE alg_onroerendgoed_keys = " + onr_key;
var oRs_G = Oracle.Execute(sql);
if (!oRs_G.eof)
seq_name = "ALG_GEBOUW_" + oRs_G("alg_gebouw_key").Value + "_BADGE";
oRs_G.Close();
}
}
var today = new Date();
var sql = "BEGIN"
+ " fac.sequence_nextval("+safe.quoted_sql(seq_name)+", 1, "+ today.endToSQL() + "); "
+ "END;";
Oracle.Execute(sql);
var sql = "SELECT fac_sequence_lastval"
+ " FROM fac_sequence"
+ " WHERE fac_sequence_name = " + safe.quoted_sql(seq_name);
var oRs_S = Oracle.Execute(sql);
var cnt = oRs_S("fac_sequence_lastval").Value;
oRs_S.Close();
badges[i] = ("000000000" + String(cnt)).slice(-S("vis_autobadgelength"));
var letters = S("vis_autobadgeletters"); // Bijvoorbeeld "ABCDEF"
if (letters.length)
{
// Elke dag volgende letter
var letter = letters.substr(((new Date).getTime() /1000/60/60/24) % (letters.length), 1);
badges[i]= letter + badges[i];
}
}
sql = "UPDATE bez_bezoekers"
+ " SET bez_bezoekers_done = " + bezoekers_done
+ " , bez_bezoekers_pasnr = COALESCE(bez_bezoekers_pasnr, " + safe.quoted_sql(badges[i]) + ")"
+ " WHERE bez_bezoekers_key = " + bez_key_arr[i];
oRs = Oracle.Execute(sql);
// Undo ook afzonderlijk tracken!
// We tracken uiteindelijk bij de bezoeker tegenwoordig
if (undo_check_in)
shared.trackaction("BEZUNI", bez_key_arr[i], L("lcl_bez_is_in_1") + bezoeker + L("lcl_bez_is_in_3") ); // undo checkin
else
shared.trackaction("BEZDON", bez_key_arr[i], L("lcl_bez_is_in_1") + bezoeker + L("lcl_bez_is_in_2") ); // checkin
checkInDone[i] = true;
tobeapproved++;
// Customer hook
pResult = new HookResult();
custfunc.bez_checkdone(bez_key_arr[i], pResult);
if (pResult.errmsg != null)
{
message = pResult.errmsg;
}
}
else
{ // toekomstige afspraak of is al weg
checkInDone[i] = false;
}
oRs_A.Close();
}
if (tobeapproved == 0) // enkele wel en enkele niet klagen we niet over
message = L("lcl_bez_no_checkin");
var result = {bez_key_arr: bez_key_arr,
undo_check_in: undo_check_in,
checkInDone: checkInDone,
badges: badges,
autoprint: autoprint,
message: message};
Response.Write(JSON.stringify(result));
%>