<%@ LANGUAGE = JavaScript %>
<% /*
     $Revision$
     $Id$

     File:           bez_show_bezoekers.asp
     Description:    Toon zelfstandig een bezoekersdeel
     Parameters:     afspraak_key (bestaande bez_afspraak) of
                     rsv_ruimte_key (bestaande res_rsv_ruimte)
                     bez_naam     optioneel: wordt (als geen afspraak_key) toegevoegd
                     bez_bedrijf
     Context:        een frame binnen reservering-edit-of-show
     Note:           Wordt vooralsnog alleen gebruikt vanuit res en had derhalve
                     ook res/res_show_bezoekers.asp kunnen zijn
*/

%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="bez_edit_bezoekers_save.inc" -->
<!-- #include file="./bez.inc" -->

<%
FCLTHeader.Requires({js: []});

var afspraak_key = getQParamInt("afspraak_key", -1);
var embedded     = getQParamInt("embedded", 0) == 1;

var rsv_ruimte_key = -1;

var canChange = true;
if (afspraak_key == -1)
{
  var rsv_ruimte_key = getQParamInt("rsv_ruimte_key"); // dan moet deze er zijn
  sql = "SELECT a.bez_afspraak_key"
      + "  FROM bez_afspraak a"
      + " WHERE a.res_rsv_ruimte_key = " + rsv_ruimte_key;
  oRs = Oracle.Execute(sql);
  if (!oRs.eof)
  {
    afspraak_key = oRs("bez_afspraak_key").Value;
  }
  else // Eerste bezoeker bij een reservering niet toestaan voor externe reserveringen
  {
    sql = "SELECT res_ruimte_extern_id"
        + "  FROM res_rsv_ruimte rrr"
        + "     , res_ruimte_opstelling ro"
        + "     , res_ruimte rr"
        + " WHERE ro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key"
        + "   AND rr.res_ruimte_key = ro.res_ruimte_key"
        + "   AND rrr.res_rsv_ruimte_key = " + rsv_ruimte_key;
    oRs = Oracle.Execute(sql);
    if (!oRs.Eof && oRs("res_ruimte_extern_id").Value != null)
        canChange = false;
    oRs.Close();
  }
}
if (afspraak_key > 0)
    var urole = getQParamSafe("urole", "fe");
else
    var urole = getQParamSafe("urole");

if (afspraak_key == -1) // deeplink met bezoeker ondersteunen
{                       // vanuit Pacta of vanuit Outlook
  var bez_naam_arr = getQParamArray("bez_naam", "", true); // De individuele QParams niet splitsen bij komma
  var bez_bedrijf = getQParam("bez_bedrijf", ""); // wel allemaal hetzelfde bedrijf
  var outlook_organizer = (getQParamInt("host_key", -1) == -1);
  var start_index = ((getQParamInt("host_key", -1) == -1) ? 1 : 0); // host_key wordt alleen vanuit Pacta meegegeven.
  // Als er geen host_key is, dan komen de namen in bez_naam_arr uit Outlook. De eerste in de lijst is de organisator.
  // Die mag niet in de bezoekerslijst staan, want dat ben jezelf.
  for (var i=start_index; i < bez_naam_arr.length; i++)
  {
    var result =
      saveOneBezoeker(afspraak_key, rsv_ruimte_key, -1 /* volg */,
                        { urole: urole, naam: bez_naam_arr[i], bedrijf: bez_bedrijf,
                          noValidateToken: true
                        });
    afspraak_key = result.afspr_key;
  }
}

if (afspraak_key == -1)
    cache.whenTrue(true);

// afspraak_key is nu bekend en okay,
// tenzij bij de reservering geen bezoekers zijn aangemeld.
var this_bez = bez.func_enabled_afspraak(afspraak_key);
user.auth_required_or_abort(this_bez.canReadAny);


%>
<html>
  <head>
    <% FCLTHeader.Generate() %>
    <script>
      function bez_change()
      {
        if (FcltMgr.startEdit(window))
            window.location.href = "../bez/bez_edit_bezoekers.asp?urole=<%=urole%>&rsv_ruimte_key=<%=rsv_ruimte_key+(embedded?"&embedded=1":"")%>"
      }
    </script>
  </head>
