<%@language = "javascript" %>
<% /*
     $Revision$
     $Id$

    File:        res_search_list.asp
    Description: Vangt de parameters van res_search op en verwerkt die in een aanroep van res_list
    Parameters:  urole
                 Alle zoek-criteria van res_search.asp
    Context:     Vanuit res_search.asp
    Note:        In beginsel komen alle parameters via POST (FParam) binnen
                 Enige uitzondering is urole en resnum: die mogen optioneel
                 ook via de querystring.
*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="res_list.inc" -->

<%
FCLTHeader.Requires({ css: [rooturl + "/appl/res/res.css"] });

var formString = Request.Form();
var urole = getFParamSafe("urole", getQParamSafe("urole", ""));   // Indien niet meegegeven, veronderstel dan frontend gebruik
var fronto = (urole == "fo");
var backo = (urole == "bo");
var minfo = (urole == "mi");
var frontend = (urole == "fe" || (!fronto && !backo && !minfo));

// FORM parameters: de waarde indien aanwezig, anders null
// Vaak is een lege selectie ook een -1, dus dan is-ie wel aanwezig, maar hoeft niet
// als filter te worden toegepast. Dan is null dus gelijk aan -1, qua betekenis,
// Vandaar dat een default van -1 ipv null ook mag
// In eerste instantie identificeren we elk veld gewoon 1-op-1.
var outputmode = getFParamInt("outputmode", 0); //  0 = screen, 1 = print, 2 = excel etc
var showall = getFParamInt("showall", 0) == 1;

var resourcetypes = getFParamIntArray("resourcetypes", [1]); /* 4 = Personenresource is exclusief gemaakt met personenmode */
if (resourcetypes.length > 1 && sharedIndexOf(4, resourcetypes) > -1)
    resourcetypes.splice(sharedIndexOf(4, resourcetypes), 1);

var params = { urole : urole,
               outputmode: outputmode,
               showall: showall,
               resourcetypes: resourcetypes
             }

var srtact = getFParamInt("srtact", -1);
if (srtact > 0)
    lcl.set_dialect(srtact, "RES_SRTACTIVITEIT_KEY");

var res_key = getFParamInt("resnum", getQParamInt("resnum", null, true), true); // relaxed

