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

    File:               SuggestGebouwTerrein.asp
    Description:        Suggereer gebouwen en terreinen
    Parameters:         k             De eerste paar letters
                        filtcode beperk de lijst met getoonde gebouwen en terreinen TO BE DEFINED
                        lockey      : optioneel:
                        autlevel    : optioneel: schrijfrechten op dit niveau nodig
    Globals:
    Context:
    Note:
*/ %>

<%
JSON_Result = true;
%>

<!-- #include file="../../Shared/common.inc" -->
<!-- #include file="./suggest.inc" -->
<!-- #include file="./plaatsFilter.inc" -->
<!-- #include file="../../BEZ/bez.inc" -->

<%
var chars = getQParam("k", "");
var autlevel = getQParamInt("autlevel", -1);
var bAll = getQParamInt("SuggestAll", 0) == 1;
var regkey = getQParamInt("regkey", -1);
var diskey = getQParamInt("diskey", -1);
var lockey = getQParamInt("lockey", -1);
var filtcode = getQParam("filtcode", "");
var terrein = getQParamInt("terrein", 0) == 1;
var act_key = getQParamInt("act_key", -1);

var params = {};
if (filtcode == "PRK")
{
  var date_from = getQParamDate("date_from", new Date());
  var date_to = getQParamDate("date_to", new Date());

  // Verplichte parameters
  var params = { date_from : date_from,
                 date_to : date_to,
                 locatiekey : lockey
               };
}
params.act_key = act_key;

chars = chars.replace(/\*/g,"%");

var filtClauseGebouw = getFiltClauseGebouw(filtcode, params); // Alleen voor gebouw gedeelte
var filtClause = "";

if (lockey > 0)
{ // Locatie (parent) gegeven
  filtClause += " AND l.alg_locatie_key = " + lockey;
}
else if (diskey > 0)
{ // District gegeven
  filtClause += " AND l.alg_locatie_key IN"
                + " (SELECT alg_locatie_key"
                + " FROM alg_v_aanweziglocatie"
                + " WHERE alg_district_key = " + diskey + ")";
}
else if (regkey > 0)
{ // Regio gegeven
  filtClause += " AND l.alg_locatie_key IN"
                + " (SELECT ll.alg_locatie_key"
                + " FROM alg_v_aanweziglocatie ll"
                + ", alg_v_aanwezigdistrict d"
                + " WHERE ll.alg_district_key = d.alg_district_key"
                + " AND d.alg_regio_key = " + regkey + ")";
}

if (autlevel > -1)
{
  filtClause +=" AND l.alg_locatie_key IN"
             + " (SELECT alg_locatie_key FROM fac_v_my_locations"
             + " WHERE prs_perslid_key = " + user_key
             + " AND niveau = " + autlevel + ")";
}

  sql = "SELECT g.alg_gebouw_key alg_key"
      + "     , " + lcl.xsql('sg.alg_srtgebouw_omschrijving', 'sg.alg_srtgebouw_key') + " naam"
      + "     , g.alg_gebouw_code || ' ' || g.alg_gebouw_naam" + filtClauseGebouw.code + " code"
      + "     , 'B' extra"
      + "     , 1 niveau"
      + " FROM alg_v_aanweziggebouw g"
      + "    , alg_locatie l"
      + "    , alg_srtgebouw sg"
      + filtClauseGebouw.from
      + " WHERE (UPPER(g.alg_gebouw_code) LIKE " + safe.quoted_sql_wild(chars + "%")
      + "     OR UPPER(g.alg_gebouw_code || ' ' || g.alg_gebouw_naam) LIKE " + safe.quoted_sql_wild(chars + "%")
      + "     OR UPPER(g.alg_gebouw_naam) LIKE " + safe.quoted_sql_wild(chars + "%") + ")"
      + "   AND l.alg_locatie_key = g.alg_locatie_key"
      + "   AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key(+)"
      + filtClauseGebouw.where
      + filtClauseGebouw.where_geb
      + filtClause;
if (autlevel >= 3)
  sql +=" AND g.alg_gebouw_key IN"
      + " (SELECT alg_gebouw_key FROM fac_v_my_buildings"
      + " WHERE prs_perslid_key = " + user_key
      + " AND niveau = " + autlevel + ")";

  if (terrein)
    sql += " UNION "
         + " SELECT t.alg_terreinsector_key alg_key"
         + "      , " + lcl.xsql('st.alg_srtterreinsec_omschrijving', 'st.alg_srtterreinsector_key') + " naam"
         + "      , t.alg_terreinsector_code || ' ' || t.alg_terreinsector_naam" + filtClauseGebouw.code + " code"
         + "      , 'T' extra"
         + "      , 3 niveau"
         + " FROM alg_v_aanwezigterreinsector t"
         + "    , alg_locatie l"
         + "    , alg_srtterreinsector st"
         + filtClauseGebouw.from
         + " WHERE (UPPER(t.alg_terreinsector_code) LIKE " + safe.quoted_sql_wild(chars + "%")
           + " OR UPPER(t.alg_terreinsector_code || ' ' || t.alg_terreinsector_naam) LIKE " + safe.quoted_sql_wild(chars + "%")
           + " OR UPPER(t.alg_terreinsector_naam) LIKE " + safe.quoted_sql_wild(chars + "%") + ")"
         + "   AND l.alg_locatie_key = t.alg_locatie_key"
         + "   AND t.alg_srtterreinsector_key = st.alg_srtterreinsector_key(+)"
         //+ filtClauseGebouw.where // MGE: MOET hier aan terreinen ook geen algemene where toegevoegd worden? Was niet aanwezig.
         + filtClauseGebouw.where_ter
         + filtClause;

  sql += " ORDER BY 5, 3";

  WriteResult(sql, bAll, "code", "alg_key", "naam", "extra");
%>
