Files
Facilitor/APPL/PDA/ins_deel.asp
2017-04-13 10:12:29 +00:00

274 lines
10 KiB
Plaintext

<%@ language = "JavaScript" %>
<% /*
$Revision$
$Id$
File: ins_deel.asp
Description: Details of an object (Mobile version) and access to actions on that object
If not authorised for this object we can forward to a "melding" on this object if stdmkina
Parameters: ins_key (bv via QRC)
stdmkina stdmeldingkey IF NOT AUTHORIZED,
-1/not defined = do not initiate a call if unauthorized
0 = initiate a unspecific (determined by configuration) call if unauthorized and authorized for MLDUSE
>0 = idem for that stdmeldingkey (rare)
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/discx3d.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="../mld/mld.inc" -->
<!-- #include file="../ins/ins.inc" -->
<!-- #include file="../ins/ins_flexkenmerk.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<%
var ins_key = getQParamInt("ins_key");
var qrc = getQParamInt("qrc", 0) != 0;
var stdmkina = getQParamInt("stdmkina", -1); //STDMeldingKeyIfNotAuthorized
var transitParam = buildTransitParam(["qrc", "tiny"]);
var this_ins = ins.func_enabled_deel(ins_key);
if (stdmkina == -1)
{
// geen alternatief aangegeven, dus wegwezen zonder rechten
user.auth_required_or_abort(this_ins.canReadAny);
}
else
{
// Als ik leesrechten heb dan gaan we (ook) gewoon door
// en laten we de objectdetails zien (met onderin de mogelijkheid voor melding)
// Als ik deze details niet mag zien, spring ik door naar het doen van een melding
if (this_ins.canReadAny)
{
// I am authorized, just go on (disregard stdmkina)
user.auth_required_or_abort(this_ins.canReadAny);
}
else
{ // ik mag niets zien, doorstarten
if (user.checkAutorisation( "WEB_MLDUSE", true)) {
// Dan laat maar een melding doen
var theURL = "./melding.asp?mld_key=-1&ins_key=" + ins_key + (stdmkina > 0 ? "&stdm_key="+stdmkina + transitParam : "");
Response.Redirect(theURL);
}
else {
// ik wil wel een melding starten maar ik heb daar helemaal geen rechten voor,
// dan alsnog evt. unauthorized
user.auth_required_or_abort(false);
}
}
}
var isResDeel = false;
var perslid_key_beh = -1;
var binding_text = 'unknown';
// Bepaal wat objectgegevens, specifiek ook de plaats (TODO: Terrein)
var sql = " SELECT id.ins_deel_omschrijving"
+ " , " + lcl.xsqla("sd.ins_srtdeel_omschrijving", "sd.ins_srtdeel_key")
+ " , id.ins_deel_opmerking"
+ " , id.ins_deel_key"
+ " , id.ins_srtdeel_key"
+ " , id.ins_deel_parent_key"
+ " , id.ins_alg_ruimte_type"
+ " , id.ins_alg_ruimte_key"
+ " , id.prs_perslid_key_beh"
+ " , id.ins_deel_verwijder"
+ " FROM ins_deel id"
+ " , ins_srtdeel sd"
+ " WHERE sd.ins_srtdeel_key = id.ins_srtdeel_key"
+ " AND id.ins_deel_key = " + ins_key;
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
var ins_deel_verwijderd = oRs("ins_deel_verwijder").value != null;
var ins_deel_omschrijving = oRs("ins_deel_omschrijving").Value;
var ins_srtdeel_omschrijving = oRs("ins_srtdeel_omschrijving").Value;
var ins_deel_opmerking = oRs("ins_deel_opmerking").Value;
var ins_srtdeel_key = oRs("ins_srtdeel_key").Value;;
var ins_parent_key = oRs("ins_deel_parent_key").Value || -1;
var ruimte_type = oRs("ins_alg_ruimte_type").Value;
var ruimte_key = oRs("ins_alg_ruimte_key").Value;
var subject = ins_srtdeel_omschrijving+ " " +ins_deel_omschrijving;
perslid_key_beh = oRs("prs_perslid_key_beh").Value || -1;
var plaats_afdeling = ins.getBindingItemString(ruimte_type, ruimte_key, ins_parent_key);
switch (ruimte_type)
{
case 'R':
binding_text = L("lcl_obj_bind_r");
break;
case 'T':
binding_text = L("lcl_obj_bind_t");
break;
case 'W':
binding_text = L("lcl_obj_bind_w");
break;
case 'P':
binding_text = L("lcl_obj_bind_p");
break;
case 'A':
binding_text = L("lcl_obj_bind_a");
break;
case 'C':
binding_text = L("lcl_obj_bind_c");
break;
}
// Haal nog wat gegevens over de parent op als het een onderdeel is.
var parent = "";
if (ins_parent_key > -1)
{
var psql = "SELECT id.ins_deel_omschrijving"
+ " , " + lcl.xsqla('sd.ins_srtdeel_omschrijving', 'sd.ins_srtdeel_key')
+ ", ins_deel_parent_key"
+ " FROM ins_deel id"
+ " , ins_srtdeel sd"
+ " WHERE id.ins_srtdeel_key = sd.ins_srtdeel_key"
+ " AND id.ins_deel_key = " + ins_parent_key;
var pRs = Oracle.Execute(psql);
parent = pRs("ins_srtdeel_omschrijving").Value + " "
+ pRs("ins_deel_omschrijving").Value;
pRs.Close();
}
}
oRs.Close();
%>
<html>
<head>
<% FCLTMHeader.Generate({title: subject}); %>
</head>
<body>
<%
PAGE_START();
HEADER({title: subject, back:!qrc, home: !qrc});
CONTENT_START();
if (ins_deel_verwijderd)
{
%> <div class="ins_deleted"><%=L("lcl_ins_is_deleted")%></div><%
}
if (ins_parent_key > -1)
{
ROFIELD("fld", L("lcl_ins_parentobject"), parent);
}
// zit al in de titel: ROFIELD("fld", L("lcl_obj_identification"), ins_deel_omschrijving);
ROFIELD("fld", L("lcl_ins_opmerking"), ins_deel_opmerking, {suppressEmpty: true});
ROFIELD("fld", binding_text, plaats_afdeling);
if (perslid_key_beh > -1)
{
var prs_melder = new Perslid(perslid_key_beh);
ROFIELD("fld", L("lcl_ins_manager"), prs_melder.naam());
}
// Plus flexkenmerken
generateFlexKenmerkBlock({
fnpre : function () { BLOCK_START({collapsed: true, title: L("lcl_flexible_properties")}); },
fnpost : BLOCK_END,
urole: "fe",
ins_key: ins_key,
srtdeel_key: ins_srtdeel_key,
reado: true,
mobile: true
});
// Heeft deel ook onderdelen?
var sql = "SELECT COUNT(*)"
+ " FROM ins_v_aanwezigonderdeel"
+ " WHERE ins_deel_parent_key = " + ins_key;
oRs = Oracle.Execute(sql);
hasOnderdelen = (oRs(0).Value > 0);
// Inspecties mogelijk op dit object?
var sql = "SELECT COUNT(*)"
+ " FROM ins_srtcontrole isc,"
+ " ins_deel d,"
+ " ins_srtdeel sd"
+ " WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key"
+ " AND ins_deel_key = " + ins_key
+ " AND ( isc.ins_srtcontrole_niveau = 'S' AND isc.ins_srtinstallatie_key = d.ins_srtdeel_key"
+ " OR isc.ins_srtcontrole_niveau = 'G' AND isc.ins_srtinstallatie_key = sd.ins_srtgroep_key"
+ " OR isc.ins_srtcontrole_niveau = 'D' AND isc.ins_srtinstallatie_key = d.ins_discipline_key"
+ " )"
oRs = Oracle.Execute(sql);
canInspect = (oRs(0).Value > 0);
//TODO-AUTH: mag ik deze soort (hier) inspecteren?
sql = "SELECT res_deel_key FROM res_deel "
+ " WHERE res_deel_verwijder IS NULL"
+ " AND res_ins_deel_key = " + ins_key;
oRs = Oracle.Execute(sql);
if (!oRs.eof) {
isResDeel = true;
}
oRs.Close();
//TODO-AUTH: mag ik deze soort (hier) reserveren?
CONTROLGROUP_START()
if (canInspect) {
BUTTON(L("lcl_mobile_inspecties"), {linkid: "./ins_inspect.asp?ins_key="+ins_key + transitParam, dataicon: "search", dataajax: 'false'});
}
if (isResDeel) { // Zoiets
BUTTON(L("lcl_mobile_reserveringen"), {linkid: "./reserveringen.asp?ins_key="+ins_key + transitParam, dataicon: "grid", dataajax: 'false'});
}
if (hasOnderdelen) {
BUTTON(L("lcl_subobjects"), {linkid: "./ins_list.asp?ins_parent_key="+ins_key + transitParam, dataicon: "gear", dataajax: 'false'});
}
trackinglines = mobile.hastrackingpage('deel', ins_key);
if (trackinglines>0) {
BUTTON(L("lcl_history"), {linkid: "#ins-2-"+ins_key, dataicon: "bullets", transition: "pop", datarel: "dialog"});
}
if (user.checkAutorisation( "WEB_MLDUSE", true)) {
var tsql = "SELECT COUNT(m.mld_melding_key)"
+ " FROM mld_melding_object mo, mld_melding m"
+ " WHERE mo.mld_melding_object_verwijder IS NULL"
+ " AND mo.mld_melding_key = m.mld_melding_key"
+ " AND m.mld_melding_status IN (0, 2, 3, 4, 7)" // lopende meldingen
+ " AND mo.ins_deel_key = " + ins_key;
var toRs = Oracle.Execute(tsql);
if (toRs(0).Value == 0)
{ // Geen, dan moet ik dus willen toevoegen.
// Dan moet er wel een srtdiscipline getoond kunnen worden.
var mySRTsql = mld.srtdisc_sql("WEB_MLDUSE", { ins_key: ins_key });
var sql = "SELECT MIN(ins_srtdiscipline_key) ins_srtdiscipline_key"
+ " , COUNT(DISTINCT ins_srtdiscipline_key) aantal"
+ " FROM (" + mySRTsql + ")";
var oRs = Oracle.Execute(sql);
if (oRs("aantal").Value > 0)
BUTTON(L("lcl_mobile_newmelding"), {linkid: "./melding.asp?mld_key=-1&ins_key=" + ins_key + transitParam, dataicon: "plus", dataajax: 'false'});
oRs.Close();
}
else if (toRs(0).Value > 0 && user.checkAutorisation( "WEB_MLDBOF", true))
{
BUTTON(L("lcl_mobile_meldingen") + " (" + toRs(0).Value + ")", {linkid: "./mld_list.asp?ins_key=" + ins_key + transitParam, dataicon: "alert"});
}
}
CONTROLGROUP_END()
CONTENT_END();
FOOTER();
PAGE_END();
if (trackinglines>0) {
PAGE_START({id: "ins-2-"+ins_key})
mobile.trackingpage('deel', ins_key, subject);
PAGE_END();
}
%>
</body>
</html>