<%@language = "javascript" %>
<% /*
    $Revision$
    $Id$
    File:           INS/ins_onderdelen.asp
    Description:    Voegt een objectkoppeling toe bij een object
    Parameters:     ins_key
    Context:
    Note:           De ins_keys zijn de parent_key's.

*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/disciplineselector.inc" -->
<!-- #include file="../Shared/srtgroepselector.inc" -->
<!-- #include file="../Shared/srtdeelselector.inc" -->
<!-- #include file="../Shared/objectselector.inc" -->
<!-- #include file="./ins.inc" -->

<%
FCLTHeader.Requires({ plugins:["jQuery"],
                      js: ["./ins_onderdelen.js"]
                    });

var autfunction = "WEB_INSUSE";
var ins_parent_key = getQParamInt("ins_key");

// MGE: ins_keys bestaat volgens mij altijd uit 1 key.
// Autorisatie van het object pakken.
var this_ins = ins.func_enabled_deel(ins_parent_key);
user.auth_required_or_abort(this_ins.writeuse); // dat is toch wel het minste
authparams = this_ins.authparams(autfunction);

sql = "SELECT ins_deel_omschrijving"
    + "     , ins_discipline_key"
    + "     , " + lcl.xsqla('sd.ins_srtdeel_omschrijving', 'sd.ins_srtdeel_key')
    + "  FROM ins_deel d"
    + "     , ins_srtdeel sd "
    + " WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key"
    + "   AND ins_deel_key = " + ins_parent_key;
var oRs = Oracle.Execute(sql);
var ins_name = oRs("ins_deel_omschrijving").value;
var ins_srtname = oRs("ins_srtdeel_omschrijving").value;

var disc_key =  oRs("ins_discipline_key").value; // mooie default
var srtgroup =  -1;
var srtdeel =  -1;
oRs.Close();

var submitting = getQParamInt("submit", 0) == 1;

if (submitting)
{
  protectRequest.validateToken();
  FCLTHeader.Generate();

  var nrRows = getFParamInt("nrRows", 0);

  var deel_key = -1;
  var deel_keys = [];
  var warning = "";
  for (var i = 0; i < nrRows; i++)
  {
    deel_key = getFParamInt("deel" + i, 0);

    if (deel_key > 0)
    {
      deel_keys.push(deel_key);
    }
  }

  // Verwijderde objecten verwijderen.
  var sql = "UPDATE ins_deel d1"
          + "   SET d1.ins_deel_parent_key = NULL"
          + "     , d1.ins_alg_ruimte_key = (SELECT d2.ins_alg_ruimte_key FROM ins_deel d2 WHERE d2.ins_deel_key = " + ins_parent_key + ")"
          + "     , d1.ins_alg_ruimte_type = (SELECT d3.ins_alg_ruimte_type FROM ins_deel d3 WHERE d3.ins_deel_key = " + ins_parent_key + ")"
          + " WHERE d1.ins_deel_parent_key = " + ins_parent_key
  if (deel_keys.length) // 'nieuwe' laten staan, er komt straks wel een update
      sql += "  AND ins_deel_key NOT IN  (" + deel_keys.join(",") + ")";
  Oracle.Execute(sql);

  // Nieuwe objecten toevoegen.
  if (deel_keys.length)
  {
    var sql = "UPDATE ins_deel"
            + "   SET ins_deel_parent_key = " + ins_parent_key
            + "     , ins_alg_ruimte_key = NULL"
            + "     , ins_alg_ruimte_type = NULL"
            + " WHERE ins_deel_key IN  (" + deel_keys.join(",") + ")"
            + "   AND (ins_deel_parent_key <> " + ins_parent_key + " OR ins_deel_parent_key IS NULL)"
            + "   AND ins_deel_verwijder IS NULL";
    Oracle.Execute(sql);
  }
%>
  <script type="text/javascript">
    FcltMgr.closeDetail(window, { success: true, warning: "<%=safe.jsstring(warning)%>" });
  </script>
<%
}
else
{ %>
  <html>
    <head>
<%    FCLTHeader.Generate(); %>
    </head>

    <body class="fclt-modal" id="mod_insonderdelen">
    <% MODAL_START(); %>
        <form name="u2" method="post" action="ins_onderdelen.asp?submit=1&ins_key=<%=ins_parent_key%>">
<%
          MODAL_BLOCK_START("ins_onderdelen", L("lcl_ins_add_comp_to_object"), { icon: "fa-circle" });

%>        <input type="hidden" id="nrRows" name="nrRows" value="0">
<%
          // <!-- Toevoegen -->
          // Discipline
          FCLTdisciplineselector("disc",
                                 "sgDisc",
                                 { label: L("lcl_discipline"),
                                   disc_key: disc_key,
                                   module: "INS",
                                   perslidKey: user_key,
                                   autfunctionKey: authparams.autfunctionkey,
                                   autRW: "W",
                                   onChange: "onChangeDiscipline", // disgroepChanged
                                   required: true
                                 });

          // Groep
          FCLTsrtgroepselector("srtgroep",
                               "sgSrtgroep",
                               { label: L("lcl_obj_group"),
                                 srtgroep_key: srtgroup,
                                 autfunction: autfunction,
                                 onChange: "onChangeSrtgroep",
                                 urlAdd: [{urlParam: "disc_key", field: "disc"}],
                                 required: true
                               });

          // Objectsoort
          FCLTsrtdeelselector("srtdeel",
                              "sgSrtdeel",
                              { label: L("lcl_obj_sort"),
                                srtdeel_key: srtdeel,
                                filtercode: 'C', // Alleen objecten die ook een onderdeel kunnen zijn.
                                autfunction: autfunction,
                                onChange: "onChangeSrtdeel",
                                urlAdd: [{urlParam: "srtgroep_key", field: "srtgroep"},
                                         {urlParam: "disc_key", field: "disc"}],
                                extraParamField: "binding",
                                extracode: "B",
                                required: true
                              });

          // Identificatie/Object
          // LET OP: Onderdelen worden niet getoond in de objectselector (ins_v_aanwezigdeel sluit onderdelen uit).
          //         Dat is ook precies wat we willen. Onderdelen kunnen geen onderdeel zijn/worden van twee objecten.
          FCLTobjectselector("deel_key",
                               "sgDeel",
                               { label: L("lcl_obj_identification"),
                                 onChange: "onChangeDeel",
                                 urlAdd: [{urlParam: "disc_key", field: "disc"},
                                          {urlParam: "srtgroep_key", field: "srtgroep"},
                                          {urlParam: "srtdeel_key", field: "srtdeel"}],
                                 filtercode: 'C', // Alleen objecten die ook een onderdeel kunnen zijn.
                                 autfunction: autfunction,
                                 excludekey: ins_parent_key, // Huidige parent uitsluiten.
                                 required: true
                               });
        MODAL_BLOCK_END();
        SIMPLE_BLOCK_START();
              var buttons =  [ {title: L("lcl_add"),    icon: "fa-plus", action: "ins_add()", id: "ins_add_object_connect", importance: 1 }];
              CreateButtons(buttons, { showIcons: true });
        SIMPLE_BLOCK_END();
        MODAL_BLOCK_START("ins_rel", L("lcl_subobjects"), { icon: "fa-link" }); %>
          </table>
          <table id="deel_desctable" class="rstable">
            <thead>
              <tr>
                <th width="15"></th>
                <th><%=L("lcl_obj_identification")%></th>
                <th><%=L("lcl_discipline")%></th>
                <th><%=L("lcl_obj_group")%></th>
                <th><%=L("lcl_obj_sort")%></th>
              </tr>
            </thead>
            <tbody>
              <script type="text/javascript">
<%              var sql = "SELECT DISTINCT d.ins_deel_key"
                        + "     , " + lcl.xsqla('d.ins_deel_omschrijving', 'd.ins_deel_key')
                        + "     , " + lcl.xsqla('isd.ins_srtdeel_omschrijving', 'isd.ins_srtdeel_key')
                        + "     , " + lcl.xsqla('isg.ins_srtgroep_omschrijving', 'isg.ins_srtgroep_key')
                        + "     , " + lcl.xsqla('id.ins_discipline_omschrijving', 'id.ins_discipline_key')
                        + "  FROM ins_deel d"
                        + "     , ins_srtdeel isd"
                        + "     , ins_srtgroep isg"
                        + "     , ins_tab_discipline id"
                        + " WHERE d.ins_srtdeel_key = isd.ins_srtdeel_key"
                        + "   AND isd.ins_srtgroep_key = isg.ins_srtgroep_key"
                        + "   AND isg.ins_discipline_key = id.ins_discipline_key"
                        + "   AND d.ins_deel_parent_key = " + ins_parent_key
                        + " ORDER BY 2";
                oRs = Oracle.Execute(sql);
                while (!oRs.eof)
                { %>
                  CreateRow(<%=oRs("ins_deel_key").value%>,
                            '<%=safe.jsstring(oRs("ins_deel_omschrijving").value)%>',
                            '<%=safe.jsstring(oRs("ins_srtdeel_omschrijving").value)%>',
                            '<%=safe.jsstring(oRs("ins_srtgroep_omschrijving").value)%>',
                            '<%=safe.jsstring(oRs("ins_discipline_omschrijving").value)%>');
<%                oRs.MoveNext();
                }
                oRs.Close(); %>
              </script>
            </tbody>
          </table>
          <table>
<%        MODAL_BLOCK_END();
          var buttons1 =  [{title: L("lcl_submit"), icon: "fa-fclt-save",   action: "ins_submit()", importance: 1},
                           {title: L("lcl_cancel"), icon: "fa-fclt-cancel", action: "ins_cancel()", importance: 3 } ];
          SIMPLE_BLOCK_START();
          CreateButtons(buttons1);
          SIMPLE_BLOCK_END();
          IFACE.FORM_END();
%>
        </form>
      <% MODAL_END(); %>
    </body>
  </html>
<%
}
%><% ASPPAGE_END(); %>
