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

    File:        pda/ins_inspect_list.asp
    Description: Toont een beknopte inspectielijst voor op de pda
    Parameters:  -
    Context:     -
    Note:        -
*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/discxalg3d.inc" -->
<!-- #include file="../Shared/discx3d.inc" -->
<!-- #include file="../INS/ins.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<!-- #include file="../Shared/dienstselector.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../ins/ins_inspect_list.inc" -->

<%
var autfunction = "WEB_INSUSE";
var authparams = user.checkAutorisation(autfunction);

var urole = getQParamSafe("urole", "fe");

var ins_key = getQParamInt("ins_key", -1);
var isPeriodiekeTaken = (ins_key == -1);
var locatie_key = getQParamInt("locatie_key", user.alg_locatie_key({withcurrent: true})); // Locatie
var gebouw_key = getQParamInt("gebouw_key", user.alg_gebouw_key({withcurrent: true})); // Gebouw, kan -1 zijn, dan niet gebruiken
var verdieping_key = getQParamInt("verdieping_key", user.alg_verdieping_key({withcurrent: true}));
var ruimte_key = getQParamInt("ruimte_key", -1);
var ins_srtgroep_key = getQParamInt("ins_srtgroep_key", -1);

var grp_sel = getQParam("grp", "");
var qrc = getQParamInt("qrc", 0) != 0;

// Gestarte/begonnen en ter uitvoering staande inspecties (status 2 en 3).
var inspDone = getQParamInt("has_insInspDone", 0) == 1 // Ben ik meegegeven?
                ? getQParamSafe("insInspDone", "off") == "on" // Neem dan mijn meegegeven waarde
                : false; // Anders default uitgevinkt

// Gestarte/begonnen en ter uitvoering staande inspecties (status 2 en 3).
var inspBusy = !inspDone &&
                getQParamInt("has_insInspBusy", 0) == 1 // Ben ik meegegeven?
                 ? getQParamSafe("insInspBusy", "off") == "on" // Neem dan mijn meegegeven waarde
                 : true; // Anders default aangevinkt

// Afgemelde inspecties (status 5). Actie vereist.
var inspClosed = !inspDone &&
                  getQParamInt("has_insInspClosed", 0) == 1 // Ben ik meegegeven?
                   ? getQParamSafe("insInspClosed", "off") == "on" // Neem dan mijn meegegeven waarde
                   : true; // Anders default aangevinkt

// Binnenkort. Zonder begindatum is te laat + binnenkort. Zonder einddatum is binnenkort + toekomst'
var inspSoon = !inspDone &&
                getQParamInt("has_insInspSoon", 0) == 1 // Ben ik meegegeven?
                 ? getQParamSafe("insInspSoon", "off") == "on" // Neem dan mijn meegegeven waarde
                 : true; // Anders default aangevinkt

var soondate = new Date(new Date().setDate(new Date().getDate() + S("ins_inspect_soon_days")));
var inspsoonfrom = getQParamDate("inspsoon_from", null); // Periode van
var inspsoonto = getQParamDate("inspsoon_to", soondate); // Perdiode tot
var donedatefrom = getQParamDate("donedate_from", null); // Periode van
var donedateto = getQParamDate("donedate_to", null); // Perdiode tot

var dienst_key = getQParamInt("dienst_key", -1);

var params = { inspect: true,
               mobile: true,
               dienst_key: dienst_key, // Dienst.
               loc_key_arr: locatie_key > 0? [locatie_key] : [],
               bld_key_arr: gebouw_key > 0? [gebouw_key] : [],
               flr_key_arr: verdieping_key > 0? [verdieping_key] : [],
               room_key_arr: ruimte_key > 0? [ruimte_key] : [],
               insgroup_key_arr: ins_srtgroep_key > 0? [ins_srtgroep_key] : [],
               inspSoon: inspSoon, // Laat alle inspecties zien die binnenkort gedaan moeten worden.
               inspClosed: inspClosed, // Vervolgactie vereist. Inspectie is gereed gemeld(5) en moet worden afgerond.
               inspBusy: inspBusy, // Onderhanden. Inspectie is gestart(2) of ter uitvoering(3) en moet worden gereed gemeld of afgerond.
               inspDone: inspDone,
               insObjIncl: true, // Ook onderdelen (nu default aan).
               expObjIncl: false,
               inspsoonfrom: inspsoonfrom,
               inspsoonto: inspsoonto,
               donedatefrom: donedatefrom,
               donedateto: donedateto
             };

