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

    File:        pda/bez_list.asp
    Description: Toont de actuele en aanstaande bezoekers van de plaats waar ik ben
                 Bedoeld voor rondlopende receptiemw of BHV-ers. BEZBOF vereist
    Parameters:
    Context:     Vanuit mobile device short url
    Note:
*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->

<%
    var qrc = getQParamInt("qrc", 0) != 0;

    var locatie_key = getQParamInt("locatie_key", user.alg_locatie_key({withcurrent:true})); // Locatie
    var gebouw_key = getQParamInt("gebouw_key", user.alg_gebouw_key({withcurrent:true})); // Gebouw, kan -1 zijn, dan niet gebruiken
    var verdieping_key = getQParamInt("verdieping_key", user.alg_verdieping_key({withcurrent:true}));

    authparams = user.checkAutorisation("WEB_BEZBOF");

    function fncolLink(oRs)
    {
        return "../pda/afspraak.asp?afs_key=" + oRs("bez_afspraak_key").Value;
    };
    function fnBestemming(oRs) {
        return "<div class='listbodykop'>" + (oRs("bez_afspraak_ruimte").value ? safe.html(oRs("bez_afspraak_ruimte").value) : "") + "</div>" +"<div class='listbodytext'>"+ safe.html(oRs("bez_afspraak_gastheer").value)+ "</div>";
    }
    function fnBezoeker(oRs)
    {
        return safe.html(oRs("bez_afspraak_naam").value) + (oRs("bez_afspraak_bedrijf").value ? " ("+ safe.html(oRs("bez_afspraak_bedrijf").value)+ ")" : "");
    };
    function fnHeader(oRs)
    {
        return toTimeString(new Date(oRs("bez_afspraak_datum").value));
    };
    function fnStatus(oRs)
    {
        var res = "";
        // We weten dat vertrokken bezoekers niet voorkomen hier
        if (oRs("bez_bezoekers_done").value == null) {
            res = L("lcl_vis_expected_st");
        }
        if (oRs("bez_bezoekers_done").value != null) {
            res = L("lcl_vis_inside_st");
        }
        return res + (oRs("bez_bezoekers_pasnr").value ? " #"+safe.html(oRs("bez_bezoekers_pasnr").value) : "");
    };

    sql = "SELECT a.bez_afspraak_key"
        + ", a.bez_afspraak_datum"
        + ", b.bez_afspraak_naam"
        + ", b.bez_afspraak_bedrijf"
        + ", a.bez_afspraak_gastheer"
        + ", a.bez_afspraak_ruimte"
        + ", a.bez_afspraak_eind"
        + ", b.bez_bezoekers_done"
        + ", b.bez_bezoekers_out "
        + ", b.bez_bezoekers_key"
        + ", b.bez_bezoekers_pasnr"
        + " FROM bez_afspraak a"
        + ", bez_bezoekers b"
        + ", bez_actie t"
        + ", alg_locatie l"
        + ", alg_v_allonrgoed_gegevens v "
        + " WHERE a.bez_afspraak_key = b.bez_afspraak_key"
        + " AND t.bez_actie_key(+) = a.bez_actie_key"
        + " AND a.alg_onrgoed_keys = v.alg_onroerendgoed_keys(+)"
        + " AND a.alg_locatie_key = l.alg_locatie_key"
        + " AND bez_bezoekers_out IS NULL"  // weg = niet meer interessant
        + " AND a.bez_afspraak_datum BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE)+1";

    if (authparams.ALGreadlevel > -1) {  // Er geldt een autorisatiebeperking
       sql += " AND EXISTS ("
           + " SELECT 'x'"
           + " FROM fac_v_my_locations lr "
           + " WHERE lr.prs_perslid_key = " + user_key
           + " AND a.alg_locatie_key = lr.alg_locatie_key"
           + " AND lr.niveau = " + authparams.ALGreadlevel + ")";
    }
    if (S("vis_afspraak_onrgoed_uses_keys") == 1) {
       // Als we keys gebruiken (meestal) moeten/kunnen we gebouw ook checken
       // wat alleen nog nodig is als de scope op gebouw ligt (locatie deden we al
       if (authparams.ALGreadlevel > 3)  // denk ik, checken
         sql += " AND EXISTS ("
             + " SELECT 'x'"
             + " FROM fac_v_my_buildings gr "
             + " WHERE gr.prs_perslid_key = " + user_key
             + " AND v.alg_gebouw_key = gr.alg_gebouw_key"
             + " AND gr.niveau = " + authparams.ALGreadlevel + ")";
    }

    if (gebouw_key > -1 && S("vis_afspraak_onrgoed_uses_keys") == 1) {
      sql += " AND (l.alg_locatie_key IS NULL OR v.alg_gebouw_key = " + gebouw_key +")";
    }
    if (locatie_key > -1) {
      sql += " AND (l.alg_locatie_key IS NULL OR l.alg_locatie_key = " + locatie_key +")";
    }
    if (verdieping_key > -1 && S("vis_afspraak_onrgoed_uses_keys") == 1) {
      sql += " AND (l.alg_locatie_key IS NULL OR v.alg_verdieping_key = " + verdieping_key +")";
    }
    sql += " ORDER BY bez_afspraak_datum, bez_afspraak_naam";

    var rst = new ResultsetTable({ keyColumn: "bez_bezoekers_key",
                                   sql: sql,
                                   ID: "vistable",
                                   linkColumn: fncolLink,
                                   headerColumn: fnHeader,
                                   detailColumn: fnBezoeker,
                                   asideColumn: fnStatus,
                                   subheaderColumn: fnBestemming,
                                   showAll: true
                                  });

%>
<html>
<head><%
    FCLTMHeader.Generate({});
%></head>
<body>
<%
    PAGE_START();
    HEADER({title: L("lcl_mobile_bezoek") + " " + safe.htmlattr(CurrentPosition), back:!qrc, home: !qrc});
    CONTENT_START();

    var cnt = rst.processResultset();

    CONTENT_END();
    FOOTER();
    PAGE_END();
%>
