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


     File:         prs_edit_perslidwerkplek.asp
     Description:  SUBMIT-form
     Parameters:   Moved from ALG to PRS.

     Context:
     Note:         Afhankelijk van S("prs_werkplek_implicit") kom je via verschillende routes
                   met verschillende parameters.
*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../shared/WPFunctions.inc" -->
<!-- #include file="../shared/save2db.inc" -->

<% FCLTHeader.Requires({ plugins:["jQuery"],
                      js: []
                    }) %>
<%
  var pwp_key = getQParamInt("pwp_key", -1);
  var wp_key = getQParamInt("wp_key", -1);      // toevoegen met S("prs_werkplek_implicit")==0
                                                // of edit met S("prs_werkplek_implicit")==1
  var prs_key = getQParamInt("prs_key", -1);
  var room_key = getQParamInt("room_key", -1);  // toevoegen met S("prs_werkplek_implicit")==1
  var bVirtual = (getFParamInt("has_wp_virt", 0) == 1) && (Request.Form("wp_virt").count == 1); // virtueel

  var authparams = user.checkAutorisation("WEB_PRSBOF");
  var canAdd = (authparams.ALGwritelevel < 9); // TODO: fijner, ik denk 3. Ik moet voor deze locatie, dit district of deze regio schrijfrechten hebben.

  var fields = [ { dbs: "prs_perslidwerkplek_bezetting", typ: "number",  frm: "wp_bez" },
                 { dbs: "prs_perslidwerkplek_volgnr",    typ: "number",  frm: "wp_volg" }
               ];

  if (S("prs_werkplek_implicit") == 1 && wp_key > 0) // er zal maar een enkele pwp zijn (als setting "prs_werkplek_implicit" 1 is). Zoek die op.
  {
    var sql = "SELECT prs_perslidwerkplek_key "
            + "  FROM prs_perslidwerkplek "
            + " WHERE prs_werkplek_key = " + wp_key;
    var oRs = Oracle.Execute(sql);
    var pwp_key = oRs("prs_perslidwerkplek_key").Value;
  }

  if (pwp_key < 0)
  {
    //als er vanuit werkplek wordt gesaved
    if (S("prs_werkplek_implicit") == 1)
    {
        if (room_key == -1) // vanuit persoon
            room_key = getFParamInt("ruimtekey");
        wp_key = WPMake_WP(room_key, { bVirtual: bVirtual}); // Dan maken we er eentje
    }
    if (wp_key > -1)
      {
        fields.push({ dbs: "prs_werkplek_key", typ: "key",  val: wp_key });
        fields.push({ dbs: "prs_perslid_key", typ: "key",  frm: "prs_key" });
      }
    //als er vanuit perslid wordt gesaved
    if (prs_key > -1)
      {
        fields.push({ dbs: "prs_perslid_key", typ: "key",  val: prs_key });
        if (S("prs_werkplek_implicit") == 0)
            fields.push({ dbs: "prs_werkplek_key", typ: "key",  frm: "werkplekkey" });
      }
  }
  else if (canAdd) // pwp_key > 0
  { // Persoon en plaats (ruimte of werkplek) waren ook in te vullen.
    fields.push({ dbs: "prs_perslid_key", typ: "key",  frm: "prs_key" });

    if (S("prs_werkplek_implicit") == 0)
      fields.push({ dbs: "prs_werkplek_key", typ: "key",  frm: "werkplekkey" });
    else
    { // Onafhankelijk van setting prs_werkplek_implicit wordt ruimtekey en werkplekkey meegegeven.
      var room_key_new = getFParamInt("ruimtekey");
      var werkplekkey = getFParamInt("werkplekkey");

      var sql = "SELECT prs_alg_ruimte_key"
              + "  FROM prs_werkplek"
              + " WHERE prs_werkplek_key = " + werkplekkey;
      var oRs = Oracle.Execute(sql);
      var room_key_old = oRs("prs_alg_ruimte_key").Value;
      oRs.Close();
      // Eventueel werkplek verplaatsen gebeurt na de prs_perslidwerkplek update.
    }
  }

  var warning = "";
  if (pwp_key > 0)
  {
    sql = buildUpdate("prs_perslidwerkplek", fields)
        + "     prs_perslidwerkplek_key = " + pwp_key;

    var err = Oracle.Execute(sql, true);
    if (err.friendlyMsg)
      warning = err.friendlyMsg;

    // Is de ruimte aangepast?
    if (S("prs_werkplek_implicit") == 1)
    {
      // Heeft virtueel werkplek moet ook bewaard worden.
      var werkplekkey = getFParamInt("werkplekkey");
      var sql_w = "UPDATE prs_werkplek"
                + "   SET prs_werkplek_virtueel = " + (bVirtual ? 1 : 0)
                + " WHERE prs_werkplek_key = " + werkplekkey;
      Oracle.Execute(sql_w);

      if (room_key_old != room_key_new)
      { // Werkplek verplaatsen
        wp_key = WPMove_PRS_WERKPLEK(werkplekkey, room_key_new);
      }
    }
  }
  else
  {
    fields.push({  dbs: "prs_perslidwerkplek_key",         typ: "key",      seq: "prs_s_prs_perslidwerkplek_key" });
    var regIns = buildInsert("prs_perslidwerkplek", fields);
    var pwp_key = regIns.sequences["prs_perslidwerkplek_key"];

    sql = regIns.sql;
    var err = Oracle.Execute(sql, true);
    if (err.friendlyMsg)
    {
      if (S("prs_werkplek_implicit") == 1)
      { // Mislukt, werkplek ook maar weer weg
        var sql = "DELETE prs_werkplek WHERE prs_werkplek_key = " + wp_key;
        Oracle.Execute(sql);
      }
      warning = err.friendlyMsg;
    }
  }
%>
<html>
  <head>
    <%  FCLTHeader.Generate() %>
    <script>
        $(function ()
        {
          FcltMgr.closeDetail(window, {warning: "<%=safe.jsstring(warning)%>",
                                       keepForm: <%=warning? "true" : "false"%>,
                                       refresh: true });
        });
    </script>
  </head>
  <body>
  </body>
</html>
<% ASPPAGE_END(); %>
