195 lines
6.7 KiB
PHP
195 lines
6.7 KiB
PHP
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: model_notes.inc
|
|
|
|
Description: notes model.
|
|
Parameters:
|
|
Context:
|
|
|
|
Notes:
|
|
*/
|
|
|
|
/*
|
|
alle notes in 1 view
|
|
CREATE OR REPLACE VIEW fac_v_notes
|
|
( module, key, parent_key, writer_key, aanmaak, omschrijving)
|
|
AS
|
|
SELECT 'MLD'
|
|
, mld_melding_note_key
|
|
, mld_melding_key
|
|
, prs_perslid_key
|
|
, mld_melding_note_aanmaak
|
|
, mld_melding_note_omschrijving
|
|
FROM mld_melding_note
|
|
UNION
|
|
SELECT 'ORD'
|
|
, mld_opdr_note_key
|
|
, mld_opdr_key
|
|
, prs_perslid_key
|
|
, mld_opdr_note_aanmaak
|
|
, mld_opdr_note_omschrijving
|
|
FROM mld_opdr_note
|
|
UNION
|
|
SELECT 'FIN'
|
|
, fin_factuur_note_key
|
|
, fin_factuur_key
|
|
, prs_perslid_key
|
|
, fin_factuur_note_aanmaak
|
|
, fin_factuur_note_omschrijving
|
|
FROM fin_factuur_note
|
|
UNION
|
|
SELECT 'CNT'
|
|
, cnt_contract_note_key
|
|
, cnt_contract_key
|
|
, prs_perslid_key
|
|
, cnt_contract_note_aanmaak
|
|
, cnt_contract_note_omschrijving
|
|
FROM cnt_contract_note
|
|
UNION
|
|
SELECT 'PRJ'
|
|
, prj_scenario_note_key
|
|
, prj_scenario_key
|
|
, prs_perslid_key
|
|
, prj_scenario_note_aanmaak
|
|
, prj_scenario_note_omschrijving
|
|
FROM prj_scenario_note
|
|
*/
|
|
|
|
%>
|
|
<!-- #include file="../mld/mld.inc" -->
|
|
<!-- #include file="model_objects.inc"-->
|
|
<%
|
|
|
|
model_notes =
|
|
{
|
|
module: "FAC",
|
|
table: "fac_v_notes",
|
|
primary: "key",
|
|
records_name: "notes",
|
|
record_name: "note",
|
|
fields: {"id" : { dbs: "key", typ: "key", filter: "exact" },
|
|
"writer" : { dbs: "writer_key", typ: "key", foreign: "prs_perslid", filter: "exact" },
|
|
"description" : { dbs: "omschrijving", typ: "varchar", filter: "like" },
|
|
"createdate" : { dbs: "aanmaak", typ: "datetime" }
|
|
// { name: "module", dbs: "module", typ: "varchar", filter: "exact" }
|
|
// { name: "parent", dbs: "parent_key", typ: "key", filter: "exact" } //niet terug linken
|
|
},
|
|
|
|
|
|
_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 */
|
|
{
|
|
},
|
|
|
|
_getNoteTable: function (module)
|
|
{
|
|
var tabel = {}; // De tabel met notes die aangepast moet worden.
|
|
switch (module)
|
|
{
|
|
case "MLD":
|
|
{ tabel.naam = "mld_melding_note";
|
|
tabel.seq = "mld_s_mld_melding_note_key";
|
|
tabel.parent = "mld_melding";
|
|
break;
|
|
}
|
|
case "ORD":
|
|
{ tabel.naam = "mld_opdr_note";
|
|
tabel.seq = "mld_s_mld_opdr_note_key";
|
|
tabel.parent = "mld_opdr";
|
|
break;
|
|
}
|
|
case "FIN":
|
|
{ tabel.naam = "fin_factuur_note";
|
|
tabel.seq = "fin_s_fin_factuur_note_key";
|
|
tabel.parent = "fin_factuur";
|
|
break;
|
|
}
|
|
case "CNT":
|
|
{ tabel.naam = "cnt_contract_note";
|
|
tabel.seq = "cnt_s_cnt_contract_note_key";
|
|
tabel.parent = "cnt_contract";
|
|
break;
|
|
}
|
|
case "PRJ":
|
|
{ tabel.naam = "prj_scenario_note";
|
|
tabel.seq = "prj_s_prj_scenario_note_key";
|
|
tabel.parent = "prj_scenario";
|
|
break;
|
|
}
|
|
}
|
|
return tabel;
|
|
},
|
|
|
|
REST_GET: function _GET(params)
|
|
{
|
|
var query = api2.sqlfields(params, model_notes );
|
|
var wheres = api2.sqlfilter(params, model_notes);
|
|
query.wheres = query.wheres.concat(wheres);
|
|
|
|
var sql = "SELECT " + query.selects.join(", ")
|
|
+ " FROM " + query.tables.join(", ")
|
|
+ (params.filter.id || params.filter.parent ? " WHERE " + query.wheres.join(" AND " ) : "");
|
|
|
|
var json = api2.sql2json (params, sql, model_notes );
|
|
|
|
return json;
|
|
},
|
|
|
|
REST_PUT: function (params, jsondata, the_key) /* update note */
|
|
{
|
|
// Een note kan alleen worden aangepast door de persoon die hem geschreven heeft.
|
|
// Alleen van de meest recente note bij een (melding/opdrachte/...) kan de omschrijving worden aangepast.
|
|
//
|
|
var fields = api2.update_fields(params, model_notes, jsondata); // Build updater
|
|
|
|
var xxx_tabel = model_notes._getNoteTable(params.data.module); // De tabel met notes die aangepast moet worden.
|
|
// Wijzig de veldnamen overeenkomstig de te gebruiken tabel
|
|
for (i in fields)
|
|
{
|
|
if (fields[i].dbs == "writer_key")
|
|
fields[i].dbs = "prs_perslid_key";
|
|
else
|
|
fields[i].dbs = xxx_tabel.naam + "_" + fields[i].dbs;
|
|
}
|
|
var wheres = [ xxx_tabel.naam+"_key = " + the_key];
|
|
var xxxUpd = buildTrackingUpdate(xxx_tabel.naam, wheres.join(" AND " ), fields, { noValidateToken: true });
|
|
|
|
Oracle.Execute(xxxUpd.sql);
|
|
|
|
return { key: the_key };
|
|
},
|
|
|
|
REST_POST: function (params, jsondata) /* new note */
|
|
{
|
|
params.isNew = true;
|
|
//
|
|
var xxx_tabel = model_notes._getNoteTable(params.data.module); // De tabel met notes die aangepast moet worden.
|
|
var fields = [];
|
|
fields["writer"] = { dbs: "prs_perslid_key", typ: "key", val: user_key };
|
|
fields["parent"] = { dbs: xxx_tabel.parent+"_key", typ: "key", val: params.filter.id };
|
|
fields["created"] = { dbs: xxx_tabel.naam+"_aanmaak", typ: "datetime", val: new Date() };
|
|
fields["description"] = { dbs: xxx_tabel.naam+"_omschrijving", typ: "varchar", val: jsondata.description };
|
|
fields["id"] = { dbs: xxx_tabel.naam+"_key", typ: "key", seq: xxx_tabel.seq };
|
|
|
|
var xxxIns = buildInsert(xxx_tabel.naam, fields, { noValidateToken: true });
|
|
var new_key = xxxIns.sequences[xxx_tabel.naam];
|
|
|
|
var sql = "BEGIN "
|
|
+ xxxIns.sql + ";"
|
|
+ "END;";
|
|
Oracle.Execute(xxxIns.sql);
|
|
|
|
return { key: new_key };
|
|
},
|
|
|
|
REST_DELETE: function (params, the_key) /* delete note */
|
|
{ // Niet van toepassing.
|
|
}
|
|
}
|
|
%>
|