92 lines
4.3 KiB
PHP
92 lines
4.3 KiB
PHP
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: model_reservations.inc
|
|
|
|
Description: Reservering model. Dit bestand heeft niets met interfacing te maken
|
|
maar werkt uitsluitend op JSON-data
|
|
Parameters:
|
|
Context:
|
|
|
|
Notes: In het technisch datamodel heeft een reservering een koppeling naar een
|
|
res_ruimte_opstel record (een geldige ruimte<->opstelling combinatie)
|
|
In de API splitsen we dat in de meer natuurlijk aanvoelende res_ruimte_key
|
|
en res_ruimte_opstel_key
|
|
*/
|
|
|
|
%>
|
|
<!-- #include file="../Shared/discxalg3d.inc"-->
|
|
<!-- #include file="../res/res.inc"-->
|
|
<%
|
|
var sqlro = "SELECT rg.res_ruimte_nr || CASE WHEN res_ruimte_opstel_default = 1 THEN '' ELSE ' (' || ro.res_opstelling_omschrijving || ')' END CASE"
|
|
+ " FROM res_ruimte_opstelling rro"
|
|
+ " , res_opstelling ro"
|
|
+ " , res_v_alg_ruimte_gegevens rg"
|
|
+ " WHERE rro.res_opstelling_key = ro.res_opstelling_key"
|
|
+ " AND rro.res_ruimte_key = rg.res_ruimte_key"
|
|
+ " AND rro.res_ruimte_opstel_key = res_rsv_ruimte.res_ruimte_opstel_key";
|
|
|
|
model_reservations =
|
|
{
|
|
module: "RES",
|
|
table: "res_rsv_ruimte",
|
|
primary: "res_rsv_ruimte_key",
|
|
records_name: "reservations",
|
|
record_name: "reservation",
|
|
|
|
fields: [{ name: "id", dbs: "res_rsv_ruimte_key", typ: "key", filter: "exact" },
|
|
{ name: "code", dbs: "res_reservering_id", sql: "res_reservering_key||'/'||res_rsv_ruimte_volgnr", typ: "varchar"},
|
|
{ name: "from", dbs: "res_rsv_ruimte_van", typ: "datetime"},
|
|
{ name: "to", dbs: "res_rsv_ruimte_tot", typ: "datetime"},
|
|
{ name: "description", dbs: "res_rsv_ruimte_omschrijving", typ: "varchar"},
|
|
{ name: "remark", dbs: "res_rsv_ruimte_opmerking", typ: "varchar"},
|
|
{ name: "host", dbs: "res_rsv_ruimte_host_key", typ: "key", foreign: "prs_perslid"},
|
|
{ name: "contact", dbs: "res_rsv_ruimte_contact_key", typ: "key", foreign: "prs_perslid"},
|
|
{ name: "visitorscount", dbs: "res_rsv_ruimte_bezoekers", typ: "number" },
|
|
{ name: "status", dbs: "res_status_fo_key", typ: "key", foreign: res.getfostatustext },
|
|
{ name: "room", dbs: "res_ruimte_opstelling.res_ruimte_key", typ: "key", foreign: "res_ruimte" },
|
|
{ name: "configuration", dbs: "res_ruimte_opstelling.res_opstelling_key", typ: "key", foreign: "res_opstelling" },
|
|
],
|
|
|
|
impersonate_auth: "WEB_RESFOF",
|
|
REST_GET: function _GET(params)
|
|
{
|
|
var urole = "fe"; // TODO: Moet echt niet ter zake doen
|
|
var autfunction = urole == "fe"? "WEB_ALGUSE" : "WEB_ALGMAN";
|
|
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
|
|
|
|
// TODO: Add authorization
|
|
var query = api2.sqlfields(params, model_reservations );
|
|
|
|
query.wheres.push(user_key + " IN (res_rsv_ruimte_host_key, res_rsv_ruimte_contact_key)"); // Altijd fe vooralnog
|
|
query.wheres.push("res_rsv_ruimte_van BETWEEN SYSDATE - " + S("facilitiespast_res") + " AND SYSDATE + " + S("facilitiesfuture_res"));
|
|
|
|
query.tables.push("res_ruimte_opstelling");
|
|
query.wheres.push("res_rsv_ruimte.res_ruimte_opstel_key = res_ruimte_opstelling.res_ruimte_opstel_key");
|
|
|
|
var wheres = api2.sqlfilter(params, model_reservations);
|
|
query.wheres = query.wheres.concat(wheres);
|
|
|
|
var sql = "SELECT " + query.selects.join(", ")
|
|
+ " FROM " + query.tables.join(", ")
|
|
+ " WHERE " + query.wheres.join(" AND " )
|
|
+ " ORDER BY res_rsv_ruimte_van, res_rsv_ruimte.res_rsv_ruimte_key";
|
|
|
|
__DoLog(sql);
|
|
|
|
var json = api2.sql2json (params, sql, model_reservations );
|
|
|
|
return json;
|
|
},
|
|
PUT: function (params) /* update reservation */
|
|
{
|
|
},
|
|
POST: function (params) /* new reservation */
|
|
{
|
|
},
|
|
DELETE: function (params) /* delete reservation */
|
|
{
|
|
}
|
|
}
|
|
%> |