if (res_key > 0)
{
  params.res_key = (res_key != -1 ? res_key : null);
}
else
{
  var method = String(Request.ServerVariables("REQUEST_METHOD"));
  if (method != "POST")
  {
    __DoLog("Unexpected {0} request for this file?".format(method), "#FF0000");
    shared.internal_error("Unexpected {0} request for this file?".format(method));
  }

  // Alleen als res_key niet opgegeven is, zijn de resterende parameters van belang!
  var mld_key = getQParamInt("mld_key", -1); // filter op 'bij deze mld behorend'

  // Period from start-time until end-time
  // Indien geen datums meegegeven, dan huidige datum voor beide kalenders nemen anders duurt de query te lang.
  var datefrom = getFParamDate("date_from", null);
  var dateto = getFParamDate("date_to", null);

  // Voor velden die de user in kan typen valideren we zodanig dat we er tegen kunnen
  var reg_key_arr      = getFParamKeyArray("regiokey", []); // Regio
  var dist_key_arr     = getFParamKeyArray("districtkey", []); // District
  var loc_key_arr      = getFParamKeyArray("locatiekey", []);    // Locatie
  var bld_key_arr      = getFParamKeyArray("gebouwkey", []);
  var floor_key_arr    = getFParamKeyArray("verdiepingkey", []);
  var room_key_arr     = getFParamKeyArray("ruimtekey",    []); // ruimtes
  var act_key_arr      = getFParamKeyArray("act", []);
  var suppress_cont    = (getFParamInt("suppresscont", 0) == 1);
  var searchtext       = getFParam("searchtext", null);
  var requestor_key    = getFParamInt("sName_key", -1); // Aanvrager
  var host_key         = getFParamInt("sHost_key", -1);
  var dep_key          = getFParamInt("sDept_key", -1);
  var resstatus        = getFParamInt("resstatus", -1);
  var kp               = getFParam("kp", null);

  var roomcatalogue_key_arr = getFParamKeyArray("roomcatmulti", []); // Ruimte soort catalogus
  var obj_key_arr      = getFParamKeyArray("objcatmulti",  []); // Voorzieningen catalogus
  var art_key_arr      = getFParamKeyArray("artcatmulti",  []); // Verbruiksartikelen catalogus
  var article_arr      = getFParamKeyArray("artmulti",     []); // Verbruiksartikelen
  var artgroup         = getFParamArray("artgroup", ""); // Artikelgroep

  // FORM checkboxes
  // Parameters res_actual en res_deleted worden alleen doorgegeven indien fronto
  var res_actual       = (getFParamInt("res_actual", 0) == 1);
  var res_deleted      = (getFParamInt("res_deleted", 0) == 1);

  // Parameters res_open en res_closed worden alleen doorgegeven indien backo of minfo
  var res_open         = (getFParamInt("res_open", 0) == 1);
  var res_finished     = (getFParamInt("res_finished", 0) == 1);
  var res_closed       = (getFParamInt("res_closed", 0) == 1);
  // minimaal één van beiden moet aangekruist zijn
  if (!res_open && !res_finished && !res_closed)
    res_open = true;

  // Parameters res_approved en res_notapproved worden doorgegeven indien backo of minfo
  // Parameters res_approved en res_tobeapproved worden doorgegeven indien frontend
  var res_approved = (getFParamInt("res_approved", 0) == 1);
  var res_notapproved  = (getFParamInt("res_notapproved", 0) == 1);
  var res_tobeapproved = (getFParamInt("res_tobeapproved", 0) == 1);

  // Parameters roomcat, objcat en artcat worden alleen doorgegeven indien backo of minfo
  var roomcat          = (getFParamInt("roomcat", 0) == 1);
  var objcat           = (getFParamInt("objcat", 0) == 1);
  var artcat           = (getFParamInt("artcat", 0) == 1);
  // minimaal één categorie moet aangekruist zijn
  if (!roomcat && !objcat && !artcat)
    roomcat = true;

  // ** de velden van de form zijn nu allemaal bekend **

  params.mld_key          = (mld_key != -1 ? mld_key : null);
  params.datefrom         = datefrom;
  params.dateto           = dateto;
  params.reg_key_arr      = reg_key_arr;
  params.dist_key_arr     = dist_key_arr;
  params.loc_key_arr      = loc_key_arr;
  params.bld_key_arr      = bld_key_arr;
  params.floor_key_arr    = floor_key_arr;
  params.room_key_arr     = room_key_arr;
  params.act_key_arr      = act_key_arr;
  params.suppress_cont    = (backo || minfo? suppress_cont : null); // Wordt alleen gebruikt bij bo en mi
  params.srtact           = (srtact != -1? srtact : null);
  params.searchtext       = (searchtext != ""? searchtext : null);
  params.kp               = (kp != ""? kp : null);
  params.requestor_key    = (requestor_key != -1? requestor_key : null);
  params.host_key         = (host_key != -1? host_key : null);
  params.dep_key          = (dep_key != -1? dep_key : null);
  params.roomcatalogue_key_arr = roomcatalogue_key_arr;
  params.obj_key_arr      = obj_key_arr;
  params.art_key_arr      = art_key_arr;
  params.article_arr      = article_arr;
  params.artgroup         = (artgroup != "-1"? artgroup : null);
  params.resstatus        = (resstatus != -1? resstatus : null);
  // die condities hieronder moeten eens opgeruimd worden,
  // als je een parameter krijgt moet je die gebruiken en anders een defaultgedrag.
  params.roomcat          = (backo || minfo? roomcat : null); // Wordt alleen gebruikt bij bo en mi
  params.objcat           = (backo || minfo? objcat : null); // Wordt alleen gebruikt bij bo en mi
  params.artcat           = (backo || minfo? artcat : null); // Wordt alleen gebruikt bij bo en mi
  params.res_actual       = (fronto? res_actual : true); // Wordt alleen gebruikt bij fo
  params.res_deleted      = (fronto? res_deleted : false); // Wordt alleen gebruikt bij fo
  params.res_open         = (backo || minfo? res_open : null); // Wordt alleen gebruikt bij bo en mi
  params.res_finished     = (backo || minfo? res_finished : null); // Wordt alleen gebruikt bij bo en mi
  params.res_closed       = (backo || minfo? res_closed : null); // Wordt alleen gebruikt bij bo en mi
  params.res_approved     = (backo || minfo || frontend? res_approved : null); // Wordt alleen gebruikt bij bo en mi
  params.res_notapproved  = (backo || minfo || frontend? res_notapproved : null); // Wordt alleen gebruikt bij bo en mi
  params.res_tobeapproved = (frontend? res_tobeapproved : null); // Wordt alleen gebruikt bij frontend
  params.res_noshowonly   = (getFParam("res_noshowonly", "") == "on"); // Wordt alleen gebruikt bij bo en mi

  // Flags
  params.flags = [];
  for (flagkey=0; flagkey < S("res_reservering_flags"); flagkey++)
  {
    if (getFParam("flag" + flagkey, "off") == "on")
        params.flags.push(flagkey);
  }
}

var sortout = getFParamInt("sortout", -1); // Sortering
params.groupres = getFParamInt("groupby", -1); // Groepering
params.sortout = (sortout != -1? sortout : null);
if (getFParam("fnStep", ""))
    params.fnStep = "parent.fnStepPlanbord";

// ** nu volgt de verwerking
var autfunction = "";
switch(urole)
{
  case "fe": autfunction = "WEB_RESUSE";
             break;
  case "fo": autfunction = "WEB_RESFOF";
             break;
  case "bo": autfunction = "WEB_RESBOF";
             break;
  case "mi": autfunction = "WEB_RESBAC";
             break;
}

res_list(autfunction, params);
%><% ASPPAGE_END(); %>
