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

     File:               mld_reject.asp
     Description:        Afwijzen van een melding. Opmerking moet ingevuld worden.
     Parameters:         mld_melding_key

     Context:
     Note:

*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/stdmeldingselector.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="mld.inc" -->

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

var mld_key_arr = getQParamIntArray("mld_key");
var submitting = getQParamInt("submit", 0) == 1;
var opmerk = getFParam("opmerk", "");

var result = {};
var toberejected = 0;
var ingesloten = [];
var reqStatusEmptyMelding = [];
// Bepaal de meldingen in de selectie die
// ook echt afgewezen kunnen of mogen worden.
for (var i = 0; i < mld_key_arr.length; i++)
{
  var this_mld = mld.func_enabled_melding(mld_key_arr[i]); // Wat heb ik zoal aan rechten op deze specifieke melding
  var mld_info = mld.mld_melding_info(mld_key_arr[i]);
  lcl.set_dialect(mld_info.srtdisc, "MLD_SRTDISCIPLINE_KEY");
  if (this_mld.canReject && !mld_info.parent_key) // Geen child melding
  {
    ingesloten.push(mld_key_arr[i]);
    toberejected++;
  }
  // Zijn er nog kenmerken die nu wel verplicht zijn?
  var kvsAfwezig = mld.hasRequiredStatusEmptyMelding(mld_key_arr[i], 1); // Melding status "Afgemeld(5)"
  if (kvsAfwezig.length)
  {
    var mldnr = mld.mld_prefix(mld_key_arr[i]) + mld_key_arr[i];
    reqStatusEmptyMelding.push(L("lcl_mld_req_status_empty").format(kvsAfwezig.join(", "), mldnr) );
  }
}
// De laatst gebruikte set_dialect uit de for-lus geldt nu voor de onderstaande code.
user.anything_todo_or_abort(!reqStatusEmptyMelding.length, reqStatusEmptyMelding.join("<br />"));
user.anything_todo_or_abort(toberejected > 0); // We klagen niet over enkele wel en enkele niet
%>

<html>
  <head>
<%  FCLTHeader.Generate(); %>

<%  if (submitting && opmerk != "")
    { // Handle workflow actions for rejection:
      var notaccepted = 0;
      for (var i = 0; i < ingesloten.length; i++)
      {
        mld.nextworkflowstep(ingesloten[i], 0);  // 0 = rejected

        sql = "SELECT mm.mld_melding_opmerking"
            + "  FROM mld_melding mm"
            + " WHERE mld_melding_key = " + ingesloten[i];
        oRs = Oracle.Execute(sql);
        var new_opm = (oRs("mld_melding_opmerking").value||""); // + "\n" + opmerk;
        new_opm = new_opm + ((new_opm + opmerk) != "" ? "\n" : "") + opmerk; // alleen een CR als er al iets staat EN er iets wordt toegevoegd.
        oRs.Close();

        var fields =  [ { dbs: "mld_melding_opmerking",  typ: "varchar", val: new_opm, track: L("lcl_mld_inf_Opmerking"), len: 4000 }
                        ];

        var mldUpd = buildTrackingUpdate("mld_melding", " mld_melding_key = " + ingesloten[i], fields);
        oRs = Oracle.Execute(mldUpd.sql);
        if (mldUpd.trackarray.length)
            mld.trackmeldingupdate(ingesloten[i], L("lcl_mld_is_mldupd") + "\n" + mldUpd.trackarray.join("\n"));

        // Zetten van de status op afgewezen en afhandelen van de tracking.
        mld.setmeldingstatus(ingesloten[i], 1); // afgewezen

        // check (zat er al in)
        // TODO: Het afwijzen gaat niet altijd goed. Wat is de reden daartoe? Status wordt in enkele gevallen niet op 1 gezet door  mld.setmeldingstatus?
        sql = "SELECT ''"
            + " FROM mld_melding"
            + " WHERE mld_melding_key = " + ingesloten[i]
            + "   AND mld_melding_status = 1";
        oRs = Oracle.Execute(sql);
        if (oRs.eof)
        {
          notaccepted++;
        }
      }
      var success = true;
      var warning = ""
      if (notaccepted == ingesloten.length)
        var warning = L("lcl_mld_reject_failed");

%>
      <script type="text/javascript">
        FcltMgr.closeDetail( window,
                             {
                               key: "<%=ingesloten.join(",")%>",
                               warning: "<%=safe.jsstring(warning)%>",
                               success: "<%=success? 1 : 0%>"
                             });
      </script>
<%
      Response.End;
    }
    else
    { %>
      <script type="text/javascript">
        jQuery(document).ready(function()
                               {
                                 $('textarea').resize(function () { FcltMgr.resized(window) } );
                                 $('textarea').autogrow();
                               });
        function mld_reject()
        {
          // Standaard checks op verplichte velden, datum formaat, numeriek en float formaat, currency formaat.
          if (!validateForm("rejectform"))
            return false;
          document.rejectform.submit();
          return true; // disable button
        }

        function mld_cancel()
        {
          FcltMgr.closeDetail(window, { cancel: true } );
        }
      </script>
<%  } %>
  </head>

  <body class="modal" id="mod_rejectbody">
    <div id="reject">
