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

    File:               pda/catering_looplijst.asp
    Description:        overzicht catering (vandaag) (Mobile version)
    Parameters:

    Note:
*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../res/res.inc" -->
<!-- #include file="../shared/data_recordset.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->

<%
FCLTHeader.Requires({ js: [rooturl+"/appl/res/res_plan.js"] });
var qrc = getQParamInt("qrc", 0) != 0;
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1);
var met = getQParamSafe("list", "cat");
var met_obj = (met == "obj");
var met_ops = (met == "ops");
var met_cat = !met_obj && !met_ops; // Default

var datum = new Date().midnight();

var urole = "bo";
// TODO: autorisatie controle

var subject = L("lcl_res_daglijst_titel") + " ";
if (met_obj) {
    subject += L("lcl_res_daglijst_voorzieningen");
} else if (met_cat) {
    subject += L("lcl_res_daglijst_catering");
} else if (met_ops) {
    subject += L("lcl_res_daglijst_opstelling");
}

function looplijst_sql(gebouw_key, datum, met_obj, met_cat, met_ops)
{
    var sql_rro = "SELECT ar.alg_ruimte_key"
                + "     , ro.res_ruimte_opstel_key"
                + "     , r.res_ruimte_nr"
                + "     , o.res_opstelling_omschrijving"
                + "  FROM res_ruimte_opstelling ro"
                + "     , res_opstelling o"
                + "     , res_ruimte     r"
                + "     , res_alg_ruimte ar"
                + " WHERE o.res_opstelling_key = ro.res_opstelling_key"
                + "   AND r.res_ruimte_key = ro.res_ruimte_key"
                + "   AND ar.res_ruimte_key = r.res_ruimte_key"
                + "   AND ar.res_alg_ruimte_verwijder IS NULL";

    var sql_obj = { select: " , voorz.res_rsv_deel_van  levertijd"
                          + " , TO_CHAR(voorz.res_rsv_deel_van, 'hh24:mi')  tijdstip"
                          + " , CASE WHEN LENGTH (voorzieningen) > 750"
                          + "        THEN SUBSTR (voorzieningen, 1, 75) || ' ...'"
                          + "        ELSE voorzieningen"
                          + "   END  acties"
                          + " , CASE WHEN INSTR(geleverd, 0) > 0"
                          + "        THEN 0"
                          + "        ELSE 1"
                          + "   END geleverd"
                  , from:   " , (  SELECT res_rsv_ruimte_key"
                          + "           , res_rsv_deel_van"
                          + "           , LISTAGG (voorziening, CHR (13) || CHR (10))"
                          + "              WITHIN GROUP (ORDER BY voorziening)"
                          + "                  AS Voorzieningen"
                          + "           , LISTAGG (levering, '')"
                          + "              WITHIN GROUP (ORDER BY levering)"
                          + "                  AS geleverd"
                          + "        FROM (SELECT rrd.res_rsv_ruimte_key"
                          + "                   , rrd.res_rsv_deel_van"
                          + "                   , rd.res_deel_omschrijving voorziening"
                          + "                   , CASE WHEN rrd.res_rsv_deel_geleverd IS NOT NULL"
                          + "                          THEN 1"
                          + "                          ELSE 0"
                          + "                     END  levering"
                          + "                FROM res_deel rd, res_rsv_deel rrd"
                          + "               WHERE rrd.res_rsv_deel_verwijder IS NULL"
                          + "                 AND rd.res_deel_key = rrd.res_deel_key"
                          + "                 AND rrd.res_rsv_ruimte_key IS NOT NULL"
                          + "                 AND rd.res_discipline_key IN"
                                            + "   (SELECT ins_discipline_key"
                                            + "      FROM fac_v_webgebruiker"
                                            + "     WHERE prs_perslid_key = " + user_key
                                            + "   )"
                          + "             )"
                          + "       GROUP BY res_rsv_ruimte_key"
                          + "              , res_rsv_deel_van"
                          + "   ) voorz"
                  , where:  " AND voorz.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key"
                          + " AND voorz.voorzieningen IS NOT NULL"
                  };

    var sql_cat = { select: " , cat.res_rsv_artikel_levering  levertijd"
                          + " , TO_CHAR(cat.res_rsv_artikel_levering, 'hh24:mi')  tijdstip"
                          + " , CASE WHEN LENGTH (cat.catering) > 750"
                          + "        THEN SUBSTR (cat.catering, 1, 75) || ' ...'"
                          + "        ELSE catering"
                          + "   END  acties"
                          + " , CASE WHEN INSTR(cat.geleverd, 0) > 0"
                          + "        THEN 0"
                          + "        ELSE 1"
                          + "   END geleverd"
                  , from:   " , (  SELECT res_rsv_ruimte_key"
                          + "           , res_rsv_artikel_levering"
                          + "           , LISTAGG (artikel, ', ')"
                          + "              WITHIN GROUP (ORDER BY artikel)"
                          + "                  AS catering"
                          + "           , LISTAGG (levering, '')"
                          + "              WITHIN GROUP (ORDER BY levering)"
                          + "                  AS geleverd"
                          + "        FROM (SELECT rra.res_rsv_ruimte_key"
                          + "                   , rra.res_rsv_artikel_levering"
                          + "                   , rra.res_rsv_artikel_aantal || ' x ' || ra.res_artikel_omschrijving  artikel"
                          + "                   , CASE WHEN rra.res_rsv_artikel_geleverd IS NOT NULL"
                          + "                          THEN 1"
                          + "                          ELSE 0"
                          + "                     END  levering"
                          + "                FROM res_artikel ra"
                          + "                   , res_rsv_artikel rra"
                          + "               WHERE rra.res_rsv_artikel_verwijder IS NULL"
                          + "                 AND ra.res_artikel_key = rra.res_artikel_key"
                          + "                 AND rra.res_rsv_ruimte_key IS NOT NULL"
                          + "                 AND ra.res_discipline_key IN"
                                            + "   (SELECT ins_discipline_key"
                                            + "      FROM fac_v_webgebruiker"
                                            + "     WHERE prs_perslid_key = " + user_key
                                            + "   )"
                          + "             )"
                          + "       GROUP BY res_rsv_ruimte_key"
                          + "              , res_rsv_artikel_levering"
                          + "   ) cat"
                  , where:  " AND cat.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key"
                          + " AND cat.catering IS NOT NULL"
                  };

    var sql_ops = { select: " , TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi') levertijd"
                          + " , TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi') tijdstip",
                      from: "",
                     where: " AND ops.res_opstelling_omschrijving IS NOT NULL"
                  };

    var sql = "SELECT DISTINCT"
            + "       TO_CHAR (rr.res_rsv_ruimte_van, 'yyyy-mm-dd') || rg.alg_gebouw_upper || TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi')  hide_f_srt"
            + "     , rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr  nr"
            + "     , rg.alg_locatie_key"
            + "     , rg.alg_gebouw_key"
            + "     , rg.alg_gebouw_naam  fclt_f_gebouw"
            + "     , rr.res_rsv_ruimte_van  datum"
            + "     , TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi')  begintijd"
            + "     , TO_CHAR (rr.res_rsv_ruimte_tot, 'hh24:mi')  eindtijd"
            + "     , COALESCE(ops.res_ruimte_nr"
            + "               ,rg.alg_gebouw_upper ||'-'|| rg.alg_verdieping_upper ||'-'|| rg.alg_ruimte_upper_nr ||' '|| rg.alg_ruimte_omschrijving"
            + "               )  fclt_f_ruimte"
            + "     , ops.res_opstelling_omschrijving  opstelling"
            + "     , rr.res_rsv_ruimte_bezoekers  aantal"
            + "     , rr.res_rsv_ruimte_omschrijving  omschrijving"
            + "     , rr.res_rsv_ruimte_key"
            +         (met_obj ? sql_obj.select : "")
            +         (met_cat ? sql_cat.select : "")
            +         (met_ops ? sql_ops.select : "")
            + "  FROM res_rsv_ruimte rr"
            + "     , (" + sql_rro + ") ops"
            + "     , alg_v_ruimte_gegevens rg"
            +         (met_obj ? sql_obj.from : "")
            +         (met_cat ? sql_cat.from : "")
            +         (met_ops ? sql_ops.from : "")
            + " WHERE rr.res_rsv_ruimte_verwijder IS NULL"
            + "   AND (rr.res_status_bo_key <> 5 OR rr.res_status_bo_key IS NULL)"
            + "   AND ops.res_ruimte_opstel_key(+) = rr.res_ruimte_opstel_key"
            + "   AND rg.alg_ruimte_key = COALESCE(rr.alg_ruimte_key, ops.alg_ruimte_key)"
            +         (met_obj ? sql_obj.where : "")
            +         (met_cat ? sql_cat.where : "")
            +         (met_ops ? sql_ops.where : "");

    var looplijst = "SELECT *"
                  + "  FROM (" + sql + ") x"
                  + " WHERE TRUNC(x.datum) = " + datum.toSQL()
                  + "   AND x.alg_gebouw_key = " + gebouw_key // Alleen het gebouw waar de gebruiker zich bevindt.
                  + " ORDER BY levertijd"
                  + "        , fclt_f_ruimte";

    return looplijst;
}


