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

    File:        pda/afspraak_list.asp
    Description: Toont de afspraken lijst van een melding opdracht
                 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" -->
<!-- #include file="../mld//mld.inc" -->

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

  var sql = "SELECT mld_melding_key"
          + " FROM mld_opdr"
          + " WHERE mld_opdr_key = " + mld_opdr_key;
  var oRs = Oracle.Execute(sql);
  var mld_key = oRs("mld_melding_key").Value;
  oRs.Close();

  var this_mld = mld.func_enabled_melding(mld_key); // Wat heb ik zoal aan rechten op deze specifieke melding
  user.auth_required_or_abort(this_mld.canReadAny);

  var autfunction = ["WEB_BEZUSE"]; // Lopende zaken worden alleen getoond.
  var authparams = user.checkAutorisation(autfunction);

  sql = "SELECT a.bez_afspraak_key"
      + "     , a.bez_afspraak_datum"
      + "     , a.bez_afspraak_ruimte"
      + "     , a.bez_afspraak_gastheer"
      + "     , a.bez_afspraak_eind"
      + "     , a.bez_afspraak_opmerking"
      + (S("vis_afspraak_host_uses_keys") == 1
        ? "   , (SELECT prs_perslid_naam_full"
          + "      FROM prs_v_perslid_fullnames_all"
          + "     WHERE prs_perslid_key = bez_afspraak_host_key)"
        : "   , a.bez_afspraak_gastheer") + " gastheer"
      + (S("vis_afspraak_onrgoed_uses_keys") == 1
        ? "   , (SELECT alg_plaatsaanduiding"
          + "      FROM alg_v_onroerendgoed_gegevens"
          + "     WHERE alg_onroerendgoed_keys = a.alg_onrgoed_keys)"
        : "   , a.bez_afspraak_ruimte") + " ruimte"
      + "     , (SELECT COUNT(bez_bezoekers_key)         "
      + "           FROM bez_bezoekers"
      + "          WHERE bez_afspraak_key = a.bez_afspraak_key) aantal_bez"
      + "     , (SELECT COUNT(bez_bezoekers_key)"
      + "           FROM bez_bezoekers"
      + "          WHERE bez_afspraak_key = a.bez_afspraak_key"
      + "            AND bez_bezoekers_done IS NOT NULL) aantal_done"
      + "     , (SELECT COUNT(bez_bezoekers_key)"
      + "          FROM bez_bezoekers"
      + "         WHERE bez_afspraak_key = a.bez_afspraak_key"
      + "           AND bez_bezoekers_out IS NOT NULL) aantal_out"
      + "  FROM bez_afspraak a"
      + "     , bez_actie t"
      + "     , alg_locatie l"
      + "     , alg_v_allonrgoed_gegevens v "
      + " WHERE 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 mld_opdr_key = " + mld_opdr_key;

  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 + ")";
  }

  sql += " ORDER BY bez_afspraak_datum";

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

  function fncolLink(oRs)
  {
      return "../pda/afspraak.asp?afs_key=" + oRs("bez_afspraak_key").Value;
  };
  function fnBestemming(oRs) {
      return "<div class='listbodykop'>"
           + "" + I("fa-user") + "&nbsp;" +safe.html(oRs("gastheer").Value)
           + (oRs("ruimte").Value ? "<br>" + I("fa-map-marker") + "&nbsp;" + safe.html(oRs("ruimte").Value) : "")
           + "<br>" + I("fa-users") + "&nbsp;" + safe.html(oRs("aantal_bez").Value)
           + "</div>"
           + "<div class='listbodytext'>"//+ safe.html(oRs("gastheer").Value)
           + (oRs("bez_afspraak_opmerking").Value ? safe.html(oRs("bez_afspraak_opmerking").Value) + "<br>" : "")
           + "</div>";
  }
  function fnBezoeker(oRs)
  {
      return L("lcl_mobile_appointment") + " " + oRs("bez_afspraak_key").Value;
  };
  function fnHeader(oRs)
  {
      return toDateTimeString(new Date(oRs("bez_afspraak_datum").Value), null, null, true) + " - " + toTimeString(new Date(oRs("bez_afspraak_datum").Value), null, null, true);
  };
  function fnStatus(oRs)
  {
      var bez = "";
      var bez = I("fa-users")  + " " + L("lcl_vis_inside_st") + ": " + oRs("aantal_done").Value
              + ", " + L("lcl_vis_departed") + ": " + oRs("aantal_out").Value;
      return bez;
  };
%>
<html>
<head><%
    FCLTMHeader.Generate({});
%></head>
<body>
<%
    // deze lijkt deprecated, hoe dan wel? CurrentPosition is slechts hypothetisch van belang
    var xfunc = user.func_enabled("BEZ", null, CurrentPosition, user_key);

    PAGE_START();
    HEADER({title: L("lcl_mobile_bezoek") + " " + CurrentPosition,
           addaction: (xfunc.canRead("WEB_BEZUSE") ? "../pda/afspraak.asp?afs_key=-1&mld_opdr_key=" + mld_opdr_key : null),
           back: false,
           home: !qrc});
    CONTENT_START();

    var cnt = rst.processResultset();

    CONTENT_END();
    FOOTER();
    PAGE_END();
PDA_PAGE_END(); %>
	</body>
</html>
<% ASPPAGE_END(); %>
