<% /* $Revision$ $Id$ File: model_objects.inc Description: Object model. Parameters: Context: Notes: We ondersteunen vooralsnog uitsluitend ruimtegebonden objecten */ %> <% model_objects = { table: "ins_deel", primary: "ins_deel_key", records_name: "objects", record_name: "object", multi_update: true, fields: {"id" : { dbs: "ins_deel_key", typ: "key", filter: "exact" }, "name" : { dbs: "ins_deel_omschrijving", typ: "varchar", filter: "like"}, "description" : { dbs: "ins_deel_opmerking", typ: "varchar", filter: "like"}, "type" : { dbs: "ins_srtdeel_key", typ: "key", filter: "exact", foreign: "ins_srtdeel"}, "state" : { dbs: "ins_deel_state", typ: "varchar" }, "statedate": { dbs: "ins_deel_statedate", typ: "datetime" }, "expiration":{ dbs: "ins_deel_vervaldatum", typ: "date" }, "manager" : { dbs: "prs_perslid_key_beh", typ: "key", foreign: "prs_perslid", track: true, label: L("lcl_ins_manager"), sfilter: "exact" }, "location" : { dbs: "ins_v_deel_gegevens.alg_locatie_key", typ: "key", foreign: "alg_locatie"}, "building" : { dbs: "ins_v_deel_gegevens.alg_gebouw_key", typ: "key", foreign: "alg_gebouw" }, "floor" : { dbs: "ins_v_deel_gegevens.alg_verdieping_key", typ: "key", foreign: "alg_verdieping" }, "room" : { dbs: "ins_v_deel_gegevens.alg_ruimte_key", typ: "key", foreign: "alg_ruimte" }, "owner" : { dbs: "ins_v_deel_gegevens.prs_perslid_key", typ: "key", foreign: "prs_perslid" } }, includes: { "tracking": { model: new model_tracking(['deel']), joinfield: "trackingrefkey" } }, REST_GET: function _GET(params) { var urole = "fe"; // TODO: Moet echt niet ter zake doen var autfunction = urole == "fe"? "WEB_INSUSE" : "WEB_INSMAN"; params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch // TODO: Add authorization var query = api2.sqlfields(params, model_objects); query.wheres.push("ins_deel_verwijder IS NULL"); // Toon standaard alleen de niet vervallen objecten, behalve als specifiek op object identificatie wordt gezocht. if (!params.filter.expired && !params.filter.name) query.wheres.push(" (ins_deel.ins_deel_vervaldatum IS NULL OR ins_deel.ins_deel_vervaldatum > TRUNC(SYSDATE))"); // Als Uitgegeven of Beschikbaar is meegegeven dan overzicht uitleenmodule. if (params.filter.lentout || params.filter.avail) { query.tables.push("ins_srtdeel"); query.wheres.push("ins_deel.ins_srtdeel_key = ins_srtdeel.ins_srtdeel_key"); query.wheres.push("ins_srtdeel_uitleenbaar = 1"); if (params.filter.lentout && !params.filter.avail) query.wheres.push("ins_alg_ruimte_key_org IS NOT NULL"); if (!params.filter.lentout && params.filter.avail) query.wheres.push("ins_alg_ruimte_key_org IS NULL"); } // TODO: We ondersteunen uitsluitend ruimte- werkplek- en persoonsgebonden objecten query.tables.push("ins_v_deel_gegevens"); query.wheres.push("ins_deel.ins_alg_ruimte_type IN ('R', 'W', 'P') "); query.wheres.push("ins_v_deel_gegevens.ins_deel_key = ins_deel.ins_deel_key"); var wheres = api2.sqlfilter(params, model_objects) query.wheres = query.wheres.concat(wheres); var sql = "SELECT " + query.selects.join(", ") + " FROM " + query.tables.join(", ") + " WHERE " + query.wheres.join(" AND " ) + " ORDER BY ins_deel_omschrijving"; if (query.orderbys.length) sql += ", " + query.orderbys.join(", "); var json = api2.sql2json (params, sql, model_objects); return json; }, REST_PUT: function (params, jsondata, the_key) /* update object */ { var dbfields = api2.update_fields(params, model_objects, jsondata); // Build updater //model_objects._validate_fields(dbfields, params, jsondata); // TODO: Autorization var wheres = [" ins_deel_key = " + the_key]; var insUpd = buildTrackingUpdate("ins_deel", wheres.join(" AND " ), dbfields, { noValidateToken: true }); Oracle.Execute(insUpd.sql); //var beztrack = api2.process_includes(params, model_objects, jsondata, the_key); return { key: the_key }; }, xxx_POST: function (params) /* new object */ { // Nog niet ondersteund }, xxx_DELETE: function (params) /* delete object */ { // Nog niet ondersteund } } %>