<% /* $Revision$ $Id$ File: alg.inc Status: Description: defines usefull functions (both serverside and clientside) Globals defined: Context: Note: Met betrekking tot werkplekken: ALGUSE schrijfrechten==>je mag PRS_WERKPLEK records aanmaken/muteren/verwijderen PRSBOF schrijfrechten==>je mag PRS_PERSLIDWERKPLEK records aanmaken/muteren/verwijderen en/of PRS_RUIMTEAFDELING records Met betrekking tot ruimtes ALGMAN schrijfrechten==>je mag ALG_RUIMTE records aanmaken etc. ALGUSE schrijfrechten==>je mag flexkenmerken boven de 100 en afhankelijk van <<== werkt nog niet S("alg_ruimtenr_aut_use") ook nog ruimtenummer/omschrijving PAS OP: De diverse canWriteRegio etc. functies heten eigenlijk verkeerd. RegioInScope etc. zou een beel betere benaming zijn geweest */ alg = { // merk op: ALGMAN heeft geen PRS-scope, ALGUSE wel maar die negeren we checkAutorisation: function (isOptional) { var autfunction = "WEB_ALGMAN"; var authparams = user.checkAutorisation(autfunction, true); if (authparams) { var mALGreadlevel = authparams.ALGreadlevel; var mALGwritelevel = authparams.ALGwritelevel; } else { var mALGreadlevel = 9; var mALGwritelevel = 9; } var autfunction = "WEB_ALGUSE"; var authparams = user.checkAutorisation(autfunction, isOptional); if (authparams) { var uALGreadlevel = authparams.ALGreadlevel; var uALGwritelevel = authparams.ALGwritelevel; } else { var uALGreadlevel = 9; var uALGwritelevel = 9; } // From now use the highest authorisations (lowest values) var ALGreadlevel = mALGreadlevel < uALGreadlevel? mALGreadlevel : uALGreadlevel ; var ALGwritelevel = mALGwritelevel < uALGwritelevel? mALGwritelevel: uALGwritelevel; return ({ALGreadlevel: ALGreadlevel, ALGwritelevel: ALGwritelevel, mALGreadlevel: mALGreadlevel, mALGwritelevel: mALGwritelevel, uALGreadlevel: uALGreadlevel, uALGwritelevel: uALGwritelevel }); }, func_enabled: function alg_func_enabled (alg_key, onrgoedlvl) { if (alg_key < 0 || onrgoedlvl == "G" || onrgoedlvl == "T" || onrgoedlvl == "V" || onrgoedlvl == "R") { var rresult = user.func_enabled("ALG", null, // geen disciplines alg_key, null); // nooit prs-scope rresult.readman = rresult.canRead (onrgoedlvl == "T"?"WEB_TERMAN":"WEB_ALGMAN"); rresult.writeman = rresult.canWrite(onrgoedlvl == "T"?"WEB_TERMAN":"WEB_ALGMAN"); if (onrgoedlvl != "T") { rresult.readuse = rresult.canRead ("WEB_ALGUSE"); rresult.writeuse = rresult.canWrite("WEB_ALGUSE"); } } else // iets meer werk { var rresult = user.func_enabled("ALG", null, // geen disciplines null, // deze werkt niet voor alg_key van regio's, districten en locaties null); // nooit prs-scope var sql= "SELECT -1 FROM DUAL"; // hoe 'ver' weg is alg_key? switch (onrgoedlvl) { case "L": sql = "SELECT MAX(niveau) FROM fac_v_my_locations " + "WHERE prs_perslid_key = " + user_key + " AND alg_locatie_key = " + alg_key; break; case "D": sql = "SELECT MAX(niveau) FROM fac_v_my_districts " + "WHERE prs_perslid_key = " + user_key + " AND alg_district_key = " + alg_key; break; case "RG": sql = "SELECT MAX(niveau) FROM fac_v_my_regions " + "WHERE prs_perslid_key = " + user_key + " AND alg_regio_key = " + alg_key; break; } var oRs = Oracle.Execute(sql); var level = (oRs(0).Value==null)?-1:oRs(0).Value; oRs.Close(); rresult.readman = rresult.authparams("WEB_ALGMAN").ALGreadlevel <= level; rresult.writeman = rresult.authparams("WEB_ALGMAN").ALGwritelevel <= level; rresult.readuse = rresult.authparams("WEB_ALGUSE").ALGreadlevel <= level; rresult.writeuse = rresult.authparams("WEB_ALGUSE").ALGwritelevel <= level; } return rresult; }, canWriteRegio: function (pregio_key, pniveau) { if (pniveau <= -1) { return true; } else { var sql = "SELECT alg_regio_key FROM fac_v_my_regions " + "WHERE prs_perslid_key = " + user_key + " AND alg_regio_key = " + pregio_key + " AND niveau = " + pniveau; var oRs = Oracle.Execute(sql); var res = !oRs.eof; oRs.Close(); return (res); } }, canWriteDistrict: function (pdistrict_key, pniveau) { if (pniveau <= -1) { return true; } else { var sql = "SELECT alg_district_key FROM fac_v_my_districts " + "WHERE prs_perslid_key = " + user_key + " AND alg_district_key = " + pdistrict_key + " AND niveau = " + pniveau; var oRs = Oracle.Execute(sql); var res = !oRs.eof; oRs.Close(); return (res); } }, canWriteLocatie: function (plocatie_key, pniveau) { if (pniveau <= -1) { return true; } else { var sql = "SELECT alg_locatie_key FROM fac_v_my_locations " + "WHERE prs_perslid_key = " + user_key + " AND alg_locatie_key = " + plocatie_key + " AND niveau = " + pniveau; var oRs = Oracle.Execute(sql); var res = !oRs.eof; oRs.Close(); return (res); } }, canWriteGebouw: function (pgebouw_key, pniveau) { if (pniveau <= -1) { return true; } else { var sql = "SELECT alg_gebouw_key FROM fac_v_my_buildings " + "WHERE prs_perslid_key = " + user_key + " AND alg_gebouw_key = " + pgebouw_key + " AND niveau = " + pniveau; var oRs = Oracle.Execute(sql); var res = !oRs.eof; oRs.Close(); return (res); } }, canWriteVerdieping: function (pverdieping_key, pniveau) { if (pniveau <= -1) { return true; } else { var sql = "SELECT alg_verdieping_key FROM fac_v_my_floors " + "WHERE prs_perslid_key = " + user_key + " AND alg_verdieping_key = " + pverdieping_key + " AND niveau = " + pniveau; var oRs = Oracle.Execute(sql); var res = !oRs.eof; oRs.Close(); return (res); } }, canWriteRuimte: function (pruimte_key, pniveau) { if (pniveau <= -1) { return true; } else { var sql = "SELECT alg_ruimte_key FROM fac_v_my_rooms " + "WHERE prs_perslid_key = " + user_key + " AND alg_ruimte_key = " + pruimte_key + " AND niveau = " + pniveau var oRs = Oracle.Execute(sql); var res = !oRs.eof; oRs.Close(); return (res); } }, alg_gebouwinfo: function _alg_gebouw(alg_gebouw_key) { var sql = "SELECT g.alg_gebouw_naam" + ", g.alg_gebouw_code" + ", g.alg_gebouw_omschrijving" + ", g.alg_srtgebouw_key" + ", g.prs_kostenplaats_key" + ", g.mld_adres_key" + ", g.alg_gebouw_opmerking" + ", g.alg_gebouw_ordernr" + ", g.alg_gebouw_bez" + ", g.alg_locatie_key" + ", k.prs_kostenplaats_module" + ", " + S("prs_kpn_string") + " kpstring" + ", " + S("prs_pers_string") + " budgethouder" + ", p.prs_perslid_key" + " FROM alg_gebouw g" + ", prs_kostenplaats k" + ", prs_perslid p" + " WHERE g.prs_kostenplaats_key = k.prs_kostenplaats_key" + " AND k.prs_perslid_key = p.prs_perslid_key" + " AND g.alg_gebouw_key = " + alg_gebouw_key; var oRs = Oracle.Execute(sql); var result = {}; if (!oRs.eof) { result = { alg_gebouw_key: alg_gebouw_key, alg_gebouw_naam: oRs("alg_gebouw_naam").value, alg_gebouw_code: oRs("alg_gebouw_code").value, alg_gebouw_omschrijving: oRs("alg_gebouw_omschrijving").value, alg_srtgebouw_key: oRs("alg_srtgebouw_key").value, alg_kostenplaats_key: oRs("prs_kostenplaats_key").value, mld_adres_key: oRs("mld_adres_key").value, alg_gebouw_opmerking: oRs("alg_gebouw_opmerking").value, alg_gebouw_ordernr: oRs("alg_gebouw_ordernr").value, alg_gebouw_bez: oRs("alg_gebouw_bez").value == "1", alg_locatie_key: oRs("alg_locatie_key").value, kostenplaats_omschrijving: oRs("kpstring").value, kostenplaats_module: oRs("prs_kostenplaats_module").value, kostenplaats_budgethouder_key: oRs("prs_perslid_key").value, kostenplaats_budgethouder: oRs("budgethouder").value }; } oRs.Close(); return result; }, alg_terreinsectorinfo: function _alg_terreinsector(alg_terreinsector_key) { var sql = "SELECT g.alg_terreinsector_naam" + ", g.alg_terreinsector_code" + ", g.alg_terreinsector_omschrijving" + ", g.alg_srtterreinsector_key" + ", g.prs_kostenplaats_key" + ", g.alg_terreinsector_ordernr" + ", g.alg_locatie_key" + ", k.prs_kostenplaats_module" + ", " + S("prs_kpn_string") + " kpstring" + ", " + S("prs_pers_string") + " budgethouder" + ", p.prs_perslid_key" + " FROM alg_terreinsector g" + ", prs_kostenplaats k" + ", prs_perslid p" + " WHERE g.prs_kostenplaats_key = k.prs_kostenplaats_key" + " AND k.prs_perslid_key = p.prs_perslid_key" + " AND g.alg_terreinsector_key = " + alg_terreinsector_key; var oRs = Oracle.Execute(sql); var result = {}; if (!oRs.eof) { result = { alg_terreinsector_key: alg_terreinsector_key, alg_terreinsector_naam: oRs("alg_terreinsector_naam").value, alg_terreinsector_code: oRs("alg_terreinsector_code").value, alg_terreinsector_omschrijving: oRs("alg_terreinsector_omschrijving").value, alg_srtterreinsector_key: oRs("alg_srtterreinsector_key").value, alg_kostenplaats_key: oRs("prs_kostenplaats_key").value, alg_terreinsector_ordernr: oRs("alg_terreinsector_ordernr").value, alg_locatie_key: oRs("alg_locatie_key").value, kostenplaats_omschrijving: oRs("kpstring").value, kostenplaats_module: oRs("prs_kostenplaats_module").value, kostenplaats_budgethouder_key: oRs("prs_perslid_key").value, kostenplaats_budgethouder: oRs("budgethouder").value }; } oRs.Close(); return result; }, func_enabled_ruimte: // Wat mag ik zoal op deze specifieke ruimte? function _func_enabled_ruimte(pruimte_key) // kan ook gebruikt worden met verdieping_key { // WEB_PRSBOF is onderdeel van de PRS module var aresult = user.func_enabled("PRS", -1, // ins_discipline_key pruimte_key, // alg_key user_key, // prs_key false, // checkOptimistic true); // isOptional aresult.canPRSBOFwrite = aresult.canWrite("WEB_PRSBOF"); // werkplekbeheer return aresult; } } %>