<%@language = "javascript" %>
<%  Server.ScriptTimeout=6000; %>
<% /*
    $Revision$
    $Id$

    File:           fac_anonymize.asp
    Description:    Het anonimiseren van modules.
    Parameters:     moduleArray
    Note:
*/ %>

<%
var JSON_Result = true;
%>

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

<%
protectRequest.validateToken();

var moduleArray = getFParamArray("moduleString");
var autfunction = "WEB_PRSSYS";
var authparams = user.checkAutorisation(autfunction);
var anonymize_period = S("anonymize_period");

var startdatum = getFParamDate("startdatum"); // Periode van
var einddatum = getFParamDate("einddatum"); // Perdiode tot

var result = { key: moduleArray.join(","), success: true };

var last_einddatum = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - anonymize_period);
if (einddatum > last_einddatum)
  einddatum = last_einddatum;

var anodatetime = new Date();
// Eerst PRS anonimiseren. De andere modules hebben allemaal referenties naar PRS.
// Bijvoorbeeld het veld bez_afspraak_gastheer die door trigger automatisch weer wordt gevuld met tekstnaam van host.
var sql;
var anosql = "BEGIN"
// Persoon als eerste i.v.m. tekstovername van gastheer bij afspraken.
if (inArray("PRS", moduleArray))
{ // Anonimiseer procedure voor PRS aanroepen.
  anosql += " ano.anonymizeprs(" + startdatum.beginToSQL() + ", " + einddatum.endToSQL() + ");";
}
if (inArray("BES", moduleArray))
{ // Anonimiseer procedure voor PRS aanroepen.
  anosql += " ano.anonymizebes(" + startdatum.beginToSQL() + ", " + einddatum.endToSQL() + ");";
}
if (inArray("BEZ", moduleArray))
{ // Anonimiseer procedure voor BEZ aanroepen.
  anosql += " ano.anonymizebez(" + startdatum.beginToSQL() + ", " + einddatum.endToSQL() + ");";
}
if (inArray("MLD", moduleArray))
{ // Anonimiseer procedure voor PRS aanroepen.
  anosql += " ano.anonymizemld(" + startdatum.beginToSQL() + ", " + einddatum.endToSQL() + ");";
}
if (inArray("RES", moduleArray))
{ // Anonimiseer procedure voor RES.
  anosql += " ano.anonymizeres(" + startdatum.beginToSQL() + ", " + einddatum.endToSQL() + ");";
}
if (inArray("FIN", moduleArray))
{ // Anonimiseer procedure voor FIN.
  anosql += " ano.anonymizefin(" + startdatum.beginToSQL() + ", " + einddatum.endToSQL() + ");";
}
anosql += " END;";

Oracle.Execute(anosql);

var messageArray = [];
if (inArray("BES", moduleArray))
{ // Bepalen hoeveel bestellingen zijn geanonimiseerd.
  sql = "SELECT COUNT(ft.fac_tracking_key) aantalbes"
      + "  FROM fac_tracking ft"
      + " WHERE ft.fac_tracking_datum >= " + anodatetime.toSQL(true, true)
      + "   AND ft.fac_srtnotificatie_key = (SELECT fac_srtnotificatie_key"
      + "                                      FROM fac_srtnotificatie"
      + "                                     WHERE fac_srtnotificatie_code = ('BESANO'))";
  oRs = Oracle.Execute(sql);
  messageArray.push(oRs("aantalbes").Value + " " + L("lcl_bes_bestellingen"));
  oRs.Close();
}

if (inArray("BEZ", moduleArray))
{ // Bepalen hoeveel afspraken zijn geanonimiseerd.
  sql = "SELECT COUNT(ft.fac_tracking_key) aantalbez"
      + "  FROM fac_tracking ft"
      + " WHERE ft.fac_tracking_datum >= " + anodatetime.toSQL(true, true)
      + "   AND ft.fac_srtnotificatie_key = (SELECT fac_srtnotificatie_key"
      + "                                      FROM fac_srtnotificatie"
      + "                                     WHERE fac_srtnotificatie_code = ('BEZANO'))";
  oRs = Oracle.Execute(sql);
  messageArray.push(oRs("aantalbez").Value + " " + L("lcl_bez_appointments"));
  oRs.Close();
}

if (inArray("MLD", moduleArray))
{ // Bepalen hoeveel bestellingen zijn geanonimiseerd.
  sql = "SELECT COUNT(ft.fac_tracking_key) aantalmld"
      + "  FROM fac_tracking ft"
      + " WHERE ft.fac_tracking_datum >= " + anodatetime.toSQL(true, true)
      + "   AND ft.fac_srtnotificatie_key = (SELECT fac_srtnotificatie_key"
      + "                                      FROM fac_srtnotificatie"
      + "                                     WHERE fac_srtnotificatie_code = ('MLDANO'))";
  oRs = Oracle.Execute(sql);
  messageArray.push(oRs("aantalmld").Value + " " + L("lcl_mld_meldingen"));
  oRs.Close();
}

if (inArray("PRS", moduleArray))
{ // Bepalen hoeveel afspraken zijn geanonimiseerd.
  sql = "SELECT COUNT(ft.fac_tracking_key) aantalprs"
      + "  FROM fac_tracking ft"
      + " WHERE ft.fac_tracking_datum >= " + anodatetime.toSQL(true, true)
      + "   AND ft.fac_srtnotificatie_key = (SELECT fac_srtnotificatie_key"
      + "                                      FROM fac_srtnotificatie"
      + "                                     WHERE fac_srtnotificatie_code = ('PRSANO'))";
  oRs = Oracle.Execute(sql);
  messageArray.push(oRs("aantalprs").Value + " " + L("lcl_prs_persons"));
  oRs.Close();
}

if (inArray("RES", moduleArray))
{ // Bepalen hoeveel reserveringen zijn geanonimiseerd.
  sql = "SELECT COUNT(ft.fac_tracking_key) aantalres"
      + "  FROM fac_tracking ft"
      + " WHERE ft.fac_tracking_datum >= " + anodatetime.toSQL(true, true)
      + "   AND ft.fac_srtnotificatie_key = (SELECT fac_srtnotificatie_key"
      + "                                      FROM fac_srtnotificatie"
      + "                                     WHERE fac_srtnotificatie_code = ('RESANO'))";
  oRs = Oracle.Execute(sql);
  messageArray.push(oRs("aantalres").Value + " " + L("lcl_res_reservation"));
  oRs.Close();
}

if (inArray("FIN", moduleArray))
{ // Bepalen hoeveel facturen zijn geanonimiseerd.
  sql = "SELECT COUNT(ft.fac_tracking_key) aantalfin"
      + "  FROM fac_tracking ft"
      + " WHERE ft.fac_tracking_datum >= " + anodatetime.toSQL(true, true)
      + "   AND ft.fac_srtnotificatie_key = (SELECT fac_srtnotificatie_key"
      + "                                      FROM fac_srtnotificatie"
      + "                                     WHERE fac_srtnotificatie_code = ('FINANO'))";
  oRs = Oracle.Execute(sql);
  messageArray.push(oRs("aantalfin").Value + " " + L("lcl_fin_invoices"));
  oRs.Close();
}

result.message = L("lcl_fac_following_anonymized") + ":\n" + messageArray.join("\n");

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