<% /*
     $Revision$
     $Id$

    File:           cad_scan_dwf.inc
    Description:    Scant een DWF en sla de gevonden contouren op
                    in de tabel CAD_IMP_CONTOUR
                    Daar kunnen andere schermen dan rapporten op definieren.
    Context:
    Note:           ContoursXML is niet meer nodig sinds SlnkDWF.DLL 2.60: daar kun je
                    ContourCount en ContourItem gebruiken om te itereren over de contouren
*/ %>
<!--#include file="../SlnkDWF/DWFProperties.inc" -->
<%

// Als concept==1 dan wordt onder de concept folder gezocht en opgeslagen in cad_contour met concept=1
function scanDWF(ctKey, concept)
{
    // is bij aanroepers al wel geweest protectRequest.validateToken();
    if (1) // Inout
    {
        sql = "SELECT cad_tekening_key" // Concept tekeningnaam is altijd dezelfde als actueel
            + "     , cad_tekening_filenaam"
            + "     , cad_tekening_type"
            + "     , cad_tekening_key"
            + "  FROM cad_tekening ct"
            + " WHERE cad_tekening_verwijder IS NULL"
            + "   AND cad_tekening_type = 'P'"
            + "   AND cad_tekening_key = " + ctKey;
    }
    oRs = Oracle.Execute(sql);

    var fso, f1;
    fso = new ActiveXObject("Scripting.FileSystemObject");

    var msg;
    if (!oRs.Eof)
    {
    	teknaam = oRs("cad_tekening_filenaam").value + ".DWF";

    	if (concept)
    	    teknaam = S("fg_dwf_path_concept") + teknaam;
    	else
    	    teknaam = S("fg_dwf_path") + teknaam;
    	if (!fso.FileExists(teknaam))
        {
            msg = L("lcl_fg_drawingnotfound") + ":" + teknaam;
    	    __Log(msg);
        }
        else
        {
            __Log("Inscannen " + teknaam);
            var dwfHandle = GetContoursHandle(teknaam, S("fg_contourlayers"), S("fg_labellayers"), S("fg_contour_minArea"));

            // Oude contouren opruimen
            Oracle.Execute("DELETE FROM CAD_IMP_CONTOUR"
                         + " WHERE cad_tekening_key = " + ctKey
                         + "   AND cad_imp_contour_concept = " + concept)

            var nnLabel = 0;
            var nnOpp = 0;
            for (var i=0; i < dwfHandle.ContourCount; i++)
            {
                var cont = dwfHandle.ContourItem(i);

                oLabel = cont.Label;
                if (oLabel)
                {
                    oOpp =   cont.Area;
                    if (oOpp)
                    {
                        nnLabel++;
                        nnOpp += (oOpp/1e6);
                        sql = "INSERT INTO CAD_IMP_CONTOUR (cad_tekening_key, cad_imp_contour_nr, cad_imp_contour_opp, cad_imp_contour_concept)"
                              +" VALUES(" + ctKey + ", " + safe.quoted_sql(oLabel, 30) + " ," + oOpp/1e6 + " ," + concept + ")";
                        Oracle.Execute(sql);
                    }
                }
            }
            var foundRooms = dwfHandle.ContourCount;
            __Log("Scannen tekening " + teknaam + " met " + foundRooms + " contouren")

            // Nu nog een tweede slag voor de eventuele alternatieve contourlagen
            // Let wel: alleen contour-labels die we met de eerste slag gevonden hebben
            // tellen we mee, we doen geen nieuwe inserts
            if (S("fg_contourlayers_alt1")!="" && S("fg_labellayers_alt1")!="")
            {
                var dwfHandle = GetContoursHandle(teknaam, S("fg_contourlayers_alt1"), S("fg_labellayers_alt1"), S("fg_contour_minArea"));

                for (var i=0; i < dwfHandle.ContourCount; i++)
                {
                    var cont = dwfHandle.ContourItem(i);

                    oLabel = cont.Label;
                    if (oLabel)
                    {
                        oOpp = cont.Area;
                        if (oOpp)
                        {
                            sql =  "UPDATE CAD_IMP_CONTOUR "
                                  +"   SET cad_imp_contour_opp_alt1 = " + oOpp/1e6
                                  +" WHERE cad_tekening_key = " + ctKey
                                  +"   AND cad_imp_contour_concept = " + concept
                                  +"   AND cad_imp_contour_nr = " + safe.quoted_sql(oLabel, 30)
                            Oracle.Execute(sql);
                        }
                    }
                }
            }

            sql = "UPDATE cad_tekening "
                + "   SET cad_tekening_geimporteerd = SYSDATE"
                + " WHERE cad_tekening_key = " + ctKey;
            Oracle.Execute(sql);

            // Zoek dubbeleen
            sql = "SELECT cad_imp_contour_nr"
                + "     , COUNT(*) "
                + "  FROM cad_imp_contour"
                + " WHERE cad_tekening_key = " + ctKey
                + "   AND cad_imp_contour_concept = " + concept
                + " GROUP BY cad_imp_contour_nr HAVING COUNT(*) > 1"
            oRs2 = Oracle.Execute(sql);

            if (oRs2.eof)
            {
                msg = L("lcl_fg_tek_scannen").format(oRs("cad_tekening_filenaam").value, foundRooms, nnLabel, nnOpp.toFixed(1) );
            }
            else
                msg = L("lcl_fg_tek_scandbl"); // Pas op: dubbelen
        }
        // Kan er maar een zijn oRs.MoveNext();
    }

    return msg;
}
%>