var subject = L("lcl_mobile_planned_act")
if (isPeriodiekeTaken)
{
  if (ruimte_key > -1)
  {
    var sql = "SELECT aog.alg_gebouw_code || '-' || aog.alg_verdieping_code || '-' || aog.alg_ruimte_nr plaats"
            + "  FROM alg_v_onroerendgoed_gegevens aog"
            + " WHERE aog.alg_ruimte_key = " + ruimte_key;
    var oRs = Oracle.Execute(sql);
    subject += " " + oRs("plaats").Value;
    oRs.Close();
  }
  else
  {
    subject += " " + CurrentPosition;
  }
}
else
{ // vanuit ins_deel, dus de inspecties op dit deel.
  var sql = "SELECT d.ins_deel_omschrijving"
          + "     , d.ins_deel_opmerking"
          + "     , s.ins_srtdeel_omschrijving"
          + "  FROM ins_deel d"
          + "     , ins_srtdeel s"
          + " WHERE d.ins_srtdeel_key = s.ins_srtdeel_key"
          + "   AND d.ins_deel_key = " + ins_key;
  var oRs = Oracle.Execute(sql);
  var deel_oms = oRs("ins_deel_omschrijving").Value;
  var deel_opm = oRs("ins_deel_opmerking").Value;
  var srtd_oms = oRs("ins_srtdeel_omschrijving").Value;
  subject = srtd_oms + " " + deel_oms;
  oRs.Close();
}
%>

<html>
  <head>
<%  FCLTMHeader.Generate({}); %>
    <script>

      function onClickDone() {
        if (document.getElementById("insInspDone").checked)
        {
          $("[id^=donedate_]").closest("div").show();
          $("[id^=inspsoon_]").closest("div").hide();
          $("#insInspBusy, #insInspClosed, #insInspSoon").closest(".<%=MOBILE_UI_CLASSES.checkbox_wrapper.replace(/^\s*/, "")%>").hide();
        }
        else
        {
          $("[id^=donedate_]").closest("div").hide();
          $("[id^=inspsoon_]").closest("div").show();
          $("#insInspBusy, #insInspClosed, #insInspSoon").closest(".<%=MOBILE_UI_CLASSES.checkbox_wrapper.replace(/^\s*/, "")%>").show();
        }
      }

      $(() => {
        $("#insInspDone").on("change", onClickDone)
                         .trigger("change"); // Direct goed zetten
      })
    </script>
  </head>
  <body>
