ALLR#78097 Toevoegen hookfunctie aan bezoekers alvorens de bezoeker wordt verwijderd.

svn path=/Website/trunk/; revision=60570
This commit is contained in:
Erik Groener
2023-05-31 12:23:27 +00:00
parent af7110a712
commit 5e88dbfaa6
4 changed files with 75 additions and 3 deletions

View File

@@ -206,14 +206,26 @@ function model_visitors()
this.REST_DELETE = function (params, the_key) /* delete visitors */
{
var pResult = new HookResult();
if (!custfunc.bez_predelete(the_key, pResult))
{
abort_with_warning(pResult.errmsg);
}
var wheres = [" bez_bezoekers_key = " + the_key];
// TODO: Autorisatie
//wheres.push("(bez_afspraak_contact_key = " + user_key // Altijd fe vooralnog
// + " OR bez_afspraak_host_key = " + user_key + ")");
var sql = "DELETE FROM bez_bezoekers"
+ " WHERE " + wheres.join(" AND " );
Oracle.Execute(sql); // Parkeerplaats (res_rsv_deel) cascadeert wel mee
if (!custfunc.bez_postdelete(the_key, pResult))
{
abort_with_warning(pResult.errmsg);
}
}

View File

@@ -452,6 +452,7 @@ bez =
deleteBezoekers:
function _deleteBezoekers(pBez_key, clean, moveTracking)
{
var pResult = new HookResult();
var lmessage;
// Gooi een bezoeker weg. Als het de enige is, dan wordt de
// afspraak ook verwijderd, anders niet
@@ -463,11 +464,22 @@ bez =
if (!oRs.eof)
{
var afspr_key = oRs(0).Value;
if (!custfunc.bez_predelete(pBez_key, pResult))
{
abort_with_warning(pResult.errmsg);
}
// delete parking place is done by database cascade constraint
sql = "DELETE FROM bez_bezoekers"
+ " WHERE bez_bezoekers_key = " + pBez_key;
Oracle.Execute(sql);
if (!custfunc.bez_postdelete(pBez_key, pResult))
{
abort_with_warning(pResult.errmsg);
}
if (clean)
var afspr_deleted = bez.cleanAfspraak(afspr_key, moveTracking);
} else {

View File

@@ -51,16 +51,35 @@ res = {
// (JGL: Eigenlijk moet dit gewoon cascading door een trigger gebeuren)
DeleteResAfspraak: function DeleteResAfspraak (rsv_ruimte_key)
{
var pResult = new HookResult();
var sql;
// delete parkeerplaatsen gebeurt wel met behulp van CASCADE (bez_bezoekers)
// delete bezoekers
var sql = "DELETE FROM bez_bezoekers"
var sql = "SELECT bez_bezoekers_key"
+ " FROM bez_bezoekers"
+ " WHERE bez_afspraak_key in "
+ " (SELECT ba.bez_afspraak_key"
+ " FROM bez_afspraak ba"
+ " WHERE ba.res_rsv_ruimte_key = " + rsv_ruimte_key + ")";
Oracle.Execute(sql);
var oRs = Oracle.Execute(sql);
while (!oRs.eof)
{
var bez_key = oRs("bez_bezoekers_key").Value;
if (!custfunc.bez_predelete(bez_key, pResult))
{
abort_with_warning(pResult.errmsg);
}
sql = "DELETE FROM bez_bezoekers"
+ " WHERE bez_bezoekers_key = " + bez_key;
Oracle.Execute(sql);
if (!custfunc.bez_postdelete(bez_key, pResult))
{
abort_with_warning(pResult.errmsg);
}
oRs.MoveNext();
}
oRs.Close();
// delete afspraak
sql = "DELETE FROM bez_afspraak"

View File

@@ -91,6 +91,35 @@ custfunc.bez_postsave =
return result;
};
custfunc.bez_predelete =
function (pbezoek_key, presult)
{
var result = true;
var hook = custfunc.gethook();
if (hook)
{
if ('bez_predelete' in hook)
result = hook.bez_predelete(pbezoek_key, presult);
hook = null; // zorg dat de GC het object kan opruimen.
}
return result;
};
custfunc.bez_postdelete =
function (pbezoek_key, presult)
{
var result = true;
var hook = custfunc.gethook();
if (hook)
{
if ('bez_postdelete' in hook)
result = hook.bez_postdelete(pbezoek_key, presult);
hook = null; // zorg dat de GC het object kan opruimen.
}
return result;
};
// Called when user has clicked the Done checkbox in the backoffice visitors.
// parameters: pbezoek_key key van de bez_bezoeker
// result: -