<%@language = "javascript" %>
<% /*
    $Revision$
    $Id$

    File:               PrintFG.asp
    Description:        Genereer een FG-rapport op basis van een stylesheet
    Parameters:
        mode            required: MODE_IN or MODE_OUT
        allFloor        required: 0 of 1
        vKey            required als allFloor = 0: ALG_VERDIEPING_KEY
        gKey            required als allFloor = 1: ALG_GEBOUW_KEY
        Thema           optional: CAD_THEMA_KEY
        Label           optional: CAD_LABEL_KEY
        Discs           optional: comma-separated INS_DISCIPLINE_KEY
        highlight       optional: comma-separated ALG_RUIMTE_KEY

        pngURL          voorgevormde SLNKDWF plaatje URL
    Context:
    Note:
*/
%>

<!-- #include file='../Shared/common.inc' -->
<!-- #include file='../CAD/FGII.inc' -->
<!-- #include file="../Shared/xml_converter.inc" -->

<%
var inoutMode = getQParam("mode");
var pAllFloor = getQParam("AllFloor", 0);
if (pAllFloor == 0)
  pvKey = getQParamInt("vKey");
else
  pgKey = getQParamInt("gKey");

var highlight_arr = getQParamIntArray("highlight", []); // Comma-separated room_key_list (terrains). Optional
var pDiscs_arr = getQParamIntArray("discs", []);
var pThema_key = getQParamInt("thema", -1);
var pLabel_key = getQParamInt("label", -1);
var pDWGScale = getQParamFloat("DWGScale", -1);
var pScenario = getQParamInt("scenario_key", -1);

var pXSLMode = getQParam("XSLmode");

var pngURL = getQParam("pngURL");

function setXMLtagValue (tag, value)
{
  if (value == 'null')
    value = '';
  ts.Write('<' + tag + '>');
  ts.Write(safe.html(value) );
  ts.WriteLine('</' + tag + '> ');
}

function setXMLtagValueKenmerk (groepnaam, naam, type, volgnummer, kenmerkkey, value)
{
  if (value == 'null')
  {
    value = '';
  }
  ts.Write('<' + groepnaam + ' naam="' + naam + '" type="' + type + '" volgnummer="' + volgnummer + '" kenmerkkey="' + kenmerkkey + '">');
  ts.Write(safe.html(value));
  ts.WriteLine('</' + groepnaam + '> ');
}

// Tijdelijk voor de XML
var tempXML = "../../Temp/fg_" + Session.SessionID + ".xml";

var fs = Server.CreateObject("Scripting.FileSystemObject");
var ts = fs.CreateTextFile(Server.MapPath(tempXML), true);

//-- Get version Facilitor
sql = "SELECT MAX(fac_module_version)"
    + " FROM fac_module"

oRs = Oracle.Execute(sql);
if (!oRs.eof)
  var r_version = '' + oRs(0);

var dt = new Date();
var r_DateYear = dt.getFullYear();
var r_DateMonth = dt.getMonth() + 1;
var r_DateDay = dt.getDate();
var r_DateTime = r_DateDay + "-" + r_DateMonth + "-" + r_DateYear
               + " "
               + dt.getHours()+":"
               + (dt.getMinutes() < 10? "0" + dt.getMinutes() : dt.getMinutes()) + ":"
               + (dt.getSeconds() < 10? "0" + dt.getSeconds() : dt.getSeconds());
//-- header of xml file
ts.WriteLine('<?xml version="1.0" encoding="UTF-8"?>');

r_xslsheet = GetStylesheet();

// -- root tag
ts.WriteLine('<facilitor>');

ts.WriteLine('<header>');
setXMLtagValue ('dateTime', r_DateTime);
setXMLtagValue ('dateDay', r_DateDay);
setXMLtagValue ('dateMonth', r_DateMonth);
setXMLtagValue ('dateYear', r_DateYear);
setXMLtagValue ('user', custpath);
setXMLtagValue ('custid', custpath);
setXMLtagValue ('version', r_version);
ts.WriteLine('</header>');

