// Roept de inwendige notificationjobsgenerator aan, die controleert of er
// notificaties te doen zijn en deze dan ook realiseert. Deze moet periodiek
// aangeroepen worden. De beheerder kan middels de parameters in fac_notificatie_job
// de periodiciteit etc. van de jobs aanpassen.
//
// $Revision$
// $Id$
//
// In kader van FSN#11218
// Een parameter: UDL voor database connectie

var str = WScript.Arguments(0);

var fso = new ActiveXObject("Scripting.FileSystemObject");
function __Log(s, params)
{
    var params = params || {}; // default logging met timestamp.
    params.severity = params.severity || "I";
    var logPath = "../../../temp/" + CustId;
    var flog = fso.OpenTextFile(logPath + "/genscheduler.log", 8 /* ForAppending */, true /* create */);
    flog.WriteLine(toDateTimeString(new Date) + ";" + params.severity + ";" + s.replace(/\n/g, "<nl>"));
    flog.Close();
}

function isOffline()
{
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    if (fso.FileExists("../offline.html"))
        return true;
    if (fso.FileExists("../../offline.html"))
        return true;
    if (fso.FileExists("../../../temp/offline.html"))
        return true;

    return false;
}

if (isOffline())
{
    WScript.Echo("FACILITOR is offline, scheduler skipped");  // geen __Log omdat CustId nog niet bekend is
    WScript.Quit(1);
}

var udlstr = 'File Name='+str;
var Oracle = new ActiveXObject("ADODB.Connection");
Oracle.Open(udlstr);

try
{
    sql = "SELECT fac_version_cust FROM fac_version";
    oRs = Oracle.Execute(sql);
    var CustId = oRs(0).Value;
    oRs.Close();
    __Log("Starting at " + new Date());
    __Log("CustId: " + CustId);
     var WshNetwork = new ActiveXObject("WScript.Network");
    __Log("User: " + WshNetwork.UserDomain + "\\" + WshNetwork.UserName);

    sql = "BEGIN fac.initsession(NULL); END;";
    oRs = Oracle.Execute(sql)
    sql = "BEGIN fac.fac_nightly; END;";
    oRs = Oracle.Execute(sql)
    var sql = "UPDATE fac_version"
            + "   SET fac_version_scheduler_date = SYSDATE";
    Oracle.Execute(sql);
}
catch(e)
{
    __Log("ERROR: " + e.description, {severity: "E"})
    throw e;
}

function padout(number)
{ return (number < 10) ? "0" + number : number;
}
// Noot: altijd jaar vooraan, goed voor logfiles, niet bedoeld voor presentatie
function toDateString(jsDate)
{
    return padout(jsDate.getFullYear())  + "-" + padout(jsDate.getMonth() + 1) + "-" + padout(jsDate.getDate());
}
function toDateTimeString(jsDate)
{
    return toDateString(jsDate) + " "
         + padout(jsDate.getHours()) + ":" + padout(jsDate.getMinutes())   + ":" + padout(jsDate.getSeconds());
}


__Log("Done at " + new Date());
