<% /* $Revision$ $Id$ File: model_issues.inc Description: Melding model. Dit bestand heeft niets met interfacing te maken maar werkt uitsluitend op JSON-data Parameters: Context: Notes: TODO: definitieve naamgeving bepalen TODO: autorisaties voor scope=fo|bo TODO on demand: PUT/POST/DELETE TODO floor referentie levert id/code ipv id/name. Waar zit dat?? */ %> <% model_issues = { module: "MLD", table: "mld_melding", primary: "mld_melding_key", records_name: "issues", record_name: "issue", fields: [{ name: "id", dbs: "mld_melding_key", typ: "key", filter: "exact" }, { name: "name", dbs: "mld_melding_id", typ: "varchar", sql: "ins_srtdiscipline.ins_srtdiscipline_prefix||mld_melding_key", filter: "exact" }, { name: "contact", dbs: "prs_perslid_key", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_name"), filter: "exact" }, { name: "requestor", dbs: "prs_perslid_key_voor", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_call_for"), filter: "exact" }, { name: "issuedate", dbs: "mld_melding_datum", typ: "datetime", track: L("lcl_mld_date_time")}, { name: "enddate", dbs: "mld_melding_einddatum", typ: "datetime", track: L("lcl_mld_enddate")}, { name: "issuetype", dbs: "mld_stdmelding_key", typ: "varchar", foreign: "mld_stdmelding", track: L("lcl_complain"), filter: "exact" }, { name: "description", dbs: "mld_melding_omschrijving", typ: "varchar", track: L("lcl_descr"), filter: "like" }, { name: "remark", dbs: "mld_melding_opmerking", typ: "varchar", track: L("lcl_remark")}, { name: "status", dbs: "mld_melding_status", typ: "key", foreign: mld.getmldstatustext, track: L("lcl_status"), filter: "exact" }, { name: "account", dbs: "prs_kostenplaats_key", typ: "key", foreign: "prs_kostenplaats", track: L("lcl_account"), filter: "exact" }, { name: "handler", dbs: "mld_melding_behandelaar_key", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_behandelaar"), filter: "exact" }, { name: "location", dbs: "mld_alg_locatie_key", typ: "key", foreign: "alg_locatie", track: L("lcl_location"), filter: "exact" }, { name: "building", dbs: "alg_v_allonroerendgoed.alg_gebouw_key", typ: "key", foreign: "alg_gebouw", track: L("lcl_building"), filter: "exact" }, { name: "floor", dbs: "alg_v_allonroerendgoed.alg_verdieping_key", typ: "key", foreign: "alg_verdieping", track: L("lcl_floor"), filter: "exact" }, { name: "room", dbs: "alg_v_allonroerendgoed.alg_ruimte_key", typ: "key", foreign: "alg_ruimte", track: L("lcl_room"), filter: "exact" }, { name: "terrain", dbs: "alg_v_allonroerendgoed.alg_terreinsector_key", typ: "key", foreign: "alg_terreinsector", track: L("lcl_room"), filter: "exact" } ], includes: { "objects": { model: model_objects, joinfield: "ins_deel_key", single_only: false, joinfunction: function (params) { return "ins_deel_key IN (SELECT ins_deel_key FROM mld_melding_object WHERE mld_melding_object.mld_melding_key = mld_melding.mld_melding_key AND mld_melding_object_verwijder IS NULL)"; } }, "notes": { // TODO //model: model_notes, joinfield: "ins_deel_key", single_only: false, joinfunction: function (params) { /* gaat uit dat die wordt geimplementeerd met een view fac_v_notes (module, key, columns....) */ return "module='MLD' AND fac_v_notes.key = mld_melding.mld_melding_key"; } } }, REST_GET: function _GET(params) { var scope = getQParamSafe("scope", "fe"); var autfunction = { fe : "WEB_MLDUSE", fo : "WEB_MLDFOF", bo : "WEB_MLDBOF", mi : "WEB_MLDBAC" } [scope]; params.authparams = user.checkAutorisation(autfunction, null, null, true); // Hier kom je niet terecht als bovenstaande autorisatiecheck niet tot succes leidt. // TODO: Add authorization var query = api2.sqlfields(params, model_issues ); if (scope == "fe") { query.wheres.push("prs_perslid_key=" + user_key); } else { // TODO: disc3d conditie voor de geldendende autfunction toevoegen // TODO: disc3d conditie voor de geldendende autfunction toevoegen // TODO: disc3d conditie voor de geldendende autfunction toevoegen // TODO: disc3d conditie voor de geldendende autfunction toevoegen } if (!params.filter.id) { query.wheres.push("mld_melding_datum > SYSDATE - 30"); // ff beperken tot recente stuff } /* we need the prefix for the name */ query.tables.push("mld_stdmelding"); query.wheres.push("mld_melding.mld_stdmelding_key = mld_stdmelding.mld_stdmelding_key"); query.tables.push("ins_tab_discipline"); query.wheres.push("mld_stdmelding.mld_ins_discipline_key = ins_tab_discipline.ins_discipline_key"); query.tables.push("ins_srtdiscipline"); query.wheres.push("ins_tab_discipline.ins_srtdiscipline_key = ins_srtdiscipline.ins_srtdiscipline_key"); query.tables.push("alg_v_allonroerendgoed"); query.wheres.push("mld_alg_onroerendgoed_keys = alg_v_allonroerendgoed.alg_onroerendgoed_keys(+)"); var wheres = api2.sqlfilter(params, model_issues); query.wheres = query.wheres.concat(wheres); var sql = "SELECT " + query.selects.join(", ") + " FROM " + query.tables.join(", ") + " WHERE " + query.wheres.join(" AND " ) + " ORDER BY mld_melding_key"; var json = api2.sql2json (params, sql, model_issues ); return json; }, _analyze_fields: function (fields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */ { }, _validate_fields: function (fields, params, jsondata) /* valideer fields, alle constraints die niet door de database worden afgevangen */ { }, REST_PUT: function (params, jsondata, the_key) /* update call */ { }, REST_POST: function (params, jsondata) /* new call */ { }, REST_DELETE: function (params, jsondata, the_key) /* delete call */ { } } %>