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

     Geeft een overzicht van de toekomstsituatie van het scenario.
     Deze is in wezen onafhankelijk van het verleden
     en geeft een beeld van de toekomstige situatie.

     Lijkt sterk op rap_prj1.asp

     IN: highlight, lijst van geselecteerde prj_ruimte_keys

     Als een prj_ruimte_key gehighlight willen we zien:
        - Wie zaten er in de ruimte (en waar zitten ze nu eventueel) ==> Dit doen we niet!
        - Wie komen er nu in de ruimte (en waar zaten ze eventueel)

     Ooit was dit het onderscheid tussen rap_prj1 en rap_prj3?

     Wat kan er gebeurd zijn?
        A) Een complete prj_werkplek is verplaatst naar een andere ruimte (prj_werkplek.prj_ruimte_key is gewijzigd)
            (expliciet only, bijvoorbeeld door een werkplek symbool te verslepen in de tekening of via buffer)
        B) Een prj_perslidwerkplek is verplaatst naar een andere werkplek (prj_perslidwerkplek.prj_werkplek_key is gewijzigd)
            (explciet only? bijvoorbeeld door op een WP-symbool te klikken en vanuit tabblad Werkplekbuffer de persoon
             naar een bestaande werkplek in een andere ruimte te slepen)
        C) een geheel nieuwe werkplek (prj_werkplek record) is aangemaakt
            (impliciet only? of ook door persoon los te koppelen in de buffer?)
        D) een geheel nieuwe werkplekbezetting (prj_perslidwerkplek record) is aangemaakt
            (impliciet only? of ook via zwervenden?)

*/%>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="../CAD/FGII.inc" -->

<%
var highlight = getQParamIntArray("highlight", []); // Comma-separated room_key_list (terrains). Optional
var floorKey = getQParamInt("vKey", -1);

var scenario_key = getQParamInt("scenario_key"); // current scenario.
var soort = getQParam("soort", ""); // als bij correct thema iets aangeklikt 'PRJ_PERSLIDWERKPLEK'
var outputmode = getQParamInt("outputmode", 0);
var showall = getQParamInt("showall", 0);

if (floorKey > 0)
{
  // Oude situatie met daarbij gezocht de nieuwe gegevens
  // Inclusief werkplekken die niet in prj omgeving zitten (lege werkplekken)
  // Je mist dan nog de nieuw aangemaakte werkplekken met z'n bezettingen

  // Eerst alle PRJ gegevens: de (al dan niet nieuwe) bezettingen
  var algprj_sql = "SELECT prj_w.prs_werkplek_key"
                 + ",      prj_w.prj_werkplek_volgnr"
                 + ",      prj_w.prj_werkplek_omschrijving"
                 + ",      prj_pw.prs_perslidwerkplek_key"
                 + ",      prj_pw.prj_perslidwerkplek_key"
                 + ",      prj_r.alg_ruimte_key"
                 + ",      prj_pw.prs_perslid_key"
                 + "  FROM prj_ruimte prj_r"
                 + ",      prj_werkplek prj_w"
                 + ",      prj_perslidwerkplek prj_pw"
                 + " WHERE prj_r.prj_ruimte_key = prj_w.prj_ruimte_key"
                 + "   AND prj_w.prj_werkplek_key = prj_pw.prj_werkplek_key(+)"
                 + "   AND prj_w.prj_werkplek_verwijder IS null"
                 + "   AND prj_pw.prj_perslidwerkplek_verwijder IS NULL"
                 + "   AND prj_r.alg_verdieping_key = " + floorKey
                 + "   AND prj_r.prj_scenario_key = " + scenario_key
                 + ((highlight.length > 0 && highlight.join(",") != "-1")? " AND prj_r.prj_ruimte_key IN (" + highlight.join(",") + ")" : "");

  // NU alle PRS gegevens voor de herkomst van verplaatste personen
  var algprs_sql = "SELECT prs_w.prs_werkplek_key"
                 + ",      prs_w.prs_werkplek_volgnr"
                 + ",      prs_pw.prs_perslidwerkplek_key"
                 + ",      prs_r.alg_ruimte_key alg_ruimte_key"
                 + ",      prs_pw.prs_perslid_key"
                 + ",      prs_perslidwerkplek_bezetting"
                 + "  FROM alg_ruimte prs_r"
                 + ",      prs_werkplek prs_w"
                 + ",      prs_perslidwerkplek prs_pw"
                 + " WHERE prs_r.alg_ruimte_key(+) = prs_w.prs_alg_ruimte_key"
                 + "   AND prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key(+)"
                 + "   AND prs_w.prs_werkplek_virtueel = 0"
                 + "   AND prs_r.alg_verdieping_key = " + floorKey

  // Daarom heen: combineren en wat info opzoeken
  var sql = "SELECT algprj.prj_perslidwerkplek_key"
          + ", a_oud.alg_ruimte_aanduiding ruimte_old"
          + ", a_new.alg_ruimte_aanduiding ruimte_new"
          + ", algprs.prs_werkplek_volgnr wpnr_old"
          + ", algprj.prj_werkplek_volgnr wpnr_new"
          + ", prj_werkplek_omschrijving"
          + ", " + S("prs_pers_string") + " naam_new"
          + ", algprs.alg_ruimte_key rkey_old"
          + ", algprj.alg_ruimte_key rkey_new"
          + ", p.prs_perslid_key perslidkey_new"
          + ", algprs.prs_werkplek_key wpkey_old"
          + ", algprj.prs_werkplek_key wpkey_new"
          + " FROM (" + algprj_sql + ") algprj"
          + "   LEFT OUTER JOIN (" + algprs_sql + ") algprs"
          + "     ON algprj.prs_perslidwerkplek_key = algprs.prs_perslidwerkplek_key"
          + "   LEFT OUTER JOIN alg_v_ruimte_gegevens a_oud ON algprs.alg_ruimte_key = a_oud.alg_ruimte_key"
          + "   LEFT OUTER JOIN alg_v_ruimte_gegevens a_new ON algprj.alg_ruimte_key = a_new.alg_ruimte_key"
          + "   LEFT OUTER JOIN prs_perslid p ON algprj.prs_perslid_key = p.prs_perslid_key"
          + " ORDER BY ruimte_new, wpnr_new, naam_new";

}
else
{
  var sql = "SELECT * FROM DUAL WHERE 1 = 0";
}


