296 lines
12 KiB
C++
296 lines
12 KiB
C++
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: model_fac_groeprechten.inc
|
|
|
|
Description: Vanuit CodeCharge gegenereerd model voor fac_groeprechten
|
|
|
|
Context:
|
|
|
|
Notes: fac-groeprechten heeft drie 1-op-n relaties: fac_groep,
|
|
fac_functie en ins_discipline
|
|
We *eisen* dat je altijd minstens 1 van de drie bij een
|
|
instantiatie van het model moet meegeven
|
|
|
|
*/
|
|
|
|
/* params kan bevatten een groep_key, een disc_key en een functie_key
|
|
We ondersteunen de volgende combinatiees:
|
|
groep_key functie_key disc_key
|
|
- - - Niet ondersteund, te complex
|
|
- - X Ja
|
|
- X - Ja
|
|
- X X Ja
|
|
X - - Ja
|
|
X - X Niet ondersteund. Als je een groep of disc hebt moet je eerst functie kiezen
|
|
X X - Ja
|
|
X X X Niet ondersteund (dan krijg je een detail popupje)
|
|
*/
|
|
function model_fac_groeprechten (params)
|
|
{
|
|
if (params && (params.groep_key > 0 || params.disc_key > 0 || params.functie_key > 0))
|
|
{ /* Oke */ }
|
|
else
|
|
INTERNAL_ERROR_GROEPRECHTEN; // minstens 1 van de drie moet er zijn
|
|
|
|
this.table = "fac_groeprechten";
|
|
this.primary = "fac_groeprechten_key";
|
|
this.records_name = "fac_groeprecht";
|
|
this.record_name = "fac_groeprechten";
|
|
|
|
this.autfunction = "WEB_PRSSYS";
|
|
this.record_title = L("fac_groeprechten");
|
|
this.records_title = L("fac_groeprechten_m");
|
|
|
|
this.fields = {
|
|
"id": {
|
|
"dbs": "fac_groeprechten_key",
|
|
"label": "Key",
|
|
"typ": "key",
|
|
"hidden_fld": true,
|
|
"required": true,
|
|
"filter": "exact",
|
|
"seq": "fac_s_fac_groeprechten_key"
|
|
},
|
|
"fac_groep": {
|
|
"dbs": "fac_groep_key",
|
|
"label": L("fac_groep"),
|
|
"typ": "key",
|
|
"hidden_fld": true,
|
|
"foreign": {
|
|
"tbl": "fac_groep",
|
|
"key": "fac_groep_KEY",
|
|
"desc": "fac_groep_omschrijving"
|
|
}
|
|
},
|
|
"fac_functie": {
|
|
"dbs": "fac_functie_key",
|
|
"label": L("fac_functie_key"),
|
|
"typ": "key",
|
|
"hidden_fld": true,
|
|
"foreign": {
|
|
"tbl": "FAC_FUNCTIE",
|
|
"key": "FAC_FUNCTIE_KEY",
|
|
"desc": "FAC_FUNCTIE_OMSCHRIJVING"
|
|
}
|
|
},
|
|
"ins_discipline": {
|
|
"dbs": "ins_discipline_key",
|
|
"label": L("ins_discipline_key"),
|
|
"typ": "key",
|
|
"hidden_fld": true,
|
|
"foreign": {
|
|
"tbl": "ins_tab_discipline",
|
|
"key": "ins_discipline_key",
|
|
"desc": "ins_discipline_omschrijving",
|
|
"where": "ins_discipline_verwijder IS NULL"
|
|
}
|
|
},
|
|
"prs_level_read": {
|
|
"dbs": "fac_gebruiker_prs_level_read",
|
|
"label": L("fac_gebruiker_prs_level_read"),
|
|
"typ": "number",
|
|
"LOV": buildPrsLevelLOV()
|
|
},
|
|
"prs_level_write": {
|
|
"dbs": "fac_gebruiker_prs_level_write",
|
|
"label": L("fac_gebruiker_prs_level_write"),
|
|
"typ": "number",
|
|
"LOV": buildPrsLevelLOV()
|
|
},
|
|
"alg_level_read": {
|
|
"dbs": "fac_gebruiker_alg_level_read",
|
|
"label": L("fac_gebruiker_alg_level_read"),
|
|
"typ": "number",
|
|
"LOV": buildAlgLevelLOV()
|
|
},
|
|
"alg_level_write": {
|
|
"dbs": "fac_gebruiker_alg_level_write",
|
|
"label": L("fac_gebruiker_alg_level_write"),
|
|
"typ": "number",
|
|
"LOV": buildAlgLevelLOV()
|
|
}
|
|
};
|
|
|
|
function fnFunctieDisc(oRs, field, model)
|
|
{
|
|
if (!model.hasdisc)
|
|
return "N.v.t."; // N.v.t.
|
|
var nn_disc = oRs(api2.sqlfield_alias(model, "ins_discipline")).Value;
|
|
return model.module + " " + nn_disc + "/"+ model.total_disc;
|
|
};
|
|
function fnGroep(oRs, field, model)
|
|
{
|
|
var nn_grp = oRs(api2.sqlfield_alias(model, "fac_groep")).Value;
|
|
if (nn_grp > 0)
|
|
return nn_grp;
|
|
return "";
|
|
};
|
|
|
|
if (params.functie_key > 0 && params.groep_key > 0)
|
|
{
|
|
this.tablesql = "(SELECT *"
|
|
+ " FROM fac_groeprechten"
|
|
+ " WHERE fac_functie_key = " + params.functie_key
|
|
+ " AND fac_groep_key = " + params.groep_key
|
|
+ ") fac_groeprechten";
|
|
}
|
|
else if (params.functie_key > 0 && params.disc_key > 0)
|
|
{
|
|
this.tablesql = "(SELECT *"
|
|
+ " FROM fac_groeprechten"
|
|
+ " WHERE fac_functie_key = " + params.functie_key
|
|
+ " AND ins_discipline_key = " + params.disc_key
|
|
+ ") fac_groeprechten";
|
|
}
|
|
else if (params.functie_key > 0)
|
|
{
|
|
var sql = "SELECT fac_functie_module"
|
|
+ " , fac_functie_discipline"
|
|
+ " , (SELECT COUNT(*)"
|
|
+ " FROM ins_tab_discipline"
|
|
+ " WHERE ins_discipline_verwijder IS NULL"
|
|
+ " AND ins_discipline_module = fac_functie_module) nn_disc"
|
|
+ " FROM fac_functie"
|
|
+ " WHERE fac_functie_key = " + params.functie_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
this.module = oRs("fac_functie_module").Value;
|
|
this.hasdisc = oRs("fac_functie_discipline").Value == 1;
|
|
this.total_disc = oRs("nn_disc").Value;
|
|
oRs.Close();
|
|
this.tablesql = "(SELECT MIN(fac_groeprechten_key) fac_groeprechten_key,"
|
|
+ " fac_groep_key,"
|
|
+ " fac_functie_key,"
|
|
+ " COUNT(ins_discipline_key) nn_disc,"
|
|
+ " MIN(fac_gebruiker_prs_level_read) fac_gebruiker_prs_level_read,"
|
|
+ " MIN(fac_gebruiker_prs_level_write) fac_gebruiker_prs_level_write,"
|
|
+ " MIN(fac_gebruiker_alg_level_read) fac_gebruiker_alg_level_read,"
|
|
+ " MIN(fac_gebruiker_alg_level_write) fac_gebruiker_alg_level_write"
|
|
+ " FROM fac_groeprechten"
|
|
+ " WHERE fac_functie_key = " + params.functie_key
|
|
+ " GROUP BY fac_groep_key, fac_functie_key) fac_groeprechten";
|
|
this.record_title += " TODO Functie: " + params.functie_key;
|
|
{
|
|
this.fields["ins_discipline"] =
|
|
{
|
|
"dbs": "nn_disc",
|
|
"label": L("ins_discipline_key"),
|
|
"typ": "varchar",
|
|
val: fnFunctieDisc,
|
|
"hidden_fld": true
|
|
};
|
|
}
|
|
}
|
|
else if (params.groep_key > 0)
|
|
{
|
|
this.tablesql = "(SELECT MIN(fac_groeprechten_key) fac_groeprechten_key,"
|
|
+ " fac_groep_key,"
|
|
+ " g.fac_functie_key,"
|
|
+ " CASE"
|
|
+ " WHEN fac_functie_discipline = 1"
|
|
+ " THEN fac_functie_module || ' ' || "
|
|
+ " COUNT (g.ins_discipline_key) || '/'"
|
|
+ " || (SELECT COUNT ( * )"
|
|
+ " FROM ins_tab_discipline ia"
|
|
+ " WHERE ins_discipline_verwijder IS NULL"
|
|
+ " AND ia.ins_discipline_module = fac_functie_module)"
|
|
+ " END nn_disc,"
|
|
+ " MIN(fac_gebruiker_prs_level_read) fac_gebruiker_prs_level_read,"
|
|
+ " MIN(fac_gebruiker_prs_level_write) fac_gebruiker_prs_level_write,"
|
|
+ " MIN(fac_gebruiker_alg_level_read) fac_gebruiker_alg_level_read,"
|
|
+ " MIN(fac_gebruiker_alg_level_write) fac_gebruiker_alg_level_write"
|
|
+ " FROM fac_groeprechten g, fac_functie f"
|
|
+ " WHERE fac_groep_key = " + params.groep_key
|
|
+ " AND g.fac_functie_key = f.fac_functie_key"
|
|
+ " GROUP BY fac_groep_key, g.fac_functie_key, fac_functie_discipline, fac_functie_module) fac_groeprechten";
|
|
this.record_title += " TODO Groep: " + params.groep_key;
|
|
this.fields["ins_discipline"] =
|
|
{
|
|
"dbs": "nn_disc",
|
|
"label": L("ins_discipline_key"),
|
|
"typ": "varchar",
|
|
"hidden_fld": true
|
|
};
|
|
}
|
|
else // moet disc_key wel gevuld zijn
|
|
{
|
|
this.tablesql = "(SELECT MIN(fac_groeprechten_key) fac_groeprechten_key,"
|
|
+ " COUNT(fac_groep_key) nn_groep,"
|
|
+ " fac_functie_key,"
|
|
+ " ins_discipline_key,"
|
|
+ " MIN(fac_gebruiker_prs_level_read) fac_gebruiker_prs_level_read,"
|
|
+ " MIN(fac_gebruiker_prs_level_write) fac_gebruiker_prs_level_write,"
|
|
+ " MIN(fac_gebruiker_alg_level_read) fac_gebruiker_alg_level_read,"
|
|
+ " MIN(fac_gebruiker_alg_level_write) fac_gebruiker_alg_level_write"
|
|
+ " FROM fac_groeprechten"
|
|
+ " WHERE ins_discipline_key = " + params.disc_key
|
|
+ " GROUP BY ins_discipline_key, fac_functie_key) fac_groeprechten";
|
|
this.record_title += " TODO Disc: " + params.groep_key;
|
|
this.fields["fac_groep"] =
|
|
{
|
|
"dbs": "nn_groep",
|
|
"label": L("fac_groep_m"),
|
|
"typ": "number",
|
|
val: fnGroep,
|
|
"hidden_fld": true
|
|
};
|
|
}
|
|
|
|
this.list = {
|
|
"columns": [
|
|
"id",
|
|
"fac_functie",
|
|
"fac_groep",
|
|
"ins_discipline",
|
|
"prs_level_read",
|
|
"prs_level_write",
|
|
"alg_level_read",
|
|
"alg_level_write"
|
|
]
|
|
};
|
|
|
|
this.REST_GET = generic_REST_GET(this);
|
|
// this.REST_POST = generic_REST_POST(this);
|
|
// this.REST_PUT = generic_REST_PUT(this);
|
|
// this.REST_DELETE = generic_REST_DELETE(this);
|
|
}
|
|
|
|
|
|
/*
|
|
----------------------------
|
|
Page event open:
|
|
' We voegen de EXISTS hier aan dw sql toe omdat het invoegen van de session
|
|
' anders de fout"missing right parenthesis" geeft.
|
|
sSQL = sSQL & " AND EXISTS"&_
|
|
" (SELECT *"&_
|
|
" FROM fac_v_webgebruiker g"&_
|
|
" , fac_functie ff"&_
|
|
" WHERE ff.fac_functie_key = g.fac_functie_key"&_
|
|
" AND prs_perslid_key = " & Session("User_key")&_
|
|
" AND ( ff.fac_functie_code = 'WEB_PRSSYS'"&_
|
|
" OR ff.fac_functie_code = 'WEB_' || m.fac_module_name || 'MSU'"&_
|
|
" ))"
|
|
|
|
|
|
|
|
----------------------------
|
|
Page event customsecurity:
|
|
checkAutorisation("WEB_FACMSU")
|
|
|
|
----------------------------
|
|
Form event open:
|
|
' We voegen de EXISTS hier aan dw sql toe omdat het invoegen van de session
|
|
' anders de fout"missing right parenthesis" geeft.
|
|
sSQL = sSQL & " AND EXISTS"&_
|
|
" (SELECT *"&_
|
|
" FROM fac_v_webgebruiker g"&_
|
|
" , fac_functie ff"&_
|
|
" WHERE ff.fac_functie_key = g.fac_functie_key"&_
|
|
" AND prs_perslid_key = " & Session("User_key")&_
|
|
" AND ( ff.fac_functie_code = 'WEB_PRSSYS'"&_
|
|
" OR ff.fac_functie_code = 'WEB_' || m.fac_module_name || 'MSU'"&_
|
|
" ))"
|
|
|
|
*/
|
|
%> |