Files
Facilitor/APPL/API2/model_regions.inc
Jos Groot Lipman 8decd00522 Alle API's via nieuwe stijl fields
svn path=/Website/trunk/; revision=24435
2015-03-13 13:34:37 +00:00

139 lines
5.4 KiB
PHP

<% /*
$Revision$
$Id$
File: model_regions.inc
Description: Regio model.
Parameters:
Context:
Notes:
*/
%>
<!-- #include file="../Shared/discxalg3d.inc"-->
<!-- #include file="../ALG/alg.inc" -->
<!-- #include file="./model_districts.inc" -->
<%
model_regions =
{
table: "alg_regio",
primary: "alg_regio_key",
records_name: "regions",
record_name: "region",
fields: {"id" : { dbs: "alg_regio_key", typ: "key", filter: "exact" },
"name" : { dbs: "alg_regio_omschrijving", typ: "varchar", label: L("lcl_estate_regio_descr")},
"deleted": { dbs: "alg_regio_verwijder", typ: "datetime"}
},
includes: { "districts": { model: model_districts }
},
_check_authorization: function(params, method)
{
var scope = params.filter.scope || "fe";
var autfunction = (scope == "fe"? "WEB_ALGUSE" : "WEB_ALGMAN");
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
var onrgoedlvl = "RG";
if (method == "GET")
{
if (params.filter.id)
{
var reg_key = params.filter.id;
var this_alg = alg.func_enabled(reg_key, onrgoedlvl);
user.auth_required_or_abort(this_alg.readman || this_alg.readuse);
}
}
if (method == "PUT" || method == "DELETE")
{
var reg_key = params.filter.id;
var this_alg = alg.func_enabled(reg_key, onrgoedlvl);
user.auth_required_or_abort(this_alg.writeman || (this_alg.writeuse));
}
if (method == "POST")
{
var reg_key = -1
var this_alg = alg.func_enabled(reg_key, onrgoedlvl);
user.auth_required_or_abort(this_alg.writeman);
}
params.func_enabled = this_alg || {};
},
_pre_analyze_fields: function (params, jsondata) /* analyseer inkomende jsondata voor PUT en POST */
{
},
REST_GET: function _GET(params, jsondata)
{
model_regions._check_authorization(params, "GET");
var query = api2.sqlfields(params, model_regions);
if (!params.filter.show_deleted)
query.wheres.push("alg_regio_verwijder IS NULL");
if (params.authparams.ALGreadlevel > -1)
{ // Er is een scope-beperking van kracht
query.wheres.push("alg_regio_key IN"
+ " (SELECT alg_regio_key FROM fac_v_my_regions"
+ " WHERE prs_perslid_key=" + user_key
+ " AND niveau=" + params.authparams.ALGreadlevel + ")"
)
}
var wheres = api2.sqlfilter(params, model_regions)
query.wheres = query.wheres.concat(wheres);
var sql = "SELECT " + query.selects.join(", ")
+ " FROM " + query.tables.join(", ")
+ (query.wheres.length ? " WHERE " + query.wheres.join(" AND " ) : "")
+ " ORDER BY alg_regio_omschrijving";
var json = api2.sql2json (params, sql, model_regions);
return json;
},
REST_PUT: function (params, jsondata, the_key) /* update region */
{
model_regions._check_authorization(params, "PUT");
if (!jsondata.region.id) jsondata.region.id = the_key;
var reg_key = the_key;
var fields = api2.update_fields(params, model_regions, jsondata); // Build updater
var wheres = [" alg_regio_key = " + reg_key];
var regUpd = buildTrackingUpdate("alg_regio", wheres.join(" AND " ), fields, { noValidateToken: true });
var warning = "";
var err = Oracle.Execute(regUpd.sql, true);
if (err.friendlyMsg)
warning = err.friendlyMsg;
return { key: reg_key, warning: warning };
},
REST_POST: function (params, jsondata) /* new region */
{
params.isNew = true;
model_regions._check_authorization(params, "POST");
var fields = api2.update_fields(params, model_regions, jsondata); // Build updater
fields["id"] = {dbs: "alg_regio_key", typ: "key", seq: "alg_s_alg_regio_key" };
var regIns = buildInsert("alg_regio", fields, { noValidateToken: true });
var reg_key = regIns.sequences["alg_regio_key"];
var warning = "";
var err = Oracle.Execute(regIns.sql, true);
if (err.friendlyMsg)
warning = err.friendlyMsg;
return { key: reg_key, warning: warning };
},
REST_DELETE: function (params, the_key) /* delete region */
{
model_regions._check_authorization(params, "DELETE");
var regio_key = params.filter.id;
var sql = "UPDATE alg_regio"
+ " SET alg_regio_verwijder = SYSDATE"
+ " WHERE alg_regio_key = " + regio_key;
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
params.warning = err.friendlyMsg;
return { key: regio_key, warning: warning };
}
}
%>