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

    File:
    Description:
    Parameters:

    Note:


*/ %>

<%
var JSON_Result = true;
%>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../shared/save2db.inc" -->
<!-- #include file="../Shared/kenmerk_common.inc" -->
<!-- #include file="./ins.inc" -->

<%
protectRequest.validateToken();
/***** Get parameters *****/
var obj_key = getFParamInt("ins_key");
var adapt = getFParamInt("adapt", 0) == 1;

// Indien het een sleutel of cilinder betreft dan WEB_SLEFOF rechten i.p.v. WEB_INSFOF rechten.
if (ins.isSleCil(obj_key))
  var autfunction = "WEB_SLEFOF";
else
  var autfunction = "WEB_INSFOF";
var authparams = user.checkAutorisation(autfunction);

var lent_out_person = getFParamInt("lent_out_person", -1);
var person_type = getFParam("person_type", "P");

sql = "SELECT d.ins_alg_ruimte_key_org"
    + ", d.ins_deel_omschrijving"
    + " FROM ins_deel d"
    + " WHERE ins_deel_key = " + obj_key;
oRs = Oracle.Execute(sql);

var isLendOut = oRs("ins_alg_ruimte_key_org").value != null;
var lInsOmschrijving = oRs("ins_deel_omschrijving").value;
var loc_key = getFParamInt("locatiekey", -1); // Locatie
var bld_key = getFParamInt("gebouwkey", -1); // Gebouw
var bttype = getFParam("bttype", ""); // Type van gebouw/terrein ("B", "T"). Bepaald of bld_key een gebouw of terreinsector key bevat.
var flr_key = getFParamInt("verdiepingkey", -1); // Verdieping
var room_key = getFParamInt("ruimtekey", -1); // Ruimte

result = { success: true};
var update_string = "";
if (!adapt)
{
  var ruimte_key = -1;
  var ruimte_type = "";
  if (!isLendOut && lent_out_person > 0)
  { // Uitgeven: Sla persoon op in alg_ruimte_key en sla ook de kenmerken op
    ruimte_key = lent_out_person;
    ruimte_type = person_type;
  }
  else if (!isLendOut && room_key > 0 && bttype == "B")
  { // Uitgeven: Sla ruimte op in alg_ruimte_key en sla ook de kenmerken op
    ruimte_key = room_key;
    ruimte_type = "R";
  }
  else if (!isLendOut && bld_key > 0 && bttype == "T")
  { // bld_key is een terrein key
    // Uitgeven: Sla terrein op in alg_ruimte_key en sla ook de kenmerken op
    ruimte_key = bld_key;
    ruimte_type = "T";
  }
  // else innemen


  if (!isLendOut && ruimte_key > 0)
  { // Uitgeven: Sla persoon/ruimte/terrein op in alg_ruimte_key en sla ook de kenmerken op
    sql = "UPDATE ins_deel"
        + " SET ins_alg_ruimte_key_org = ins_alg_ruimte_key"
        + ", ins_alg_ruimte_type_org = ins_alg_ruimte_type"
        + ", ins_alg_ruimte_key = " + ruimte_key
        + ", ins_alg_ruimte_type = " + safe.quoted_sql(ruimte_type)
        + " WHERE ins_deel_key = " + obj_key;
  }
  else
  { // Innemen: Maak reset de eigenaar/plaats en sla de kenmerken op
    // Alleen uitgegeven objecten kunnen ingenomen worden (ins_alg_ruimte_key_org en ins_alg_ruimte_type_org zijn niet NULL)
    sql = "UPDATE ins_deel"
        + " SET ins_alg_ruimte_key = ins_alg_ruimte_key_org"
        + ", ins_alg_ruimte_type = ins_alg_ruimte_type_org"
        + ", ins_alg_ruimte_key_org = NULL"
        + ", ins_alg_ruimte_type_org = NULL"
        + " WHERE ins_deel_key = " + obj_key
        + " AND ins_alg_ruimte_key_org IS NOT NULL"
        + " AND ins_alg_ruimte_type_org IS NOT NULL";
    update_string = L("lcl_obj_is_ingenomen");
  }

  var err = Oracle.Execute(sql, true);
  if (err.friendlyMsg)
  {
      result.message = err.friendlyMsg;
      result.success = false;
  }

  if (!isLendOut && (lent_out_person > 0 || bld_key > 0))
  {
    if (lent_out_person > 0)
    {
      if (person_type == "P")
        var sql = "SELECT pf.prs_perslid_naam_full"
                + " FROM prs_v_perslid_fullnames_all pf"
                + " WHERE prs_perslid_key = " + lent_out_person;
      else if (person_type == "C")
        var sql = "SELECT pf.prs_contactpersoon_naam"
                + " FROM prs_contactpersoon pf"
                + " WHERE prs_contactpersoon_key = " + lent_out_person;
    }
    else
    {
      if (ruimte_type == "R")
      {
        var sql = "SELECT r.alg_locatie_code || '-' || r.alg_ruimte_aanduiding || ' (' || "+ lcl.xsql("r.alg_srtruimte_omschrijving", "r.alg_srtruimte_key")+" || ')' loc"
                + " FROM alg_v_ruimte_gegevens r"
                + " WHERE r.alg_ruimte_key = " + ruimte_key;
      }
      else
      {
        var sql = "SELECT l.alg_locatie_code || '-' || t.alg_terreinsector_omschrijving loc"
                + " FROM alg_v_aanweziglocatie l"
                + ", alg_terreinsector t"
                + " WHERE l.alg_locatie_key = t.alg_locatie_key"
                + " AND t.alg_terreinsector_key = " + ruimte_key;
      }
    }
    var loRs = Oracle.Execute(sql);
    if (!loRs.eof)
      var lener_str = L("lcl_obj_is_uitgegeven_to").format(loRs(0).value, lInsOmschrijving);
    else
      var lener_str = L("lcl_obj_is_uitgegeven_to").format("?", lInsOmschrijving);
    loRs.close();

    update_string = lener_str;
  }
}

// Kenmerken updaten.
var flextrackarray = ins.updateKenmerkdeel(obj_key);

if (flextrackarray.length)
  update_string += (update_string != ""? "\n" : "") + flextrackarray.join("\n");
if (!adapt || flextrackarray.length != 0)
  shared.trackaction((!isLendOut && (lent_out_person > 0 || bld_key > 0)? "INSOUT" : "INSINN"), obj_key, update_string);

result.refresh = true;
Response.Write(JSON.stringify(result));
%>
