// GetCatalogus.js
// Haalt catalogus op mbv http. Kan daarna via GEN_IMPORT ingelezen worden
//
// $Revision$
// $Id$
//
// Kopie van UWVA#14582, gewijzigd nav SKAF#26982
// Vier parameters:
// 1) GET of PUT method van aanroep (GET->XML staat klaar cq. simpel recht toe recht aan XML download, PUT->webserivce die XML genereert adhv meegegeven XML-request).
// 2) Discipline-key (catalogus-ID),
// 3) UDL voor database connectie,
// 4) en optioneel proxy-ip

// l_method = "GET" (get = oorspronkelijk Braspma, met 1 XML die niet via webservice verliep, maar rechtstreeks wordt gedownload
//            = "PUT" (put = standaard in fclt, bij UWVA Mostshop) of
//            = "POST" (post = Braspa, via PUT gaat dit op hun php fout???)
var l_method = WScript.Arguments(0);
var disckey = WScript.Arguments(1); // discipline-key
var str = WScript.Arguments(2);    // udlpath

if (WScript.Arguments.length > 3)
    var l_catalog_url=WScript.Arguments(3); // overruled eventuele catalog-url die bij prs_bedrijf (leverancier staat geregistreerd).
else
    var l_catalog_url="";

if (WScript.Arguments.length > 4)
    var proxyip=WScript.Arguments(4);
else
    var proxyip="";


var debugFiddler = false;

// Haal van URL CatalogURL een catalogus met naam CatalogName en sla op in bestand CatalogFile
function GetCatalogus(p_Method, CatalogURL, CatalogName, CatalogFile)
{   var XMLReq=  "";

    if (p_Method == "PUT" || p_Method == "POST") {
        var XMLReq=  "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"
                    +"<facilitor>"
                    +"  <catalog_request>"
                    +"      <name>"+CatalogName+"</name>"
                    +"  </catalog_request>"
                    +"</facilitor>";
    }

    var objXMLHTTP = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0")

    var SXH_PROXY_SET_PROXY = 2;
    if (debugFiddler)
    {
        var SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS = 13056
        objXMLHTTP.setProxy(SXH_PROXY_SET_PROXY, "127.0.0.1:8888")
        objXMLHTTP.setOption(2) = SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
    }
    else
        if (proxyip!="")
        {
            objXMLHTTP.setProxy(SXH_PROXY_SET_PROXY, proxyip)
        }

    objXMLHTTP.open(p_Method, CatalogURL, false);
    objXMLHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8")
    objXMLHTTP.send(XMLReq);
    if (objXMLHTTP.status==200)
    {   // Geldigheid XML wordt gecontroleerd door GEN_IMPORT
        WScript.Echo("Gelukt, status = " + objXMLHTTP.status);
        oStream = new ActiveXObject("ADODB.Stream");
        oStream.Open();
        oStream.Type = 1; // adTypeBinary
        oStream.Write(objXMLHTTP.responseBody); // responseText geeft encoding problemen!
        oStream.SaveToFile (CatalogFile, 2); // adSaveCreateOverWrite
        oStream.Close();
    }
    else
    {
        WScript.Echo("Mislukt, status = " + objXMLHTTP.status);
        WScript.Echo(objXMLHTTP.statusText);
    }
}

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

var sql = "ALTER SESSION SET nls_territory='AMERICA'";
var oRs = Oracle.Execute(sql)

// prs_bedrijf_xmlcatalogus_loc
sql =  "SELECT   fia.ins_discipline_key, "
     + "         pb.prs_bedrijf_xmlcatalogus_loc, "
     + "         bd.ins_discipline_omschrijving, bd.ins_discipline_key "
     + "    FROM FAC_IMPORT_APP fia, "
     + "         bes_discipline bd, "
     + "         BES_SRTGROEP bsg, "
     + "         BES_SRTDEEL bsd, "
     + "         PRS_BEDRIJF pb "
     + "   WHERE fia.fac_import_app_code = 'CATALOGUS' " // TODO: Wildcard?
     + "     AND fia.ins_discipline_key = bd.ins_discipline_key "
     + "     AND bd.ins_discipline_key = bsg.ins_discipline_key "
     + "     AND bsg.bes_srtgroep_key = bsd.bes_srtgroep_key "
     + "     AND bsd.prs_bedrijf_key = pb.prs_bedrijf_key "
     + "     AND pb.prs_bedrijf_xmlcatalogus_loc IS NOT NULL "
     + "     AND bd.ins_discipline_key = " + disckey
     + "GROUP BY fia.ins_discipline_key, "
     + "         pb.prs_bedrijf_xmlcatalogus_loc, "
     + "         bd.ins_discipline_key, "
     + "         bd.ins_discipline_omschrijving "

//WScript.Echo (sql)

WScript.Echo(new Date());
try
{
    oRs = Oracle.Execute(sql);
    while (!oRs.eof)
    {
        WScript.Echo("Inlezen catalogus '" + oRs("ins_discipline_omschrijving") + "' van " + oRs("prs_bedrijf_xmlcatalogus_loc"))
        var filename = "./catalog" + oRs("ins_discipline_key") + ".xml";
        
        if (l_catalog_url == "")
        	CatalogURL = oRs("prs_bedrijf_xmlcatalogus_loc");
        else
        	CatalogURL = l_catalog_url;
        		
        GetCatalogus(l_method, CatalogURL, oRs("ins_discipline_omschrijving"), filename)
        oRs.MoveNext();
    }
    WScript.Quit(0);
}
catch (e)
{
    WScript.Echo("Serieuze fout in GetCatalogus.js: " + e.description)
    WScript.Quit(1);
}
