Files
Facilitor/APPL/FAC/NotifyMessage.asp
2014-01-22 12:39:11 +00:00

67 lines
2.6 KiB
Plaintext

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
NotifyMessage.asp
Kijk of de notificatie queue fac_notificatie een ongelezen bericht voor ons met soort = '8' bevat
Daarvan geven we een popupje en daarna markeren deze berichten als gelezen
We worden elke S("NotifyMessageInterval") seconde (default 90) gecontroleerd
NOOT: Per interval wordt 1 popup gegeven met alle berichten sinds de vorige keer, met een tijdstip.
LET OP: Dit bestand wordt bij UWVA op drukke momenten consequent 10 keer per seconde/
34000 keer per uur opgeroepen. Performance is essentieel!
In het bijzonder bijvoorbeeld een aanroep van user.__require_prs_perslid voorkomen
*/
LCL_Disable = 1; // Performance
var JSON_Result = true;
var EXPIRED_PASSWORD_OK = true; // performance
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->
<%
//protectRequest.validateToken(); // De __RequestVerificationToken wordt maar 1 keer gezet, dus is de volgende keer verlopen.
// *Wij* bepalen wanneer de volgende controle komt.
// Je zou als er daadwerkelijk een message is de volgende controle
// wat sneller (of juist langzamer) kunnen doen. Hypothetisch...
var result = { nextCheck: S("NotifyMessageInterval") * 1000 };
if (user_key > 0)
{
var sql = "SELECT fac_notificatie_key, fac_notificatie_oms, fac_notificatie_datum"
+ " FROM fac_notificatie"
+ " WHERE prs_perslid_key_receiver = " + user_key
+ " AND BITAND (fac_notificatie_status, 8) = 8" // Onverwerkte popup
+ " ORDER BY fac_notificatie_datum";
var oRs = Oracle.Execute(sql);
var resetnotis = [];
var resultmsg = [];
while (!oRs.eof)
{
var dt = new Date(oRs("fac_notificatie_datum").Value);
if (dt > (new Date).midnight())
dtformat = toTimeString(dt); // vandaag laten we de datum achterwege
else
dtformat = toDateTimeString(dt);
resultmsg.push (dtformat + ": " + oRs("fac_notificatie_oms").Value);
resetnotis.push (oRs("fac_notificatie_key").Value);
oRs.moveNext();
}
oRs.close();
result.msg = resultmsg.join("\n");
// Reset popup bits for these notifications
if (resetnotis.length > 0)
{
var sql = "UPDATE fac_notificatie"
+ " SET fac_notificatie_status = BITAND (fac_notificatie_status, 255-8)" // Verwerkte popup
+ " WHERE fac_notificatie_key IN (" + resetnotis.join(",") + ")";
Oracle.Execute(sql);
}
}
Response.Write(JSON.stringify(result));
%>