Intern altijd kaal data-record zonder model-wrapper

svn path=/Website/trunk/; revision=25729
This commit is contained in:
Jos Groot Lipman
2015-07-27 14:53:53 +00:00
parent 744d3e36ec
commit b4e77146c6
9 changed files with 42 additions and 31 deletions

View File

@@ -482,9 +482,6 @@ api2 = {
// Bouw een fields object zoals save2db dat verwacht/ kent
update_fields: function _update_fields(params, model, jsondata)
{
if (jsondata[model.record_name])
jsondata = jsondata[model.record_name]; // dereference
var fields = {};
for (var fld in model.fields)
{
@@ -560,9 +557,6 @@ api2 = {
// Verwerk de POST en PUT (== insert en update)
process_includes: function(params, model, jsondata, the_key)
{
if (jsondata[model.record_name])
jsondata = jsondata[model.record_name]; // dereference
if (!model.includes)
return [];
for (var incname in model.includes)
@@ -622,7 +616,7 @@ api2 = {
}
}
},
// Geeft de GET terug
// Geeft de GET terug van een enkel veld
sql2jsonval: function(oRs, fld, model)
{
var field = model.fields[fld];
@@ -709,6 +703,7 @@ api2 = {
options.push("<option value='" + safe.htmlattr(l) + "'" + (l == current?" selected='1'":"") + ">" + safe.html(spl[l]) + "</option>");
return "<select>" + options.join("") + "</select>";
},
// Geef alle velden van een record terug
sql2jsonfields: function (oRs, model)
{
var record = {};
@@ -918,6 +913,21 @@ api2 = {
fields[fld] = newfield;
}
},
// Maak van inkomende data een standaard formaat
cleanup_data: function(model, jsondata)
{
// foreigns's leveren we op als issuetype: { id: 123, name: "de standaardmelding") }
// Zo mag je het met een PUT en POST ook opgeven maar we ondersteunen/prefereren ook rechtstreeks issuetype: 123
// Onderstaande functie converteert inkomende data naar het simpele formaat
for (var fld in model.fields)
{
if (model.fields[fld].foreign)
{
if (fld in jsondata && typeof jsondata[fld] == "object" && "id" in jsondata[fld])
jsondata[fld] = jsondata[fld].id;
}
}
},
get_jdata_refkey: function(jsondataobject)
{
var value = null;

View File

@@ -206,17 +206,20 @@ api2_rest = {
model.includes["custom_fields"].model.streamattachment(filter, data[0].custom_fields);
Response.End;
}
else if (method == "GET" || model.record_name in jsondata)
else if (method == "GET")
{
var result = model["REST_" + method]( requestparams, jsondata, key );
var result = model["REST_" + method]( requestparams, null, key );
}
else if (model.record_name in jsondata) // een enkel record
{
var result = model["REST_" + method]( requestparams, jsondata[model.record_name], key );
}
else
{ // Loop door de multiple records en geef de REST_ functie altijd <20><>n record
for (var record in jsondata[model.records_name])
{
var thisdata = {};
thisdata[model.record_name] = jsondata[model.records_name][record];
var result = model["REST_" + method]( requestparams, thisdata, thisdata[model.record_name].id );
var thisdata = jsondata[model.records_name][record];
var result = model["REST_" + method]( requestparams, thisdata, thisdata.id );
}
}
}

View File

@@ -93,12 +93,12 @@ model_appointments =
_validate_fields: function (dbfields, params, jsondata) /* valideer dbfields, alle constraints die niet door de database worden afgevangen */
{
// TODO: vis_fe_afspraak_limiet en vis_afspraak_limiet controleren
if (jsondata.appointment.from < new Date().midnight())
if (jsondata.from < new Date().midnight())
abort_with_warning(L("lcl_vis_error_date"));
if (jsondata.appointment.from >= jsondata.appointment.to)
if (jsondata.from >= jsondata.to)
abort_with_warning(L("lcl_vis_error_date"));
if ("action" in jsondata.appointment)
if ("action" in jsondata)
{
// TODO: mag hij? Of controleren we dat in _validate_fields
}

View File

@@ -47,7 +47,7 @@ model_invoicelines =
_validate_fields: function (dbfields, params, jsondata) /* valideer dbfields, alle constraints die niet door de database worden afgevangen */
{
//__Log(jsondata);
//var factuurregel_key = parseInt(jsondata.invoiceline.id);
//var factuurregel_key = parseInt(jsondata.id);
},
_synchronize_totals_sql: function (factuur_key)

View File

@@ -73,17 +73,17 @@ function model_invoices(fin_key, params)
function _pre_analyze_fields (params, jsondata) /* analyseer inkomende jsondata, common voor PUT en POST */
{
// De factuurbedragen worden berekend uit de factuurregels. Eventuele waarden die hier gezet zijn negeren.
jsondata.invoice.total = 0;
jsondata.invoice.vat = 0;
jsondata.total = 0;
jsondata.vat = 0;
// Status van 3 (foute import) moet bij saven op 2 worden gezet.
var fin_status_key = jsondata.invoice.status;
var fin_status_key = jsondata.status;
if (fin_status_key == 3) fin_status_key = 2;
// Status 6 (Akkoord) moet bij saven op 2 (Ingevoerd) worden gezet. Factuur dient indien nodig weer gefiatteerd te worden.
if (fin_status_key == 6) fin_status_key = 2;
jsondata.invoice.status = fin_status_key;
jsondata.status = fin_status_key;
};
function _analyze_fields (dbfields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */

View File

@@ -91,7 +91,7 @@ model_regions =
REST_PUT: function (params, jsondata, the_key) /* update region */
{
model_regions._check_authorization(params, "PUT");
if (!jsondata.region.id) jsondata.region.id = the_key;
if (!jsondata.id) jsondata.id = the_key;
var reg_key = the_key;
var dbfields = api2.update_fields(params, model_regions, jsondata); // Build updater
var wheres = [" alg_regio_key = " + reg_key];

View File

@@ -73,8 +73,6 @@ function model_reportsx(usrrap_key, params)
this._analyze_fields = function (dbfields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
{
if ("report" in jsondata)
jsondata = jsondata.report; // dereference
if (user.oslogin() != "_FACILITOR") // Die mag alles
{
user.auth_required_or_abort(this.is_safe_view(jsondata.viewname));

View File

@@ -123,12 +123,12 @@ function model_reservations(rsv_key, params)
function _analyze_fields(dbfields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
/* res_ruimte+config wordt bijvoorbeeld omgezet in res_ruimte_opstel_key */
{
if ("resroom" in jsondata.reservation)
if ("resroom" in jsondata)
{
var res_ruimte_key = parseInt(jsondata.reservation.resroom);
var res_ruimte_key = parseInt(jsondata.resroom);
var res_opstel_key = -1;
if ("configuration" in jsondata.reservation) // Pas op: opstelling 'Standaard' heeft soms key 0
res_opstel_key = parseInt(jsondata.reservation.configuration);
if ("configuration" in jsondata) // Pas op: opstelling 'Standaard' heeft soms key 0
res_opstel_key = parseInt(jsondata.configuration);
// De default komt bovenaan
var sql = "SELECT rro.res_ruimte_opstel_key"
@@ -159,7 +159,7 @@ function model_reservations(rsv_key, params)
// var soort = 1; // algemene ruimtes
}
if ("activity" in jsondata.reservation)
if ("activity" in jsondata)
{
// TODO: mag hij? Of controleren we dat in _validate_fields
}
@@ -177,7 +177,7 @@ function model_reservations(rsv_key, params)
+ " AND rs.res_srtactiviteit_key = ra.res_srtactiviteit_key"
+ " AND res_srtactiviteit_soort = " + soort;
oRs = Oracle.Execute(sql);
//jsondata.reservation.activity = oRs("res_activiteit_key").Value;
//jsondata.activity = oRs("res_activiteit_key").Value;
dbfields["activity"] = { dbs: "res_activiteit_key", typ: "key", val: oRs("res_activiteit_key").Value };
oRs.Close()
}

View File

@@ -143,7 +143,7 @@ function model_rooms(room_key, params)
function _save_flexproperties(room_key, params, jsondata)
{
var flextrack = [];
var flexdata = jsondata.room.custom_fields;
var flexdata = jsondata.custom_fields;
currentKenmerkenSQL = " SELECT k.alg_kenmerk_key"
+ " , ok.alg_onrgoedkenmerk_waarde"
@@ -222,7 +222,7 @@ function model_rooms(room_key, params)
this.REST_PUT = function (params, jsondata, the_key) /* update room */
{
_check_authorization(params, "PUT");
if (!jsondata.room.id) jsondata.room.id = the_key;
if (!jsondata.id) jsondata.id = the_key;
var room_key = the_key;
var dbfields = api2.update_fields(params, this, jsondata); // Build updater