var sql = "SELECT d.alg_district_key"
        + ", d.alg_district_omschrijving"
        + ", l.alg_locatie_omschrijving"
        + ", l.alg_locatie_code"
        + ", g.alg_gebouw_code"
        + ", g.alg_gebouw_omschrijving"
        + ", v.alg_verdieping_key"
        + ", v.alg_verdieping_code"
        + ", v.alg_verdieping_omschrijving"
        + " FROM alg_verdieping v"
        + ", alg_gebouw g"
        + ", alg_locatie l"
        + ", alg_district d"
        + ", cad_tekening ct"
        + " WHERE v.alg_gebouw_key = g.alg_gebouw_key"
        + " AND g.alg_locatie_key = l.alg_locatie_key"
        + " AND l.alg_district_key = d.alg_district_key"
        + " AND ct.alg_verdieping_key = v.alg_verdieping_key"
if (pAllFloor == 0)
  sql += " AND v.alg_verdieping_key = " + pvKey;
else
  sql += " AND g.alg_gebouw_key = " + pgKey;

sql += " ORDER BY alg_verdieping_volgnr";

oRFs = Oracle.Execute(sql);
while (!oRFs.eof)
{
  ts.WriteLine('<printfg>');
  setXMLtagValue('pngURL', pngURL);
  setXMLtagValue('vKey', oRFs("alg_verdieping_key")); // Kan ook loc_key zijn bij buiten
  setXMLtagValue('highlight', highlight_arr.join(","));
  setXMLtagValue('Discs', pDiscs_arr.join(","));
  setXMLtagValue('THEMA_KEY', pThema_key);
  setXMLtagValue('LABEL_KEY', pLabel_key);
  setXMLtagValue('inoutMode', inoutMode);
  setXMLtagValue('DWGScale', pDWGScale);
  setXMLtagValue('scenario', pScenario);

  if (pThema_key > 0)
  {
    sql = "SELECT "+ lcl.xsqla('cad_thema_omschrijving', 'cad_thema_key')
        + ", CAD_LEGENDA_KEY "
        + "  FROM CAD_THEMA "
        + " WHERE CAD_THEMA_KEY = " + pThema_key;
    oRs = Oracle.Execute( sql );
    ts.WriteLine('<thema>');
        setXMLtagValue ('CAD_THEMA_OMSCHRIJVING', '' + oRs("CAD_THEMA_OMSCHRIJVING"));
        setXMLtagValue ('CAD_LEGENDA_KEY', '' + oRs("CAD_LEGENDA_KEY"));
    ts.WriteLine('</thema>');
  }

  ts.WriteLine('<plaats>');
  setXMLtagValue ('alg_district_omschrijving', '' + oRFs("alg_district_omschrijving"));
  setXMLtagValue ('alg_locatie_code', '' + oRFs("alg_locatie_code"));
  setXMLtagValue ('alg_locatie_omschrijving', '' + oRFs("alg_locatie_omschrijving"));
  setXMLtagValue ('alg_gebouw_code', '' + oRFs("alg_gebouw_code"));
  setXMLtagValue ('alg_gebouw_omschrijving', '' + oRFs("alg_gebouw_omschrijving"));
  setXMLtagValue ('alg_verdieping_code', '' + oRFs("alg_verdieping_code"));
  setXMLtagValue ('alg_verdieping_omschrijving', '' + oRFs("alg_verdieping_omschrijving"));
  ts.WriteLine('</plaats>');
  ts.WriteLine('</printfg>');
  oRFs.MoveNext();
}

ts.WriteLine('</facilitor>');
ts.Close();

// Beetje omslachtig om eerst in een bestand te schrijven en vervolgens
// alleen maar terug te lezen maar zo was de code nou eenmaal
var inFile = fs.OpenTextFile(Server.MapPath(tempXML));
var xml_content = inFile.ReadAll();
inFile.Close()
STR2Stream(xml_content, r_xslsheet, Response, { mode: pXSLMode });

if ((Session("logging") & 1) == 0)
{
  ts = fs.GetFile(Server.MapPath(tempXML));
  ts.Delete();
}
%>