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

    File:         prs_move_perslidwerkplek.asp
    Description:  Verplaats een werkplekbezetting
                  Impliciet: PRS_WERKPLEK.alg_ruimte_key wordt aangepast
                  Expliciet: prs_perslid_werkplek.prs_werkplek_key wordt aangepast
    Parameters:   Moved from ALG to PRS. Might needs some adjusting

    Context:      fac_user_info (ver)plaats een persoon naar zijn echte werkplek
    Note:         Er worden dus geen nieuwe records aangemaakt

*/ %>

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

<%
FCLTHeader.Requires({ plugins:["jQuery"], js: ["jquery-ui.js"] })

var pwp_key = getQParamInt("pwp_key");    // de te verplaatsen werkplekbezetting
//var prs_key = getQParamInt("prs_key", -1);    // Toevoegen vanuit persoon

sql = "SELECT prs_perslid_key"
    + "     , prs_perslidwerkplek_bezetting"
    + "     , prs_perslidwerkplek_volgnr"
    + "     , prs_werkplek_key"
    + "  FROM prs_perslidwerkplek"
    + " WHERE prs_perslidwerkplek_key = " + pwp_key;

oRs = Oracle.Execute(sql);

var wp_key     = oRs("prs_werkplek_key").value;
var prs_key    = oRs("prs_perslid_key").value;
var wp_volg    = oRs("prs_perslidwerkplek_volgnr").value;
var wp_bez     = oRs("prs_perslidwerkplek_bezetting").value;

var prsauthparams = prs.checkAutorisation(prs_key);
user.auth_required_or_abort(prsauthparams.writeman || prsauthparams.writeuse || prsauthparams.writeself);

oRs.Close();
%>

<html>
  <head>
<%  FCLTHeader.Generate();
    var submitting = getQParamInt("submit", 0) == 1;
    if (submitting)
    {
      var newWPkey = getFParamInt("werkplekkey");
      var newRuimtekey = getFParamInt("ruimtekey");
      if (S("prs_werkplek_implicit") == 0)
      {
        var fields = [ { dbs: "prs_werkplek_key",              typ: "key",     frm: "werkplekkey" },
                       { dbs: "prs_perslidwerkplek_bezetting", typ: "number",  frm: "wp_bez" },
                       { dbs: "prs_perslidwerkplek_volgnr",    typ: "number",  frm: "wp_volg" }
                     ];
        sql = buildUpdate("prs_perslidwerkplek", fields)
            + "     prs_perslidwerkplek_key = " + pwp_key;
        var err = Oracle.Execute(sql);
      }
      else // impliciet
      {
        if (newRuimtekey < 0) // Clientside hoort dit tegen te gaan maar het gaat toch af en toe mis
        {                     // Voorkom dat het een AiAi wordt.
            __DoLog("Geen ruimtekey meegegeven?", "#f00");
            __DoLogForm();
            abort_with_warning("Geen ruimte gekozen?\nWijziging niet opgeslagen.");
        }
        sql = "SELECT COALESCE(MIN(ll), 1000) eerstvrije"
            + "  FROM ( SELECT prs_werkplek_volgnr + 1 AS ll"
                    + "   FROM prs_werkplek"
                    + "  WHERE prs_alg_ruimte_key = " + newRuimtekey
                    + " MINUS"
                    + " SELECT prs_werkplek_volgnr"
                    + "   FROM prs_werkplek"
                    + "  WHERE prs_alg_ruimte_key = " + newRuimtekey
                    + ")"
            + " WHERE ll >= 1000";
        oRs = Oracle.Execute(sql);

        var nextvolgnr = oRs("eerstvrije").value;

        sql = "UPDATE prs_werkplek"
            + "   SET prs_alg_ruimte_key = " + newRuimtekey
            + "     , prs_werkplek_volgnr = " + nextvolgnr
            + " WHERE prs_werkplek_key = " + wp_key;
      }
      Oracle.Execute(sql);

      var wpInfo = new Werkplek(newWPkey);

%>    <script type="text/javascript">
        FcltMgr.closeDetail(window, { success: true,
                                      wp_aanduiding : "<%=safe.jsstring(wpInfo.prs_werkplek_aanduiding())%>" } );
      </script>
<%    Response.End;
    }
%>
    <script type="text/javascript">
      async function prs_submit()
      {
          document.activeElement.blur(); // trigger laatste onChanges
          if (!await validateForm("u2"))
              return false;
          document.forms.u2.submit();
      }
      function prs_cancel()
      {
          FcltMgr.closeDetail(window);
      }
    </script>
  </head>

  <body class="fclt-modal" id="mod_movewerkplek">
    <% MODAL_START(); %>
    <form name="u2"
          action="prs_move_perslidwerkplek.asp?submit=1<%=buildTransitParam(["pwp_key"])%>"
          method="post"
          onSubmit="prs_submit();">
<%
    MODAL_BLOCK_START("bezettingInfo", user_key == prs_key ? L("lcl_prs_my_werkplek") : L("lcl_prs_werkplek_van").format(new Perslid(prs_key).naam()), {icon: "fa-map-pin"});
    FCLTplaatsselector(-1, { werkplekkey: wp_key,
                             startlevel: 2,/*locatie*/
                             readonlylevel: S("prs_use_edit_werkplek"), /* locatie of gebouw meestal */
                             eindlevel: (S("prs_werkplek_implicit") == 0)? 6 : 5,/*ruimte/werkplek*/
                             filtercode: "INCVR",
                             requiredlevel: (S("prs_werkplek_implicit") == 0)? 6 : 5,
                             cadSelect: true  // ja, dat willen we wel, maar die past niet in de modal.. TODO
                        });
    if (S("prs_werkplek_implicit")==0)
    {
      RWFIELDTR("wp_volg", "fldshort", L("lcl_estate_pwp_seq"), wp_volg, {required: false, datatype: "number", maxlength: 2});
      RWFIELDTR("wp_bez",  "fldshort", L("lcl_occupation"), wp_bez,      {required: true, datatype: "number",  maxlength: 3});
    }
    MODAL_BLOCK_END();
    SIMPLE_BLOCK_START();
    CreateButtons([{ title: L("lcl_submit"), action: "prs_submit()", importance: 1, icon: "fa-fclt-save"},
                   { title: L("lcl_cancel"), action: "prs_cancel()", importance: 3, icon: "fa-fclt-cancel"}]);
    SIMPLE_BLOCK_END();
IFACE.FORM_END();
%>
    </form>
    <% MODAL_END(); %>
  </body>
</html>
<% ASPPAGE_END(); %>
