%@language = "javascript" %> <% /* $Revision$ $Id$ File: pda/reservering_new.asp Description: Add reservering (Mobile version) Parameters: rsv_ruimte_key voor bestaande deelreservering rsv_ruimte_key=-1 voor nieuwe (deel)reservering Note: */ %> <% REGISTERMENU_Disable = true; %> <% FCLTHeader.Requires({ js: ["./modernizr-3.3.0.custom.min.js"] }); FCLTHeader.Requires({ js: ["jquery.timepicker-table.js"], css: ["timePicker-table.css"] }); var urole = "fe"; var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1); var date_from = getQParamDate("date_from", null); var date_to = getQParamDate("date_to", null); var act_key = getQParamInt("act_key", -1); var bez_cnt = getQParamInt("bez_cnt", null); var loc_key = getQParamInt("loc_key", -1); var res_ruimte_key = getQParamInt("res_ruimte_key",-1); var qrc = getQParamInt("qrc", 0) != 0; autfunction = ("WEB_RESUSE"); var authparams = user.checkAutorisation(autfunction); var transitParam = buildTransitParam(["act_key", "date_from", "date_to", "bez_cnt", "loc_key", "loc_plaats", "res_ruimte_key"]); var transitParamExtern = buildTransitParam(["date_from", "date_to", "bez_cnt", "loc_plaats"]); var sql = "SELECT COALESCE(MIN(fac_gebruiker_alg_level_write), 9) writelevel" + " FROM fac_v_webgebruiker g, fac_functie f " + " WHERE g.fac_functie_key = f.fac_functie_key " + " AND f.fac_functie_code = " + safe.quoted_sql(autfunction) + " AND g.prs_perslid_key = " + user_key; var oRs = Oracle.Execute(sql); var autlevel = oRs("writelevel").Value; // Pas op: kan ook '0' zijn (regio) oRs.Close(); var subject = L("lcl_mobile_newreservering"); var curPage = 0; if (rsv_ruimte_key == -1) { if (!date_from && res_ruimte_key==-1) { curPage = 1; // geen parameters aanwezig. var srtact = getQParamInt("srtact", 1); // Vooralsnog alleen ruimte reserveringen. var sql = "SELECT res_srtactiviteit_metaantal" + " FROM res_srtactiviteit" + " WHERE res_srtactiviteit_key = " + srtact; var oRs = Oracle.Execute(sql); var toonBez = oRs("res_srtactiviteit_metaantal").value; oRs.Close(); // default begin en eindtijd var res_van = new Date().setFloatHours(S("res_t1") + 24, S("res_h")); // default morgen var res_tot = res_van.addFloatHours(S("res_dur"), S("res_h")); // Activiteiten var sql_a = "SELECT a.res_activiteit_key" + " , " + "CASE WHEN sa.res_srtactiviteit_prefix IS NULL" + " THEN ''" + " ELSE sa.res_srtactiviteit_prefix || '-'" + " END" + " || "+ lcl.xsqla("a.res_activiteit_omschrijving", "a.res_activiteit_key") + " , a.res_activiteit_duur" + " , a.res_activiteit_omsverplicht" + " , a.res_activiteit_aantalverplicht" + " FROM res_activiteit a" + " , res_srtactiviteit sa" + " WHERE res_activiteit_verwijder IS NULL" + " AND a.res_srtactiviteit_key = sa.res_srtactiviteit_key" + " AND sa.res_srtactiviteit_key = " + srtact + " AND sa.res_srtactiviteit_soort = 0" // restype = "R" + " AND EXISTS (SELECT res_activiteit_key" + " FROM res_activiteitdiscipline rad," + " ins_tab_discipline disc" + " , fac_v_my_disciplines md" + " WHERE rad.res_discipline_key = md.ins_discipline_key" + " AND md.prs_perslid_key = " + user_key + " AND md.fac_functie_code = " + safe.quoted_sql(autfunction) + " AND fac_gebruiker_alg_level_write < 9" + " AND fac_gebruiker_prs_level_write < 9" + " AND rad.res_discipline_key = disc.ins_discipline_key" + " AND rad.res_activiteit_key = a.res_activiteit_key" + " AND ins_discipline_verwijder IS NULL" + " AND ins_discipline_min_level = 3" // 1; Reserveerbaar object; 2; Verbruiksartikel; 3; Ruimte + " )" + " ORDER BY res_activiteit_volgnr" + " , sa.res_srtactiviteit_prefix" + " , UPPER(" + lcl.xsql('a.res_activiteit_omschrijving', 'a.res_activiteit_key') +")"; // Locaties (waar reserveerbare ruimten zijn binnen de scope van de user) var filtClause = getFiltClauseLocatie("RES"); var sql_l = "SELECT l.alg_locatie_key" + ", " + S("alg_loc_string") + " naam" + ", alg_locatie_plaats" + " FROM alg_v_aanweziglocatie l" + filtClause.from + " WHERE 1=1" + filtClause.where + " ORDER BY 2"; }; if (date_from && res_ruimte_key==-1) { curPage = 2; // verplicht: date_from: begin van reservering // act_key: activiteit // optioneel: bez_cnt: aantal bezoekers // loc_key: locatie key // res_tot: einde van reservering (niet meerdaags) var params = { loc: loc_key, loc_plaats: getQParam("loc_plaats", ""), forSelectRoom: true, res_van: date_from, res_tot: date_to, vis: bez_cnt, activiteit_key: act_key, with_satisfaction: true, authparams: user.checkAutorisation("WEB_RESUSE", null, null, true), // urole == "fe" en pessimistisch. ruimtecat: [] }; }; }; // Ik wil een reservering maken. Ik zie het volgende voor me: // // 1. Vraag een DATUM. Een datum is de minimale vereiste om te weten // 2. Optioneel kunnen er nog waarden opgegeven worden die van invloed zijn op de mogelijkheden. Deze zijn: // - capaciteit (hoeveel mensen moet er passen) // - locatie/regio (waar precies/ongeveer) // - begintijdstip (omstreeks) // // > Met die datum + filters vragen we kandidaatruimtes op aan de database (of via API) // // 3. De kandidaatruimtes worden getoond met voldoende info om een keuze te maken. Bijvoorbeeld // - gegroepeerd per locaties (indien meer dan 1/niet opgegeven) // - dan per ruimte een (1) vermelding rond het genoemde tijdstip // - met vermelding Beschikbaar van X to Y // ** indien Share&Meet: optie om het verzoek aan externe FACILITORs te vragen. // 4. Met een keuze uit deze opties is veel bepaald: // - ruimte // - datum (was al) // - aantal mensen (was al capaciteit, anders obv de default opstelling) // en kan nog aangefpast worden: // - tijd (de hele beschikbare periode) // en is nog nodig en in te vullen: // - een omschrijving en evt opmerking // - [later?] flexkenmerken // 5. Deze gegevens worden gesubmit tot een nieuwe reservering (via service) %>
<% FCLTMHeader.Generate({title: subject }); %>