<%@ 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" -->

<%
var afspraak_key = getQParamInt("afspraak_key", -1);
var embedded     = getQParamInt("embedded", 0) == 1;
var urole        = getQParamSafe("urole", "fe");

var rsv_ruimte_key = -1;

function withinTimeRange(_date) {
  var auth = user.checkAutorisation("WEB_BEZBOF", true);
  if (S("bez_change_range") > 0 && auth && auth.ALGwritelevel < 9)
  {
    var dateFrom = new Date(_date);
    dateFrom.setMinutes(dateFrom.getMinutes() - S("bez_change_range"));
    var dateTo = new Date(_date);
    dateTo.setMinutes(dateTo.getMinutes() + S("bez_change_range"));
    return (dateFrom <= new Date() && dateTo > new Date());
  }
  else
  {
    return false;
  }
}

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;
  //   var sql_r = "SELECT rrr.res_rsv_ruimte_externnr"
  //           + "       , rrr.res_rsv_ruimte_van"
  //             + "  FROM res_rsv_ruimte rrr"
  //             + " WHERE rrr.res_rsv_ruimte_key = " + rsv_ruimte_key;
  //   var oRs_r = Oracle.Execute(sql_r);
  //   canChange =  oRs_r("res_rsv_ruimte_externnr").Value == null || withinTimeRange(oRs_r("res_rsv_ruimte_van").Value);
  //   oRs_r.Close();
  }
  // else // Eerste bezoeker bij een reservering niet toestaan voor externe reserveringen
  // {
  //   sql = "SELECT rr.res_ruimte_extern_id"
  //       + "     , rrr.res_rsv_ruimte_externnr"
  //       + "     , rrr.res_rsv_ruimte_van"
  //       + "  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;
  //   var oRs2 = Oracle.Execute(sql);
  //   if (!oRs2.Eof && ((oRs2("res_ruimte_extern_id").Value != null || oRs2("res_rsv_ruimte_externnr").Value != null)) && !withinTimeRange(oRs2("res_rsv_ruimte_van").Value))
  //       canChange = false;
  //   oRs2.Close();
  // }
  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);
canChange &= this_bez.canWriteAny;
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":"")%>"
      }

      function bez_email()
      {
        var url = "../BEZ/bez_email_bezoeker.asp?afspr_key=<%=afspraak_key%>";
        FcltMgr.openModalDetail( url
                               , L("lcl_bez_mail_send")
                               , {callback: "FcltMgr.closeDetail"}
                               );

      }

      $(function() {
        function checkEmptyColumn()
        {
          if ($(this).html() != "&nbsp;")
          {
            present = true;
            return false;
          }
        }
        var present = false;
        $("td.bezoekers_telefoon").each(checkEmptyColumn);
        $("th.bezoekers_telefoon_th, td.bezoekers_telefoon").toggle(present);
        present = false;
        $("td.bezoekers_email").each(checkEmptyColumn);
        $("th.bezoekers_email_th, td.bezoekers_email").toggle(present);
        present = false;
        $("td.bezoekers_kenteken").each(checkEmptyColumn);
        $("th.bezoekers_kenteken_th, td.bezoekers_kenteken").toggle(present);
      });
    </script>
  </head>
<%
  var buttons =  [];
  if (canChange)
    buttons.push({title: (afspraak_key > 0 ? L("lcl_change") : L("lcl_add")), icon: (afspraak_key > 0 ? "fa-fclt-edit" : "fa-plus"), action: "bez_change()", id: "bchange_bez_bezoekers" });
  if (afspraak_key > 0)
  {
    var sql = "SELECT COALESCE(b.bez_afspraak_naam, b.bez_afspraak_bedrijf) naam"
            + "     , coalesce(b.bez_bezoekers_email, w.bez_kenmerkwaarde_waarde) email"
            + "  from bez_bezoekers b"
            + "     , bez_kenmerkwaarde w"
            + "     , bez_kenmerk k"
            + " where b.bez_bezoekers_key = w.bez_bezoekers_key(+)"
            + "   and k.bez_kenmerk_key = w.bez_kenmerk_key"
            + "   and k.bez_kenmerk_default like '%prs_perslid_email%'"
            + "   and b.bez_afspraak_key = " + afspraak_key;
    var oRs = Oracle.Execute(sql);
    if (!oRs.eof)
      buttons.push( {title: L("lcl_bez_mail_send"), icon: "fa-envelope", action: "bez_email()", id: "bemail_bez_bezoekers"});
    oRs.Close();
  }

%>
  <body class="listmode">
<%
    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").Value&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_bezoekers_opmerking"
         + "      , b.bez_bezoekers_telefoon"
         + "      , b.bez_bezoekers_email"
         + "      , b.bez_bezoekers_kenteken"
         + "      , 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"}));
      if (S("vis_remark") != 0)
      {
        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"}));
      }
      rst.addColumn(new Column({caption: L("lcl_bez_telefoon"), content: "bez_bezoekers_telefoon", thClass: "bezoekers_telefoon_th", tdClass: "bezoekers_telefoon"}));
      rst.addColumn(new Column({caption: L("lcl_bez_email"), content: "bez_bezoekers_email", thClass: "bezoekers_email_th", tdClass: "bezoekers_email"}));
      rst.addColumn(new Column({caption: L("lcl_bez_kenteken"), content: "bez_bezoekers_kenteken", thClass: "bezoekers_kenteken_th", tdClass: "bezoekers_kenteken"}));
      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();
%>
  </body>
</html>
<% ASPPAGE_END(); %>
