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

    File:           ins_deel.asp
    Description:    wrapper voor objecten bewerk / show
    Parameters:     urole, ins_key
    Context:
    Note:

*/ %>
<!--#include file="../Shared/common.inc" -->
<!--#include file="../Shared/iface.inc" -->
<!--#include file="ins.inc" -->
<%
FCLTHeader.Requires({ plugins:["suggest", "jQuery"],
                      js: ["jquery-ui.js"]
                    })

var urole = getQParamSafe("urole", "fe");
// Het maakt ons hier nog niet uit of we in SLE zitten
var urole = getQParamInt("self", 0) == 1 ? "fe" : urole;
var ins_key = getQParamInt("ins_key", -1);
var parent_key = getQParamInt("parent_key", -1);
var copy = (getQParamInt("ins_copy", 0) == 1);
var disc_key_arr = getQParamIntArray("disc", []); // Discipline.

// OVERIGE PARAMETERS
var transitParam = buildTransitParam(["parent_key", "disc", "Group", "sort", "dept", "prs_key", "cntprs_key", "ins_copy",
                                      "locatiekey", "gebouwkey", "verdiepingkey", "ruimtekey", "werkplekkey"]);

var ins_name = "";
var ins_srtname = "";
var ins_srtimage = "fa-ballot-check"; // lastige default, maar beter dan circle.
var gevuldLogboek;
var canInspect = false;
var isSLE = false;

if (ins_key > 0)
{
  var this_ins = ins.func_enabled_deel(ins_key);    // Wat heb ik zoal aan rechten op dit object?
  user.auth_required_or_abort(this_ins.canReadAny); // Heb ik enige lees rechten op dit object?

  var sql = "SELECT ins_deel_omschrijving"
          + "     , ins_deel_parent_key"
          + "     , ins_deel_verwijder"
          + "     , " + lcl.xsqla("sd.ins_srtdeel_omschrijving", "sd.ins_srtdeel_key")
          + "     , COALESCE (sd.ins_srtdeel_image, di.ins_discipline_image) image"
          + "     , ins_srtdeel_sensortype"
          + "     , ins_srtdeel_binding"
          + "  FROM ins_deel d"
          + "     , ins_srtdeel sd"
          + "     , ins_srtgroep sg"
          + "     , ins_discipline di"
          + " WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key"
          + "   AND sd.ins_srtgroep_key = sg.ins_srtgroep_key"
          + "   AND sg.ins_discipline_key = di.ins_discipline_key"
          + "   AND ins_deel_key = " + ins_key;
  var oRs = Oracle.Execute(sql);
  ins_name = oRs("ins_deel_omschrijving").Value;
  ins_srtname = oRs("ins_srtdeel_omschrijving").Value;
  parent_key = oRs("ins_deel_parent_key").Value;
  ins_srtimage = oRs("image").Value||ins_srtimage;
  var ins_deleted = oRs("ins_deel_verwijder").Value != null;
  var ins_srtdeel_sensortype = oRs("ins_srtdeel_sensortype").Value;
  var srtdeel_binding = oRs("ins_srtdeel_binding").Value;
  oRs.Close();

  var sql = "SELECT COUNT(*)"
          + "  FROM mld_melding_object"
          + " WHERE ins_deel_key = " + ins_key;
  var oRs = Oracle.Execute(sql);
  gevuldLogboek = oRs(0).Value > 0;
  oRs.Close();

  // Inspecties mogelijk op dit object?
  var sql = "SELECT COUNT(*)"
          + "  FROM ins_srtcontrole isc,"
          + "       ins_deel d,"
          + "       ins_srtdeel sd"
          + " WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key"
          + "   AND ins_deel_key = " + ins_key
          + "  AND (    isc.ins_srtcontrole_niveau = 'S' AND isc.ins_srtinstallatie_key = d.ins_srtdeel_key"
          + "        OR isc.ins_srtcontrole_niveau = 'G' AND isc.ins_srtinstallatie_key = sd.ins_srtgroep_key"
          + "        OR isc.ins_srtcontrole_niveau = 'D' AND isc.ins_srtinstallatie_key = d.ins_discipline_key"
          + "      )"
  var oRs = Oracle.Execute(sql);
  canInspect = (oRs(0).Value > 0);
  oRs.Close();

  // Is dit een sleutel of cilinder? Dan willen we geen subframes
  var sql = "SELECT COUNT(*)"
          + "  FROM ins_deel d,"
          + "       ins_srtdeel sd"
          + " WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key"
          + "   AND (sd.ins_srtgroep_key = " + S("sle_ins_srt_groep_key")
          + "       OR sd.ins_srtgroep_key = " + S("cil_ins_srt_groep_key") + ")"
          + "   AND ins_deel_key = " + ins_key;

  var oRs = Oracle.Execute(sql);
  isSLE = (oRs(0).Value > 0);
  oRs.Close();

  var insContracts = false;
  var authparamsCNTUSE = user.checkAutorisation("WEB_CNTUSE", true);
  var authparamsCNTMAN = user.checkAutorisation("WEB_CNTMAN", true);
  var curole = "bo";

  if (!authparamsCNTMAN && authparamsCNTUSE)
      curole = "fe";

  if (authparamsCNTMAN || authparamsCNTUSE)
  {
      var sql = "SELECT   1"
              + "  FROM   cnt_v_aanwezigcontract_object cao, cnt_contract c, ins_deel d"
              + " WHERE       cao.cnt_contract_key = c.cnt_contract_key"
              + "         AND c.cnt_contract_verwijder IS NULL"
              + "         AND d.ins_deel_key =" + ins_key
              + "         AND d.ins_srtdeel_key = cao.cnt_ins_srtdeel_key"
              + "         AND ROWNUM = 1";

      var oRs = Oracle.Execute(sql);
      insContracts = !oRs.eof;
      oRs.Close();
  }
}
else
{
  if (parent_key > 0)
  {
    var sql = "SELECT d.ins_deel_omschrijving"
            + "     , " + lcl.xsqla("sd.ins_srtdeel_omschrijving", "sd.ins_srtdeel_key")
            + "  FROM ins_deel d"
            + "     , ins_srtdeel sd"
            + " WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key"
            + "   AND ins_deel_key = " + parent_key;
    var oRs = Oracle.Execute(sql);
    ins_name = oRs("ins_deel_omschrijving").Value;
    ins_srtname = L("lcl_ins_add_new_comp").format(oRs("ins_srtdeel_omschrijving").Value);
    oRs.Close();
  }
}