<%
  PAGE_START();
  if (isPeriodiekeTaken)
  {
    FILTER_PANEL_START();
      FORM_START("inspect_filter_list", {name: "u2", action: rooturl + "/appl/pda/ins_inspect_list.asp", method: "GET"});
        HIFIELD("urole", urole);

        CONTROLGROUP_START();
          FCLTdienstselector("dienst_key", "dienst_key",
                      { dienstKey : dienst_key,
                        filtercode: (urole == "b2" ? "OWN" : null),
                        label: L("lcl_prs_companies_dienst")
                      });
        CONTROLGROUP_END();

        CONTROLGROUP_START();
          CHB_FIELD("insInspDone", L("lcl_ins_controle_done"), (inspDone ? 1 : 0));

          FCLTcalendar("donedate_from",
                      {
                        label: L("lcl_period_from"),
                        datum: (donedatefrom ? donedatefrom : new Date(new Date().getTime() - 2*24*60*60*1000)),
                        volgnr: 1,
                        maxFuture: 0,
                        nofollow: true,
                        trhidden: !inspDone,
                        mobile: true
                      });

          FCLTcalendar("donedate_to",
                      {
                        label: L("lcl_period_to"),
                        datum: (donedateto ? donedateto : new Date(new Date().getTime() - 1*24*60*60*1000)),
                        volgnr: 2,
                        maxFuture: 0,
                        nofollow: true,
                        trhidden: !inspDone,
                        mobile: true
                      });

          CHB_FIELD("insInspBusy", L("lcl_ins_controle_busy"), (inspBusy ? 1 : 0));
          CHB_FIELD("insInspClosed", L("lcl_ins_controle_act_req"), (inspClosed ? 1 : 0));
          CHB_FIELD("insInspSoon", L("lcl_ins_controle_soon"), (inspSoon ? 1 : 0));
        CONTROLGROUP_END();

        CONTROLGROUP_START();
          FCLTcalendar("inspsoon_from",
                      {
                        label: L("lcl_period_from"),
                        datum: inspsoonfrom,
                        initEmpty: inspsoonfrom === null,
                        volgnr: 3,
                        nofollow: true,
                        trhidden: inspDone,
                        mobile: true
                      });
          FCLTcalendar("inspsoon_to",
                      {
                        label: L("lcl_period_to"),
                        datum: inspsoonto,
                        volgnr: 4,
                        nofollow: true,
                        trhidden: inspDone,
                        mobile: true
                      });
        CONTROLGROUP_END();

        CONTROLGROUP_START();
            BUTTON(L("lcl_mobile_panel_filter"), { id: "search_submit", click: "document.forms.inspect_filter_list.submit();", icon: "fa-fclt-refresh", datarel: "close" });
        CONTROLGROUP_END();
      FORM_END()
    FILTER_PANEL_END();
  }

    HEADER({
        title: subject,
        filterPanel: isPeriodiekeTaken
    });
    CONTENT_START();

    function fncolLink(oRs)
    {
      if (isPeriodiekeTaken)
      {
        var url = "../pda/ins_inspect.asp?ins_key=" + oRs("ins_deel_key").Value + "&srtcontrole_key=" + oRs("ins_srtcontrole_key").Value;
      }
      else
      {
        var deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value;
        if (deelsrtcontrole_key > 0)
          var url = "../pda/ins_inspect_hist.asp?ins_key=" + ins_key + "&deelsrtcontrole_key=" + deelsrtcontrole_key;
        else
          var url = "../pda/ins_inspect.asp?ins_key=" + ins_key + "&srtcontrole_key=" + oRs("ins_srtcontrole_key").Value;
      }
      return url;
    };

    function fncolHeader(oRs)
    {
      var object = safe.html(oRs("ins_deel_omschrijving").Value);
      var srtcontrole = safe.html(oRs("ins_srtcontrole_omschrijving").Value);
      var titletext;
      switch(oRs("ctr_controle_type").value)
      {
          case 1:  titletext = L("lcl_ins_srtcontrole_insp"); break;
          case 2:  titletext = L("lcl_ins_srtcontrole_repl"); break;
          case 3:  titletext = L("lcl_ins_srtcontrole_cert"); break;
          default: titletext = L("lcl_menu_ins_controle"); break;
      }
      return titletext + " " + object + "<br>" + srtcontrole;  // wat formatting zou fijn zijn, maar dan wel uniform overal
    };


    function fnInspectie(oRs)
    {
        var vervallen = (oRs("inspectie_eind").Value != null && new Date(oRs("inspectie_eind").Value).getTime() < new Date().midnight());
        if (vervallen) return L("lcl_ins_controle_vervallen");

        var inspectie = inspDone? oRs("inspectie_date").Value : oRs("inspectie_next").Value;

        var inspectie_eenheid = (isPeriodiekeTaken ? oRs("inspectie_eenheid").Value : oRs("eenheid").Value);
        if (inspectie_eenheid == 0)
          var dttxt = toDateTimeString(inspectie);
        else
          var dttxt = toDateString(inspectie);

        return dttxt;
    }

    function fnPlandatum(oRs)
    {
      var vervallen = (oRs("inspectie_eind").Value != null && new Date(oRs("inspectie_eind").Value).getTime() < new Date().midnight());
      if (vervallen) return L("lcl_ins_controle_vervallen");

      var plandatum = (isPeriodiekeTaken ? oRs("ins_deelsrtcontrole_plandatum").Value : oRs("ins_deelsrtcontrole_datum").Value);
      if (plandatum == null) return "";

      var inspectie_eenheid = (isPeriodiekeTaken ?  oRs("inspectie_eenheid").Value : oRs("eenheid").Value);
      if (inspectie_eenheid == 0)
        var dttxt = toDateTimeString(plandatum);
      else
        var dttxt = toDateString(plandatum);

      var res = "";
      if (!isPeriodiekeTaken)
      {
        if (oRs("ins_deelsrtcontrole_status").Value == 5 || oRs("ins_deelsrtcontrole_status").Value == 6)
        {
          if (oRs("ins_controlemode_success").Value == 0)
            res = I("fa-exclamation-triangle");
          else
            res = I("fa-check");
          res += "&nbsp;";
        }
      }

      return res + dttxt;
    }

    function fncolDetail(oRs)
    {
      var objectsoort = safe.html( (isPeriodiekeTaken ? oRs("soort").Value : oRs("ins_deelsrtcontrole_opmerking").Value) );

      return objectsoort;
    };

    function fnAside(oRs)
    {
      var inspectie_next = fnInspectie(oRs);
      var inspectie_plan = fnPlandatum(oRs);
      return inspectie_plan != ""? inspectie_plan : inspectie_next;
    };

    function fncolsubHeader(oRs)
    {
      var flexkenmerken = "";
      var plaats = "";
      if (isPeriodiekeTaken)
      {
        plaats = "<div class='listbodykop'>" + I("fa-map-marker") + "&nbsp;" + safe.html(oRs("plaats").Value) + "</div>";
        flexkenmerken = LIST_KENMERK_COL(oRs, {kmcol: "insflex"});
      }
      // else: // Voor inspectie geen plaats en kenmerken tonen. 
      return plaats + flexkenmerken;
    };

    if (isPeriodiekeTaken)
    { // Periodieke taken
      var v_flexparams = { inspect: 1 // 1=Objectbeheer overzicht.
                         , multiflex: true
                         , ins_deelsrtcontrole: "XX"
                         }
      var insFlexParams = ins.ins_deel_flex_params(1, v_flexparams);
      params.insFlexParams = insFlexParams;
      var sql = ins.getobjectinspect_sql(autfunction, params);
    }
    else
    { // Inspecties op object
      var sql_list = insp.list_sql(ins_key, -1, {past: true, present: true, future: true, insFlexParams: {anyflex: false, sql:""}});
      sql = "SELECT o.alg_plaatsaanduiding || DECODE(o.alg_plaatsomschrijving, '','' ,' (' || o.alg_plaatsomschrijving || ')') plaats"
          + "     , x.*"
          + "  FROM ins_v_alg_overzicht o"
          + "	    , ins_deel d"
          + "	    , (" + sql_list + ") x"
          + " WHERE d.ins_alg_ruimte_type = o.alg_onroerendgoed_type"
          + "   AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys"
          + "   AND d.ins_deel_key = x.ins_deel_key";
    }

    var rst = new ResultsetTable({sql: sql,
                                  keyColumn: "ins_deel_key",
                                  linkColumn: fncolLink,
                                  detailColumn: fncolDetail,
                                  headerColumn: fncolHeader,
                                  asideColumn: fnAside,
                                  subheaderColumn: fncolsubHeader,
                                  ID: "instable",
                                  showAll: true
                                 });

    var cnt = rst.processResultset();

    CONTENT_END();
    FOOTER({});
  PAGE_END();
  PDA_PAGE_END(); %>
  </body>
</html>
<% ASPPAGE_END(); %>
