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

    File:               SuggestRuimte.asp      DRAFT *************
    Description:        Suggereer ruimten
    Parameters:         k             De eerste paar letters
                        n             De key van de te tonen ruimte
                        filtcode beperk de lijst met getoonde ruimtes

                        autlevel    : optioneel: schrijfrechten op dit niveau nodig
    Globals:
    Context:
    Note:               Merk op dat de alg_ruimte_nr altijd als extra wordt opgehaald
*/ %>

<%
JSON_Result = true;
%>

<!-- #include file="../../Shared/common.inc" -->
<!-- #include file="./suggest.inc" -->
<!-- #include file="./plaatsFilter.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 gebkey = getQParamInt("gebkey", -1);
var verkey = getQParamInt("verkey", -1);
var filtcode = getQParam("filtcode", "");
var act_key = getQParamInt("act_key", -1);

var params = { act_key: act_key };

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

var filtClause = getFiltClauseRuimte(filtcode, params);

if (verkey > 0)
{ // Verdieping (parent) gegeven
  filtClause.where += " AND r.alg_verdieping_key = " + verkey;
}
else if (gebkey > 0)
{ // Gebouw gegeven
  filtClause.where += " AND r.alg_verdieping_key IN"
                    + " (SELECT v.alg_verdieping_key"
                    + " FROM alg_v_aanwezigverdieping v"
                    + " WHERE v.alg_gebouw_key = " + gebkey +") ";
}
else if (lockey > 0)
{ // Locatie gegeven
  filtClause.where += " AND r.alg_verdieping_key IN"
                    + " (SELECT v.alg_verdieping_key"
                    + " FROM alg_v_aanwezigverdieping v"
                    + ", alg_v_aanweziggebouw g"
                    + " WHERE v.alg_gebouw_key = g.alg_gebouw_key"
                    + " AND g.alg_locatie_key = " + lockey + ")";
}
else if (diskey > 0)
{ // District gegeven
  filtClause.where += " AND r.alg_verdieping_key IN"
                    + " (SELECT v.alg_verdieping_key"
                    + " FROM alg_v_aanwezigverdieping v"
                    + ", alg_v_aanweziggebouw g"
                    + ", alg_v_aanweziglocatie l"
                    + " WHERE v.alg_gebouw_key = g.alg_gebouw_key"
                    + " AND g.alg_locatie_key = l.alg_locatie_key"
                    + " AND l.alg_district_key = " + diskey + ")";
}
else if (regkey > 0)
{ // Regio gegeven
  filtClause.where += " AND r.alg_verdieping_key IN"
                    + " (SELECT v.alg_verdieping_key"
                    + " FROM alg_v_aanwezigverdieping v"
                    + ", alg_v_aanweziggebouw g"
                    + ", alg_v_aanweziglocatie l"
                    + ", alg_v_aanwezigdistrict d"
                    + " 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 d.alg_regio_key = " + regkey + ")";
}

if (autlevel > -1) // Efficiente versie van FAC_V_MY_PR**S_AFDELINGEN_WRITE
{
      filtClause.where +=" AND r.alg_ruimte_key IN "
                        + "(SELECT alg_ruimte_key FROM fac_v_my_rooms "
                        + " WHERE prs_perslid_key = " + user_key
                        + " AND niveau = " + autlevel + ") ";
}

var zoeksqlstring = (verkey > 0
                    ? " r.alg_ruimte_nr"
                    : (gebkey > 0
                      ? " v.alg_verdieping_code || '-' || r.alg_ruimte_nr"
                      : " g.alg_gebouw_code || '-' || v.alg_verdieping_code || '-' || r.alg_ruimte_nr"
                      )
                    );

sql = "SELECT r.alg_ruimte_key"
    + "     , r.alg_ruimte_nr"
    + "     , r.alg_ruimte_omschrijving  naam"
    + "     , " + zoeksqlstring + " code"
    + "  FROM alg_v_aanwezigruimte r"
    + "     , alg_verdieping v"
    + "     , alg_gebouw g"
    + filtClause.from
    + " WHERE r.alg_verdieping_key = v.alg_verdieping_key"
    + "   AND v.alg_gebouw_key = g.alg_gebouw_key"
if (chars != "%")
  sql += " AND (UPPER("+zoeksqlstring+") LIKE " + safe.quoted_sql_wild(chars + "%")
       + "      OR UPPER(r.alg_ruimte_omschrijving) LIKE " + safe.quoted_sql_wild("%"+chars + "%") + ")";
sql += filtClause.where
     + " ORDER BY g.alg_gebouw_code, v.alg_verdieping_volgnr, alg_ruimte_nr";  // volgnummer of verdiepingcode?
 WriteResult(sql, bAll, "code", "alg_ruimte_key", "naam", "alg_ruimte_nr");
%>