%>
<html>
  <head>
<%  FCLTHeader.Generate({ outputmode: outputmode }); %>
    <script type="text/javascript">
      function EditBezetting(bKey)
      {
<%      if (S("prs_werkplek_implicit") == 0)
        { // Bij impliet valt er niets te bewerken
%>
          if (!isNaN(bKey) && bKey > 0)
          {
            var url='../prj/edit_Bezetting.asp?pwp_key=' + bKey;
            FcltMgr.openModalDetail(url, "<%=L("lcl_prj_graphics")%>",
                                    { callback: function (data)
                                                { if (data.refresh)
                                                  parent.myRefresh(); // Er is misschien iets veranderd.
                                                                      // Pas plaatje aan. En indirect onszelf.
                                                }
                                    })
          }
<%      } %>
      }
      function onClickBezetting(row)
      {
        EditBezetting(row.getAttribute("ROWKEY"));
      }

      function onLoad()
      {
<%      if (getQParam("soort", "") == "PRJ_PERSLIDWERKPLEK")
        {
          var key = getQParamInt("obj", -1)
          if (key > 0)
          { %>
            EditBezetting(<%=key%>);
<%        }
        } %>
      }
    </script>
  </head>

  <body class="prjtabpage" onLoad="onLoad()">
<%
    var lastValue = null;
    function showWorkplDesc(oRs)
    {
      if (oRs("ruimte_new").value == null) {  // als nieuwe werkplek null is was het een lege werkplek en kan oude ruimteomschrijving worden weergegeven
        var result = safe.htmlattr(oRs("ruimte_old").value) + "/" + oRs("wpnr_old").value
      }
      else if (oRs("ruimte_new").value + "/" + oRs("wpnr_new").value == lastValue)
             var result = "";
           else
             var result = safe.htmlattr(oRs("ruimte_new").value) + "/" + oRs("wpnr_new").value; //  oRs("werkplek").value;
      lastValue = result;
      return result;
    }

    function NewName(oRs)
    {
      // Als oud en nieuwe persoon hetzelfde is dan niet weergeven
      if (oRs("perslidkey_old").value == oRs("perslidkey_new").value)
        return "";

      return safe.htmlattr(oRs("naam_new").value);
    }

    function IsMovedFrom(oRs)
    {
      // Werkplek is nu bezet door nieuwe persoon en die komt niet van een andere werkplek
      // Er is nog geen nieuwe wpkey bekend. rkey_new is bekend
      if (oRs("perslidkey_new").value != null &&
          oRs("rkey_new").value != null &&  // oRs("wpkey_new").Value != null && => Niewe werkplekkey is onbekend dus null
          oRs("wpkey_old").value == null)
        return L("lcl_prj_no_old");  // Geen oude werkplek

      // We zijn verhuisd als we op een nieuwe werkplek(key) zitten
      // of als onze werkplek naar een andere ruimte(KEY) is verplaatst
      // Daarnaast moet zeker gelden dat de werkplek bezet gaat worden door iemand die van een bepaalde ruimte komt
      if (oRs("perslidkey_new").value != null &&
          oRs("ruimte_old").value != null &&
          (oRs("wpkey_old").value != oRs("wpkey_new").value ||
          oRs("rkey_old").value != oRs("rkey_new").value))
        return safe.htmlattr(oRs("ruimte_old").Value + "/" + oRs("wpnr_old").value);

      return ""; // Niet verplaatst
    }

    var rst = new ResultsetTable({ keyColumn: "prj_perslidwerkplek_key",
                                     sql: sql,
                                     ID: "workTable",
                                     outputmode: outputmode,
                                     title: L("lcl_prj_verhuis_scenarios"),
                                     showAll: showall
                                    });

    rst.addColumn(new Column({caption: L("lcl_workplace"), content: showWorkplDesc}));
    rst.addColumn(new Column({caption: L("lcl_workplace"), content: "prj_werkplek_omschrijving"}));
    rst.addColumn(new Column({caption: L("lcl_prj_occupation_new"), content: "naam_new"}));  // nieuwe_bezetting
    rst.addColumn(new Column({caption: L("lcl_prj_comming_from"), content: IsMovedFrom}));  // verhuist_van

    rst.addAction({ action: "onClickBezetting", caption: L("lcl_prj_details"), isDefault: true });

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