<%
      if (ingesloten.length == 1)
      {
        sql = "SELECT sm.mld_ins_discipline_key"
            + "     , sm.mld_stdmelding_key"
            + "     , mm.mld_melding_opmerking"
          + "     , " + lcl.xsqla('md.ins_discipline_omschrijving', 'md.ins_discipline_key')
            + "     , sd.ins_srtdiscipline_prefix"
            + "  FROM mld_melding mm"
            + "     , mld_stdmelding sm"
            + "     , mld_discipline md"
            + "     , ins_srtdiscipline sd"
            + " WHERE mld_melding_key = " + ingesloten[0]
            + "   AND mm.mld_stdmelding_key = sm.mld_stdmelding_key"
            + "   AND sm.mld_ins_discipline_key = md.ins_discipline_key"
            + "   AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key";
        oRs = Oracle.Execute(sql);

        var mld_stdm = oRs("mld_stdmelding_key").value;
        var mld_opmr = oRs("mld_melding_opmerking").value;
        var prefix = oRs("ins_srtdiscipline_prefix").value || "";
        var ins_discipline_omschrijving = oRs("ins_discipline_omschrijving").value;
        oRs.close();
      }

%>
      <form id="rejectform" name="rejectform" action="mld_reject.asp?submit=1&mld_key=<%=ingesloten.join(",")%>" method="post">
<%
        BLOCK_START("mldReject", L("lcl_forward_mld_1") + ingesloten.join(","));
        // <!-- Meldingen (Discipline) -->
        FCLTstdmeldingselector("stdm", "sgStdm", {label: L("lcl_complain"),
                                                  perslidKey: user_key,
                                                  autfunctionKey: -1, // toch readonly
                                                  //srtdisc_key: srtdisc, // je mag switchen naar een andere soort TODO: Autorisatie?
                                                  stdmelding_key: (ingesloten.length == 1? mld_stdm : -1),
                                                  onChange: "onChangeStdMelding",
                                                  readonly: true } );
        // Vakgroep
        RWFIELDTR("disc", "flddisc", L("lcl_vakgroup"), (ingesloten.length == 1 && prefix? prefix + "-" : "") + (ingesloten.length == 1? ins_discipline_omschrijving : ""), {readonly: true})

        // Reden afwijzing
%>
      <tr><td class="label"><label></label></td>
          <td ><%=safe.html(mld_opmr)%></td>
      </tr>
<%
        RWTEXTAREATR("opmerk",
                     "fldremark required",
                     L("lcl_mld_inf_Opmerking"),
                     "",
                     {html: "rows='8'"});
        BLOCK_END();

        var buttons =  [ {title: L("lcl_reject"), icon: "opslaan.png", action: "mld_reject()", singlepress: true, id: "btn_reject_submit"  },
                         {title: L("lcl_cancel"), icon: "undo.png", action: "mld_cancel()" }];
        CreateButtons(buttons);
%>
        <br><br>
<% IFACE.FORM_END(); %>
      </form>
    </div>
  </body>
</html>
