<%@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));
%>