<%
  var buttons =  [];
  if (canChange)
    buttons.push({title: L("lcl_change"), icon: "wijzigen.png", action:"bez_change()", id:"bchange_bez_bezoekers" });

%>
  <body id="showbody">
    <div id="show">
<%
    var isoproep = false;
    var actie = "";
    if (afspraak_key > 0)
    {
        sql = "SELECT bez_actie_flags"
            + "     , " + lcl.xsqla('bez_actie_omschrijving', 'ba.bez_actie_key')
            + "  FROM bez_afspraak a"
            + "     , bez_actie ba"
            + " WHERE a.bez_afspraak_key = " + afspraak_key
            + "   AND a.bez_actie_key = ba.bez_actie_key(+)";
        var oRs = Oracle.Execute(sql);
        var isoproep = (oRs("bez_actie_flags")&1) == 1
        actie = ( S("res_appointment_action") ? " ("+oRs("bez_actie_omschrijving").Value+")" : "");
        oRs.Close();
    }

    sql = "SELECT b.bez_bezoekers_key"
         + "      , b.bez_afspraak_naam"
         + "      , b.bez_afspraak_bedrijf bez_bedrijf"
         + "      , b.bez_bezoekers_done"
         + "      , b.bez_bezoekers_out"
         + "      , b.bez_bezoekers_oproep"
         + "      , b.bez_bezoekers_flags"
         + "      , b.bez_afspraak_opmerking bez_bezoekers_opmerking"
         + "      , COALESCE(org.alg_gebouw_code, org.alg_terreinsector_code) || ' ' || COALESCE(org.alg_gebouw_naam, org.alg_terreinsector_naam) code"
         + "  FROM bez_bezoekers b"
         + "     , res_rsv_deel rrd"
         + "     , res_deel rd"
         + "     , ins_deel id"
         + "     , alg_v_allonrgoed_gegevens org"
         + " WHERE b.bez_bezoekers_key = rrd.bez_bezoekers_key (+)"
         + "   AND rrd.res_deel_key = rd.res_deel_key(+)"
         + "   AND rd.res_ins_deel_key = id.ins_deel_key(+)"
         + "   AND id.ins_alg_ruimte_key = org.alg_onroerendgoed_keys(+)"
         + "   AND b.bez_afspraak_key = " + afspraak_key
         + " ORDER BY bez_afspraak_naam";

      var titel = (S("bez_sel_internpersoon") == 1? L("lcl_res_frame_visitors") : L("lcl_res_frame_visitors_external"))
                + actie;

      function fnColRemote(oRs)
      {
        var bez_flags = oRs("bez_bezoekers_flags").Value;
        if ((bez_flags & S("bez_set_remote_flags")) == S("bez_set_remote_flags"))
            return L("lcl_bez_isremote");
        return L("lcl_bez_notremote");
      }
      var rst = new ResultsetTable({keyColumn: "bez_bezoekers_key",
                    sql: sql,
                    noPrint: true,
                    title: titel,
                    buttons: buttons,
                    summaryShow: function() {},
                    flexModule: "BEZ",
                    flexId: "bez_bezoekers_key",
                    showProperties: true,
                    ID: "beztabletiny"});

      rst.addColumn(new Column({caption: L("lcl_vis_name"), content: "bez_afspraak_naam"}));
      rst.addColumn(new Column({caption: L("lcl_vis_company"), content: "bez_bedrijf"}));
      rst.addColumn(new Column({caption: L("lcl_remark"), content: "bez_bezoekers_opmerking"}));
      if (S("vis_parking_key") != -1 && this_bez.canWritePrk)
      {
          rst.addColumn(new Column({caption: L("lcl_parking_caption"), content: "code"}));
      }
      if (S("bez_set_remote_flags") > 0)
          rst.addColumn(new Column({caption: L("lcl_bez_remote"), content: fnColRemote, align: "center"}));

      rst.addColumn(new Column({caption: L("lcl_bez_done_date"), content: "bez_bezoekers_done", datatype: "time"}));
      if (isoproep)
        rst.addColumn(new Column({caption: L("lcl_res_bez_called"), content: "bez_bezoekers_oproep", datatype: "time"}));
      rst.addColumn(new Column({caption: L("lcl_bez_out_date"), content: "bez_bezoekers_out", datatype: "time"}));

      var cnt = rst.processResultset();
%>
    </div>
  </body>
</html>