%>
<html>
  <head>
<%
    FCLTHeader.Generate();
%>
    <script  type="text/javascript" >
      copy = <%=copy? 1 : 0%> == 1;
<%    if (ins_key > 0 && !copy)
      { %>
        FcltMgr.setTitle("<%=safe.jsstring(ins_name)%>", {hot: false});
<%    }
      else
      { %>
        FcltMgr.startEdit(window);
        if (copy) FcltMgr.setTitle(L("lcl_ins_copy") + " " + L("lcl_shared_object").toLowerCase(), {hot: false});
<%    } %>

      function insClose(params)
      {
<%      if (ins_key == -1 || copy)
        { %>
          if (params.cancel)
          {
            FcltMgr.closeDetail(window, params );
            return true;
          }
          if (!params.keepForm)
            window.location.href = "ins_deel.asp?verynew=1&ins_key=" + params.ins_key + "&urole=" + params.urole;
<%      }
        else
        { // Bestaand object bewerkt, switch naar show-mode
%>
          if (params.close)
            FcltMgr.closeDetail(window, { close: true})
          if (!params.keepForm)
            // Alle objectgegevens vernieuwen. Bijvoorbeeld de geplande aanvang van een taak kan veranderd zijn doordat de registratiedatum is gewijzigd.
            window.location.href = "ins_deel.asp?ins_key=<%=ins_key%>&urole=<%=urole%>";
<%      } %>
      }
    </script>
  </head>

  <body>
  <% PAGE_START({ pageHeader: { icon: ins_srtimage, title: ins_srtname + " " + ins_name } }); %>
