350 lines
14 KiB
Plaintext
350 lines
14 KiB
Plaintext
<%@ language = "JavaScript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: pda/mld_list.asp
|
|
Description: Toont een beknopte meldingenlijst voor op de pda, dat zijn de aan mij
|
|
geautoriseerde actieve meldingen op de plaats waar ik ben plus die zonder plaatsgegevens
|
|
Parameters: -
|
|
Context: -
|
|
|
|
Note: Gestripte versie van mld/mld_list.inc
|
|
|
|
*/
|
|
%>
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/discx3d.inc" -->
|
|
<!-- #include file="./resultset_table.inc" -->
|
|
<!-- #include file="../Shared/getkenmerksql.inc" -->
|
|
<!-- #include file="./mobile.inc" -->
|
|
<!-- #include file="./iface.inc" -->
|
|
<!-- #include file="../mld/mld.inc" -->
|
|
|
|
<%
|
|
perform=false; // ???? JGL: MLD.INC gebruikt deze illegaal globaal TODO!
|
|
frontend=false;
|
|
|
|
var ruimte_key = getQParamInt("ruimte_key", -1);
|
|
var res_ruimte_key = getQParamInt("res_ruimte_key", -1);
|
|
var ins_key = getQParamInt("ins_key", -1);
|
|
var self = getQParamInt("self", -1);
|
|
var status = getQParamIntArray("status", []);
|
|
|
|
var locatie_key = getQParamInt("locatie_key", user.alg_locatie_key({withcurrent:true})); // Locatie
|
|
var gebouw_key = getQParamInt("gebouw_key", user.alg_gebouw_key({withcurrent:true})); // Gebouw, kan -1 zijn, dan niet gebruiken
|
|
var verdieping_key = getQParamInt("verdieping_key", user.alg_verdieping_key({withcurrent:true}));
|
|
var qrc = getQParamInt("qrc", 0) != 0;
|
|
var meldbron_key = getQParamInt("meldbronkey", 7);
|
|
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // nieuwe melding vanuit een controletaak
|
|
|
|
var grp_sel = getQParam("grp", "");
|
|
|
|
var subject = L("lcl_mobile_meldingen");
|
|
var ruimteKeyArr = [];
|
|
|
|
// Reserveerbare ruimte: bepaal de alg_ruimte(s) en omschrijving
|
|
if (res_ruimte_key > -1 && ruimte_key == -1)
|
|
{
|
|
var sql = "SELECT res_ruimte_nr plaats "
|
|
+ " FROM res_ruimte"
|
|
+ " WHERE res_ruimte_key = " + res_ruimte_key
|
|
var oRs = Oracle.Execute(sql);
|
|
subject += " " + oRs("plaats").Value;
|
|
oRs.Close();
|
|
|
|
var sql = "SELECT alg_ruimte_key "
|
|
+ " FROM res_alg_ruimte rag"
|
|
+ " WHERE rag.res_ruimte_key = " + res_ruimte_key
|
|
+ " AND rag.res_alg_ruimte_verwijder IS NULL";
|
|
var oRs = Oracle.Execute(sql);
|
|
while (!oRs.eof) {
|
|
ruimte_key = oRs("alg_ruimte_key").value; // pak er maar eentje, meestal is het er maar een
|
|
ruimteKeyArr.push(oRs("alg_ruimte_key").value);
|
|
oRs.MoveNext();
|
|
}
|
|
oRs.Close();
|
|
}
|
|
// Gewone ruimte: bepaal de omschrijving
|
|
if (ruimte_key > -1 && res_ruimte_key == -1)
|
|
{
|
|
var sql = "SELECT aog.alg_plaatsaanduiding"
|
|
+ " FROM alg_v_onroerendgoed_gegevens aog"
|
|
+ " WHERE aog.alg_ruimte_key = " + ruimte_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
|
|
subject += " " + oRs("alg_plaatsaanduiding").Value;
|
|
oRs.Close();
|
|
}
|
|
// Object: bepaal de omschrijving
|
|
if (ins_key > -1)
|
|
{
|
|
var sql = " SELECT ins_deel_omschrijving"
|
|
+ " FROM ins_deel id"
|
|
+ " WHERE id.ins_deel_key = " + ins_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
subject += " " + oRs("ins_deel_omschrijving").Value;
|
|
oRs.Close();
|
|
}
|
|
|
|
// Wat zijn de criteria voor de meldingslijst?
|
|
// Standaard lopende meldingen (0,2,3,4,7)
|
|
var urole = getQParamSafe("urole", "bo");
|
|
var params = { urole: urole };
|
|
|
|
// Self overruled de setting S("mld_restrict_mobile_to_me").
|
|
if (self > -1)
|
|
{
|
|
if (self == 0 || ruimte_key > -1 || ins_key > -1)
|
|
{ // De actieve meldingen binnen scope (impliceert status 4|7).
|
|
if (status.length > 0)
|
|
{ // Er is/zijn (een) status(sen) meegegeven.
|
|
if (status.join(",").indexOf("0") >= 0) params.mldstpen = true; // Status "Pending(0)".
|
|
if (status.join(",").indexOf("2") >= 0) params.mldstnew = true; // Status "Ingevoerd(2)".
|
|
if (status.join(",").indexOf("3") >= 0) params.mldsting = true; // Status "Ingezien(3)".
|
|
if (status.join(",").indexOf("4") >= 0) params.mldstacc = true; // Status "Geaccepteerd(4)".
|
|
if (status.join(",").indexOf("7") >= 0) params.mldstuit = true; // Status "Uitgegeven(7)".
|
|
}
|
|
else
|
|
{
|
|
params.mldstacc = true; // Status "Geaccepteerd(4)".
|
|
params.mldstuit = true; // Status "Uitgegeven(7)".
|
|
}
|
|
}
|
|
else
|
|
{ // De actieve meldingen van mij (impliceert status 4|7).
|
|
params.behandel_key = user_key; // De meldingen waarvan ik de behandelaar ben.
|
|
params.mldstacc = true; // Status "Geaccepteerd(4)".
|
|
params.mldstuit = true; // Status "Uitgegeven(7)".
|
|
}
|
|
}
|
|
else if (S("mld_restrict_mobile_to_me") == 1 && ruimte_key == -1 && ins_key == -1)
|
|
{ // Alleen die actieve meldingen waarvan ik de behandelaar ben binnen scope.
|
|
// Dit is goed en logisch en handig voor de handymen.
|
|
// In hun actielijst, maar als ik de meldingen op een ruimte/object wil zien,
|
|
// vind ik (PF) dat niet logisch. Daarom: alleen als ik geen context meekreeg.
|
|
params.behandel_key = user_key;
|
|
params.mldstacc = true; // Status "Geaccepteerd(4)".
|
|
params.mldstuit = true; // Status "Uitgegeven(7)".
|
|
}
|
|
else
|
|
{ // De meldingen binnen scope (standaard lopende meldingen (0,2,3,4,7)).
|
|
params.mldstpen = true; // Status "Pending(0)".
|
|
params.mldstnew = true; // Status "Ingevoerd(2)".
|
|
params.mldsting = true; // Status "Ingezien(3)".
|
|
params.mldstacc = true; // Status "Geaccepteerd(4)".
|
|
params.mldstuit = true; // Status "Uitgegeven(7)".
|
|
}
|
|
|
|
autfunction = ["WEB_MLDBOF", "WEB_MLDBO2"];
|
|
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
|
|
var authparams = user.checkAutorisation(autfunction);
|
|
%>
|
|
<html>
|
|
<head>
|
|
<% FCLTMHeader.Generate({}); %>
|
|
</head>
|
|
<body>
|
|
<%
|
|
var sqln = "SELECT m.mld_melding_key"
|
|
+ " , m.mld_melding_einddatum"
|
|
+ " , mld_melding_status"
|
|
+ " , mld_melding_spoed"
|
|
+ " , mld_melding_omschrijving"
|
|
+ " , mld_melding_onderwerp"
|
|
+ " , DECODE(v.alg_plaatsaanduiding, '', DECODE (l.alg_locatie_omschrijving, '','',' ('||l.alg_locatie_omschrijving||')'), v.alg_plaatsaanduiding || DECODE(v.alg_plaatsomschrijving, '','' ,' (' || v.alg_plaatsomschrijving || ')'))"
|
|
+ " plaatsmelding"
|
|
+ " , CASE "
|
|
+ " WHEN COALESCE(sd.ins_srtdiscipline_prefix, '@') = '@'"
|
|
+ " THEN ''"
|
|
+ " ELSE sd.ins_srtdiscipline_prefix END ins_srtdiscipline_prefix"
|
|
+ " , " + lcl.xsqla('md.ins_discipline_omschrijving', 'md.ins_discipline_key')
|
|
+ " , " + lcl.xsqla('std.mld_stdmelding_omschrijving', 'std.mld_stdmelding_key');
|
|
|
|
// Voeg aan de sql het FROM en WHERE gedeelte toe
|
|
params.track_mldnew = false; // fac_tracking op MLDNEW niet gebruiken
|
|
sqln += mld.getfromwherelist_sql(autfunction, params);
|
|
|
|
sqln += " AND mld_melding_parentkey IS NULL"; // child-meldingen hoef ik mobiel niet te zien.
|
|
|
|
if (ruimte_key > -1 && ruimteKeyArr.length <= 1)
|
|
{
|
|
sqln += " AND (l.alg_locatie_key IS NULL OR v.alg_ruimte_key = " + ruimte_key + ")"; // PF: ik denk dat plaatsloze meldingen niet getoond hoeven worden als ruimtekey is gegeven, maar het staat er vast niet voor niks
|
|
}
|
|
if (ruimteKeyArr.length > 1)
|
|
{
|
|
sqln += " AND v.alg_ruimte_key IN (" + ruimteKeyArr.join(',') + ")";
|
|
}
|
|
if (ins_key > -1)
|
|
{
|
|
sqln += " AND m.mld_melding_key IN"
|
|
+ " (SELECT mld_melding_key FROM mld_melding_object WHERE mld_melding_object_verwijder IS NULL AND ins_deel_key = " + ins_key + ")";
|
|
}
|
|
if (ins_key == -1 && ruimte_key == -1 && ruimteKeyArr.length == 0) { // die lagere keys zijn sterker, ook als ik evt niet ter plaatse ben
|
|
if (gebouw_key > -1)
|
|
{
|
|
sqln += " AND (l.alg_locatie_key IS NULL OR v.alg_gebouw_key = " + gebouw_key + ")";
|
|
}
|
|
if (locatie_key > -1)
|
|
{
|
|
sqln += " AND (l.alg_locatie_key IS NULL OR l.alg_locatie_key = " + locatie_key + ")";
|
|
}
|
|
if (verdieping_key > -1)
|
|
{
|
|
sqln += " AND (l.alg_locatie_key IS NULL OR v.alg_verdieping_key = " + verdieping_key + ")";
|
|
}
|
|
}
|
|
// apply 3D authorization to the locations and to the organisations (both ALG and PRS)
|
|
sqln = "("
|
|
+ discx3d (sqln,
|
|
"md.ins_discipline_key",
|
|
"di.alg_regio_key",
|
|
"l.alg_district_key",
|
|
"l.alg_locatie_key",
|
|
"v.alg_gebouw_key",
|
|
"v.alg_verdieping_key",
|
|
"v.alg_ruimte_key",
|
|
"b.prs_bedrijf_key",
|
|
"b.prs_afdeling_key",
|
|
autfunction[0],
|
|
"",
|
|
2)
|
|
+ ") UNION ("
|
|
+ discx3d (sqln,
|
|
"md.ins_discipline_key",
|
|
"di.alg_regio_key",
|
|
"l.alg_district_key",
|
|
"l.alg_locatie_key",
|
|
"v.alg_gebouw_key",
|
|
"v.alg_verdieping_key",
|
|
"v.alg_ruimte_key",
|
|
"b.prs_bedrijf_key",
|
|
"b.prs_afdeling_key",
|
|
autfunction[1],
|
|
"",
|
|
2)
|
|
+ ")";
|
|
|
|
// Alleen groepering toepassen indien er 3 of meer vakgroepen zijn en meer dan 10 meldingen.
|
|
// Bepaal aantal vakgroepen en aantal meldingen.
|
|
var cnt_vakgr = 0; // Aantal vakgroepen.
|
|
var cnt_mld = 0; // Aantal meldingen.
|
|
var show_vakgroepen = false;
|
|
// PF: Dit is wel een hele dure query (net zo als de echte) die je wilt voorkomen wanneer het kan zeg!
|
|
// Bijvoorbeeld niet als ik specifieke parameters gebruik, maar liever nog minder vaak
|
|
if (ruimte_key == -1 && ins_key == -1) {
|
|
var sqln_count = "SELECT COUNT(ins_discipline_omschrijving) nr_vakgr"
|
|
+ " , ins_discipline_omschrijving vakgroep"
|
|
+ " FROM (" + sqln + ") rec2"
|
|
+ " GROUP BY ins_discipline_omschrijving";
|
|
var oRs = Oracle.Execute(sqln_count);
|
|
while (!oRs.eof)
|
|
{
|
|
cnt_vakgr++;
|
|
cnt_mld += oRs("nr_vakgr").Value;
|
|
oRs.MoveNext();
|
|
}
|
|
if (cnt_vakgr > 2 && cnt_mld > 10)
|
|
show_vakgroepen = true;
|
|
}
|
|
|
|
// PF: lijkt me ook niet altijd goed: wat is nou mogelijk zinvol?
|
|
sqln = "SELECT * FROM (" + sqln + ") rec2"
|
|
+ (grp_sel == ""
|
|
? ""
|
|
: " WHERE ins_discipline_omschrijving = " + safe.quoted_sql(grp_sel))
|
|
+ " ORDER BY"
|
|
+ (grp_sel == ""
|
|
? " ins_discipline_omschrijving,"
|
|
: "") // is dus al vertaald
|
|
+ (S("mld_bo_sort_descending") == 0
|
|
? " mld_melding_einddatum"
|
|
: " mld_melding_key DESC"); //ORDER BY mld_melding_key
|
|
|
|
function fnUrgentie(oRs)
|
|
{
|
|
var displ = "";
|
|
switch (oRs("mld_melding_spoed").Value)
|
|
{
|
|
case 1 : displ = "<i class='fa fa-fw fa-lg fa-exclamation-triangle' id='urg_kritiek1'> </i>"; break;
|
|
case 2: displ = "<i class='fa fa-fw fa-lg fa-exclamation-triangle' id='urg_hoog1'> </i>"; break;
|
|
//case 3: Normaal heeft geen plaatje.
|
|
case 4: displ = "<i class='fa fa-fw fa-lg fa-arrow-circle-o-down' id='urg_laag1'> </i>"; break;
|
|
case 5: displ = "<i class='fa fa-fw fa-lg fa-pause-circle-o' id='urg_hold1'> </i>"; break;
|
|
}
|
|
displ = (oRs("mld_melding_status").Value == 2? L("lcl_new") : "") + displ;
|
|
return displ;
|
|
}
|
|
|
|
function fncolLink(oRs)
|
|
{
|
|
var url = "";
|
|
if ((grp_sel == "") && show_vakgroepen)
|
|
{
|
|
url = "../pda/mld_list.asp?grp=" + safe.url(oRs("ins_discipline_omschrijving").Value)
|
|
+ (self > -1? "&self=" + self : "")
|
|
+ (status.length > 0? "&status=" + status.join(",") : "")
|
|
+ (ruimte_key > -1? "&ruimte_key=" + ruimte_key : "")
|
|
+ (ins_key > -1? "&ins_key=" + ins_key : "");
|
|
}
|
|
else
|
|
{
|
|
url = "../pda/melding.asp?mld_key=" + oRs("mld_melding_key").Value;
|
|
}
|
|
return url;
|
|
};
|
|
|
|
function fncolGroup(oRs)
|
|
{
|
|
return safe.html(oRs("ins_discipline_omschrijving").Value);
|
|
};
|
|
|
|
function fncolHeader(oRs)
|
|
{
|
|
return (oRs("ins_srtdiscipline_prefix").Value || "") + oRs("mld_melding_key").Value;
|
|
};
|
|
|
|
function fncolSubHeader(oRs)
|
|
{
|
|
return "<div class='listbodykop'>" + (oRs("plaatsmelding").Value? "<i class='fa fa-map-marker'></i> " + safe.html(oRs("plaatsmelding").Value) + "<br>" : "")
|
|
+ "<i class='fa fa-clock-o'></i> " + toDateTimeString(oRs("mld_melding_einddatum").Value, false, false, true) + "</div>"
|
|
+ (oRs("mld_melding_onderwerp").Value != null ? "<span class='subject'><i class='fa fa-chevron-right'></i> "+safe.html(oRs("mld_melding_onderwerp").Value) + "</span><br>" : "")
|
|
+ (oRs("mld_melding_omschrijving").Value? "<div class='listbodytext'>" + safe.html(shorttxt(oRs("mld_melding_omschrijving").Value, S("rs_mobile_maxchar"))) + "</div>" : "");
|
|
};
|
|
|
|
function fncolStatus(oRs)
|
|
{
|
|
var mldStatus = parseInt(oRs("mld_melding_status").Value);
|
|
var mld_status = mld.getmldstatustext(mldStatus);
|
|
|
|
return mld_status;
|
|
}
|
|
|
|
PAGE_START();
|
|
HEADER({title: subject,
|
|
back: !qrc,
|
|
addaction: "../pda/melding.asp?mld_key=-1" + (ins_key > -1? "&ins_key=" + ins_key : "") + (ruimte_key > -1? "&ruimte_key=" + ruimte_key : "") + "&meldbronkey=" + meldbron_key + (deelsrtcont_key>-1 ? "&deelsrtcont_key=" + deelsrtcont_key : "")});
|
|
CONTENT_START();
|
|
|
|
var rst = new ResultsetTable({sql: sqln,
|
|
keyColumn: "mld_melding_key",
|
|
groupColumn: (grp_sel == ""? fncolGroup : null),
|
|
groupSelect: show_vakgroepen? grp_sel : null,
|
|
linkColumn: fncolLink,
|
|
headerColumn: fncolHeader,
|
|
detailColumn: "mld_stdmelding_omschrijving",
|
|
asideColumn: fnUrgentie,
|
|
subheaderColumn: fncolSubHeader,
|
|
ID: "complainstable",
|
|
showAll: true
|
|
});
|
|
|
|
var cnt = rst.processResultset();
|
|
|
|
CONTENT_END();
|
|
FOOTER();
|
|
PAGE_END();
|
|
%>
|
|
</body>
|
|
</html>
|