%>
<html>
  <head>
<%  FCLTMHeader.Generate({title:  subject }); %>

  </head>
  <body>
<%
    PAGE_START({id: "page-1-"+rsv_ruimte_key});
        HEADER({title: subject, back:!qrc, home: !qrc });
        CONTENT_START();
%>
        <form name="catloop"
              id="catering"
              action="../res/res_edit_objcat_save.asp?urole=fe&verynew=0&rsv_ruimte_key=<%=rsv_ruimte_key%>"
              method="post">
<%
            var gebouw_key = user.alg_gebouw_key({withcurrent:true});
            var sql = looplijst_sql(gebouw_key, datum, met_obj, met_cat, met_ops); // objecten of verbruiksartikelen

            function fncolLink(oRs) {
                var levertijd = new Date(oRs("levertijd").Value);
                if (met_obj) {
                    return "../pda/" + "catering.asp?urole=bo&met="+met+"&looplijst=1&rsv_ruimte_key=" + oRs("res_rsv_ruimte_key").Value + "&tijdstip=" + levertijd.getTime();
                } else if (met_ops) {
                    return "../pda/reservering.asp?rsv_ruimte_key=" + oRs("res_rsv_ruimte_key").Value;
                } else /* if (met_cat) */ {
                    return "../pda/" + "catering.asp?urole=bo&met="+met+"&looplijst=1&rsv_ruimte_key=" + oRs("res_rsv_ruimte_key").Value + "&tijdstip=" + levertijd.getTime();
                }
            }

            function fncolHeader(oRs) {
                return oRs("tijdstip").Value + " " + safe.html(oRs("fclt_f_ruimte").Value);
            }

            function fncolDetail(oRs) {
                return L("res_artikel_eindtijd") + ": " + oRs("eindtijd").Value;
            }

            function fncolaside(oRs) {
                if (!met_ops) {
                    return L("lcl_res_daglijst_geleverd") + ": " + (oRs("geleverd").Value == 1 ? L("lcl_Yes") : L("lcl_No"));
                }
            }

            function fncolSubHeader(oRs) {
                var actienaam, acties;
                if (met_obj) {
                    actienaam = L("lcl_res_daglijst_voorzieningen");
                    acties = oRs("acties").Value;
                } else if (met_ops) {
                    actienaam = L("lcl_res_daglijst_opstelling");
                    acties = oRs("opstelling").Value;
                } else /* if (met_cat) */ {
                    actienaam = L("lcl_res_daglijst_catering");
                    acties = oRs("acties").Value;
                }
                return actienaam + " " + safe.html(acties);
            }

            var rst = new ResultsetTable({
                sql: sql,
                ID: "catering_looplijst",
                linkColumn: fncolLink,
                headerColumn: fncolHeader,
                subheaderColumn: fncolSubHeader,
                detailColumn: fncolDetail,
                asideColumn: fncolaside,
                showAll: true
            });
            var cnt = rst.processResultset();
        IFACE.FORM_END();
%>
        </form>
<%
        CONTENT_END();
        FOOTER();
%>
    <script type="text/javascript">
        function start_cat(url)
        {
            window.location.href = url;
        }
    </script>
<%
    PAGE_END();
PDA_PAGE_END(); %>
	</body>
</html>
<% ASPPAGE_END(); %>
