<%@language = "javascript" %>
<% /*
    $Revision$
    $Id$
    File:           INS/ins_deelkoppeling.asp
    Description:    Voegt een objectkoppeling toe bij een object
    Parameters:     ins_key
    Context:
    Note:           De ins_keys is de 'van', de hier gekozen objecten de 'naar'.
                    LET OP: de code suggereert dat multi-van is toegestaan maar dat is ongetest!

*/ %>
<!-- #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_deelkoppeling.js"]
                    });

var autfunction = "WEB_INSUSE";
var ins_van_key_arr = getQParamIntArray("ins_keys");

// MGE: ins_keys bestaat volgens mij altijd uit 1 key.
// Autorisatie van het object pakken.
var this_ins = ins.func_enabled_deel(ins_van_key_arr[0]);
user.auth_required_or_abort(this_ins.canChange); // 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_van_key_arr[0];
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;

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

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

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

  var naar_key = -1;
  var naar_desc = "";
  var naar_keys = [];
  var naar_desc_keys = [];
  var warning = "";
  for (var i = 0; i < nrRows; i++)
  {
    naar_key = getFParamInt("naar" + i, 0);
    naar_desc = getFParam("desc" + i, "");

    if (naar_key > 0)
    {
      naar_keys.push(naar_key);
      naar_desc_keys.push(naar_desc);
    }
  }

  for (var j = 0; j < ins_van_key_arr.length; j++)
  { // Verwijderen
    var sql = "DELETE ins_deelkoppeling"
            + " WHERE ins_deelkoppeling_van_key = " + ins_van_key_arr[j];
    if (naar_keys.length) // 'nieuwe' laten staan, er komt straks wel een update
        sql += "   AND ins_deelkoppeling_naar_key NOT IN (" + naar_keys.join(",") + ")";
    Oracle.Execute(sql);
  }

  for (var i = 0; i < naar_keys.length; i++)
  {
    for (var j = 0; j < ins_van_key_arr.length; j++)
    {
      var sql = "SELECT ins_deelkoppeling_naar_key"
              + "  FROM ins_deelkoppeling"
              + " WHERE ins_deelkoppeling_van_key = " + ins_van_key_arr[j]
              + "   AND ins_deelkoppeling_naar_key = " + naar_keys[i]
              + "   AND ins_deelkoppeling_verwijder IS NULL";
      oRs = Oracle.Execute(sql);
      if (!oRs.eof)
      { // Update
        var sql = "UPDATE ins_deelkoppeling SET"
                + "       ins_deelkoppeling_omschrijving = " + safe.quoted_sql(naar_desc_keys[i])
                + " WHERE ins_deelkoppeling_naar_key = " + oRs("ins_deelkoppeling_naar_key").Value;
        Oracle.Execute(sql);
      }
      else
      { // Insert
        var sql = "INSERT INTO ins_deelkoppeling "
                + "        (ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key, ins_deelkoppeling_omschrijving)"
                + " VALUES (" + ins_van_key_arr[j] + ","
                +               naar_keys[i] + ","
                +               safe.quoted_sql(naar_desc_keys[i]) + ")";
        var err = Oracle.Execute(sql, true);
        if (err.friendlyMsg)
          warning = err.friendlyMsg;
      }
    }
  }
%>
  <script type="text/javascript">
    FcltMgr.closeDetail(window, { success: true, warning: "<%=safe.jsstring(warning)%>" });
  </script>
<%
}
else
{ %>
  <html>
    <head>
<%    FCLTHeader.Generate(); %>
    </head>

    <body class="modal" id="mod_ruimteafdeling">
      <div id="email">
        <form name="u2" method="post" action="ins_deelkoppeling.asp?submit=1&ins_keys=<%=ins_van_key_arr.join(",")%>">
          <input type="hidden" id="nrRows" name="nrRows" value="0">
<%
          if (ins_van_key_arr.length == 1)
            BLOCK_START("ins_ruimteafdeling", safe.htmlattr(ins_srtname + " " + ins_name));
          else
            BLOCK_START("ins_ruimteafdeling", L("lcl_alg_geselecteerde_ruimten") + ": " + ins_van_key_arr.length);

          // <!-- 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,
                                autfunction: autfunction,
                                onChange: "onChangeSrtdeel",
                                urlAdd: [{urlParam: "srtgroep_key", field: "srtgroep"},
                                         {urlParam: "disc_key", field: "disc"}],
                                extraParamField: "binding",
                                extracode: "B",
                                required: true
                              });

          // Identificatie/Object
          FCLTobjectselector("naar_key",
                               "sgDeel",
                               { label: L("lcl_obj_identification"),
                                 onChange: "onChangeDeel",
                                 urlAdd: [{urlParam: "disc_key", field: "disc"},
                                          {urlParam: "srtgroup_key", field: "srtgroup"},
                                          {urlParam: "srtdeel_key", field: "srtdeel"}],
                                 autfunction: autfunction
                               }); %>

          <tr'>
            <td class="label">
              <label for="naar_desctable" style="white-space: nowrap"><%=L("lcl_ins_koppelobjects")%>:&nbsp;</label>
            </td>
            <td>
              <table id="naar_desctable" cellspacing=0 cellpadding=0 class="rstable">
              <thead>
              <tr>
                <th width=15></th>
                <th><%=L("lcl_obj_koppelaan")%></th>
                <th><%=L("lcl_obj_sort")%></th>
                <th><%=L("lcl_obj_koppeloms")%></th>
              </tr>
              </thead>
              <tbody>
                  <script type="text/javascript">
<%            var sql = "SELECT DISTINCT id_naar.ins_deel_key"
                      + "     , " + lcl.xsqla('isd.ins_srtdeel_omschrijving', 'isd.ins_srtdeel_key')
                      + "     , ins_deel_omschrijving || ' ' || ins_deel_opmerking deel_omschrijving"
                      + "     , ins_deelkoppeling_omschrijving"
                      + "  FROM ins_deel id_naar"
                      + "     , ins_srtdeel isd"
                      + "     , ins_deelkoppeling idk"
                      + " WHERE id_naar.ins_deel_key = idk.ins_deelkoppeling_naar_key"
                      + "   AND id_naar.ins_srtdeel_key = isd.ins_srtdeel_key"
                      + "   AND idk.ins_deelkoppeling_van_key in (" + ins_van_key_arr.join(",") + ")"
                      + " ORDER BY 2";
              oRs = Oracle.Execute(sql);
                while (!oRs.eof)
                { %>
                    CreateRow(<%=oRs("ins_deel_key").value%>,
                              '<%=safe.jsstring(oRs("ins_srtdeel_omschrijving").value)%>',
                              '<%=safe.jsstring(oRs("deel_omschrijving").value)%>',
                              '<%=safe.jsstring(oRs("ins_deelkoppeling_omschrijving").value)%>');

<%                oRs.MoveNext();
                } %>
                  </script>
              </tbody>
              </table>
            </td>
          </tr>

<%        BLOCK_END();
          var buttons =  [ {title: L("lcl_add"),    icon: "submit.png", action: "ins_add()" },
                           {title: L("lcl_submit"), icon: "undo.png",   action: "ins_submit()"},
                           {title: L("lcl_cancel"), icon: "cancel.png", action: "ins_cancel()" } ];
          CreateButtons(buttons);
IFACE.FORM_END();
%>
        </form>
      </div>
    </body>
  </html>
<%
}
%>