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

    File:           mld_doublecheck.asp
    Description:    Controleer of een melding al door iemand anders is gemeld.
    Parameters:     mld_key
    Note:           Wordt voor de backoffice gebruikt om bij o.a. accepteren van
                    een melding te waarschuwen dat er dubbelen zijn.
    LET OP          Soortgelijke code in mld_edit_melding_save waarschuwt al bij het aanmaken
*/ %>

<%
var JSON_Result = true;
%>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="mld.inc" -->

<%
var mld_key = getFParamInt("mld_key");

var multi = getFParamInt("multi", 0);
var reloadmld = (getFParamInt("reloadmld", 0) == 1);
var addopdr = (getFParamInt("reloadmld", 0) == 2);
var urole = getFParam("urole", "bo");

// Authcheck niet nodig, je kunt niets wijzigen en er wordt geen DB-info getoond

var mld_info = mld.mld_melding_info(mld_key);
var this_mld = mld.func_enabled_melding(mld_key); // wat mag ik zoal op deze melding
user.auth_required_or_abort(this_mld.canReadAny); // Ik moet in ieder geval iets kunnen lezen

var message = "";
var maybeDouble = false;
var ins_str = "";

var result = { maybeDouble: maybeDouble, mld_key: mld_key, multi: multi, urole: urole, reloadmld: reloadmld, addopdr: addopdr, prefix: mld_info.prefix };
var reject = (getFParamInt("reject", 0) == 1);
if (reject)
  result.reject = true;

var stdm_info = mld.mld_stdmeldinginfo(mld_info.stdm);
// mld_stdmelding_doublecheck: 00 (0) Geen controle uitvoeren
//                             01 (1) Controle dubbel bij invoer nieuwe melding (door FE, FO (of BO))
//                             10 (2) Controle dubbel bij accepteren melding (door BO)
//                             11 (3) Controle zowel bij invoer als bij accepteren
// Niet controleren als het al een childmelding is. Dan mag je eigenlijk al niet accepteren/afwijzen
if (!mld_info.parent_key && (stdm_info.doublecheck == 2 || stdm_info.doublecheck == 3))
{
  // In facmgt moet altijd een verplicht niveau gekozen worden. stdm_info.alg_onrgoed_niveau heeft dus een waarde (R, V, G, L).
  if (!stdm_info.ins_srtdiscipline_alg)
    var where_alg = "1=1"
  else if (stdm_info.alg_onrgoed_niveau == "R")
    var where_alg = "org.alg_ruimte_key = " + mld_info.room_key
  else if (stdm_info.alg_onrgoed_niveau == "V")
    var where_alg = "org.alg_verdieping_key = " + mld_info.flr_key
  else if (stdm_info.alg_onrgoed_niveau == "G")
    var where_alg = "org.alg_gebouw_key = " + mld_info.bld_key
  else if (stdm_info.alg_onrgoed_niveau == "L")
    var where_alg = "org.alg_locatie_key = " + mld_info.loc_key;

  var where_obj = "";

  var one_object = (mld_info.aantal_objects == 1);
  sql = "SELECT mo.ins_deel_key"
      + "  FROM mld_melding_object mo"
      + " WHERE mo.mld_melding_key = " + mld_key;
  oRs = Oracle.Execute(sql);
  if (one_object)
  { // Haal de key van dit ene object op.
    ins_str = oRs("ins_deel_key").value;
    where_obj = " OR mo.ins_deel_key = " + ins_str;
  }

  sql = "SELECT DISTINCT m.mld_melding_key"
      + "  FROM mld_melding m"
      + "     , alg_v_allonroerendgoed org"
      + "     , mld_melding_object mo"
      + " WHERE m.mld_alg_onroerendgoed_keys = org.alg_onroerendgoed_keys(+)"
      + "   AND m.mld_melding_key = mo.mld_melding_key(+)"
      + "   AND m.mld_melding_status IN (0, 2, 3, 4, 7)"
      + "   AND m.mld_melding_parentkey IS NULL" // Geen child meldingen tonen
      + "   AND m.mld_stdmelding_key = " + mld_info.stdm
      + "   AND m.mld_melding_key <> " + mld_key
      + "   AND (" + where_alg + where_obj + ")";
  oRs = Oracle.Execute(sql);
  if (!oRs.eof)
  { // Er is mogelijk een dubbele melding aanwezig
    result.maybeDouble = true;
  }
}

Response.Write(JSON.stringify(result));
%>