<%  if (ins_key == -1 || copy)
      var page="ins_edit_deel.asp"; // Maak een nieuw
    else
      var page="ins_show_deel.asp";
    page += "?urole=" + urole + "&ins_key=" + ins_key + transitParam;

    IFRAMER("deelframe", page, { FcltClose: "insClose" } );

    // Bijbehorende onderdelen, ook als er geen zijn (om toe te kunnen voegen) //TODO: alleen zien bij bo, klopt dat? volgens mij niet nodig bij uitlenen innemen.
    if (!ins_deleted && ins_key > 0 && parent_key == null && urole == "bo" && !copy && !isSLE)
    {
      page = "ins_list.asp?inacObjIncl=1&parent_key=" + ins_key + "&urole=" + urole;
      IFRAMER("subdeelframe", page, { FcltClose: "insClose",  icon: "fa-list"  } );
    }
    // Gerelateerde objecten, ook als er geen zijn (om toe te kunnen voegen)
    if (!ins_deleted && ins_key > 0 /* && parent_key == null */ && urole == "bo" && !copy && !isSLE)
    {
      page = "ins_list.asp?inacObjIncl=1&koppel_key=" + ins_key + "&urole=" + urole;
      IFRAMER("inskoppelframe", page, { FcltClose: "insClose",  icon: "fa-list"  } );
    }
    // Bijbehorende logmeldingen als die er zijn
    // Als je geen mld rechten hebt dan hoef je iframe ook niet te tonen.
    var authparamsMLDBOF = user.checkAutorisation("WEB_MLDBOF", true);
    var authparamsMLDFOF = user.checkAutorisation("WEB_MLDFOF", true);
    var authparamsMLDBAC = user.checkAutorisation("WEB_MLDBAC", true);

    if (!ins_deleted && ins_key > 0 && gevuldLogboek && !copy && (authparamsMLDBOF ||authparamsMLDFOF || authparamsMLDBAC))
    {
      var murole = "bo";
      if (authparamsMLDBOF)
        murole = "bo";
      else if (authparamsMLDFOF)
        murole = "fo";
      else if (authparamsMLDBAC)
        murole = "mi";

      page = "../mld/mld_search_list.asp?ins_key=" + ins_key + "&tiny=1&urole=" + murole;
      IFRAMER("insmldlistframe", page, {  icon: "fa-list" } );
    }
    // autorisatiecheck zit verwerkt in insContracts
    if (!ins_deleted && ins_key > 0 && !copy && insContracts)
    {
      page = "../cnt/cnt_search_list.asp?tiny=1&sact=1&ins_key=" + ins_key + "&urole=" + curole + "&rst_filters=1";
      IFRAMER("cntlistframe", page, {  icon: "fa-list" } );
    }

    var res_authparams = user.checkAutorisation("WEB_RESBOF", true);
    var res_deel_key = -1;
    if (res_authparams)
    {
      // Is dit deel al reserveerbaar?
      var sql = "SELECT res_deel_key"
              + "  FROM res_deel"
              + " WHERE res_deel_verwijder IS NULL"
              + "   AND res_ins_deel_key = " + ins_key;
      var oRs = Oracle.Execute(sql);
      if (!oRs.eof)
        res_deel_key = oRs("res_deel_key").Value;
      oRs.Close();
      if (!ins_deleted && ins_key > 0 && !copy && res_deel_key > -1)
      {
        page = "../res/res_deel_history.asp?res_deel_key=" + res_deel_key + "&urole=" + curole;
        IFRAMER("insreshistframe", page, { icon: "fa-list" } );
      }
    }

    if (!ins_deleted && ins_key > 0 && !copy && ins_srtdeel_sensortype > 0)
    {
      page = "ins_state_history.asp?ins_key=" + ins_key;
      IFRAMER("insstatelistframe", page, { icon: "fa-list" } );
    }

    var authparamsCTRUSE = user.checkAutorisation("WEB_CTRUSE", true);
    var hasReadCTRUSE = authparamsCTRUSE && authparamsCTRUSE.ALGreadlevel < 9 && authparamsCTRUSE.PRSreadlevel < 9;
    if (!ins_deleted && canInspect && hasReadCTRUSE && !copy)
    {
      page = "ins_inspect_list.asp?ins_key=" + ins_key + "&urole=" + urole;
      IFRAMER("insinspectframe", page, { refreshOnActivate: true, icon: "fa-list" } );

      // AAGN#81367 je wilt een overzicht van alle bijlagen, en
      // dat combineren we met het hebben van taken
      // want [alleen] dan is het overzicht ervan beperkt.
      // En dan nog alleen als er bijlagen zijn, want het is een readonly-subtab
      var sql = "SELECT COUNT (*) "
              + "  FROM fac_bijlagen fb, ins_kenmerk km, ins_deelsrtcontrole idsc "
              + " WHERE     idsc.ins_deelsrtcontrole_key = fb.fac_bijlagen_refkey "
              + "       AND km.ins_kenmerk_key = fb.fac_bijlagen_kenmerk_key "
              + "       AND fac_bijlagen_module = 'INS' "
              + "       AND km.ins_kenmerk_niveau IN ('T', 'C', 'E') "
              + "       AND idsc.ins_deel_key = " + ins_key;
      var oRs = Oracle.Execute(sql);
      if (oRs(0).value> 0)// TODO if (er zijn document-kenmerken bij taken)
      {
        page = "ins_deeldocumenten.asp?ins_key=" + ins_key;
        IFRAMER("insdocframe", page, { icon: "fa-folder" } );  // refreshOnActivate: true ?
      }
      oRs.Close();
    }

    if (!ins_deleted && ins_key > 0 && !copy)
    {
      if (this_ins.canReadNotes)
      {
        page = "ins_show_note2.asp?ins_key=" + ins_key;
        IFRAMER("noteframe", page, { refreshOnClose: true, sidebar: true } );
      }

      var autfunction = (isSLE ? "WEB_SLEBOF" : (urole == "fo" ? "WEB_INSFOF" : "WEB_INSMAN"));
      var authparams = user.checkAutorisation(autfunction, true);
      if (authparams && authparams.ALGreadlevel < 9 && authparams.PRSreadlevel < 9)
      {
        page = protectQS.create("../shared/status_info.asp?ins_key=" + ins_key + "&urole=" + urole);
        IFRAMER("inshistoryframe", page, { icon: "fa-list", title: L("lcl_tracking")} );
      }
    }

%>
<% PAGE_END(); %>
  </body>
</html>
<% ASPPAGE_END(); %>
