272 lines
9.0 KiB
Plaintext
272 lines
9.0 KiB
Plaintext
<%@language = "javascript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: ins_create.asp
|
|
Description: Maak een nieuwe ins_deel aan op een locatie (XY).
|
|
Parameters: locKey
|
|
mode
|
|
OF: deel_key (voor kopieren) OF: srtdeel_key
|
|
OF: room_key OF: wp_key
|
|
dwgX, dwgY
|
|
Context: default.asp/Ajax.Updater
|
|
Result: X-JSON header
|
|
Note: Vooralsnog *moet* in een ruimte gegooid worden of op een werkpleksymbool.
|
|
XY is wel optioneel.
|
|
|
|
Result:
|
|
*/
|
|
var JSON_Result = true;
|
|
%>
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="FGII.inc" -->
|
|
<!-- #include file="../INS/ins.inc"-->
|
|
<%
|
|
protectRequest.validateToken();
|
|
var inoutMode = getQParamInt("mode");
|
|
var scenario_key = getQParamInt("scenario_key"); // current scenario.
|
|
|
|
var srtdeel_key = -1;
|
|
var autfunction_arr = [];
|
|
var deelkey_str = getQParam("deel_key", ""); // (string, kan I:xxx, P:xxx of IW:xxx bevatten)
|
|
if (deelkey_str != "") // Kopie
|
|
{
|
|
if (deelkey_str.match(/^I:/)) deelkey_str = deelkey_str.substring(2);
|
|
if (deelkey_str.match(/^P:/)) deelkey_str = deelkey_str.substring(2);
|
|
if (deelkey_str.match(/^IW:/)) deelkey_str = deelkey_str.substring(3);
|
|
var deel_key = parseInt(deelkey_str, 10);
|
|
if (scenario_key == 0) // I:
|
|
{
|
|
var sql = "SELECT ins_srtdeel_key key, ins_deel_dwgrotatie rot, ins_deel_dwgschaal scl"
|
|
+ " FROM ins_deel"
|
|
+ " WHERE ins_deel_key = " + deel_key;
|
|
}
|
|
else // P:
|
|
{
|
|
var sql = "SELECT ins_srtdeel_key key, prj_deel_dwgrotatie rot, prj_deel_dwgschaal scl"
|
|
+ " FROM prj_deel"
|
|
+ " WHERE prj_deel_key = " + deel_key;
|
|
}
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.Eof)
|
|
{
|
|
srtdeel_key = oRs("key").value;
|
|
rot = oRs("rot").value;
|
|
scl = oRs("scl").value;
|
|
|
|
// Zoek autorisatie functies op, op basis van (ins|prj)_deel_key
|
|
if (scenario_key == 0)
|
|
{
|
|
var this_ins = ins.func_enabled_deel(deel_key);
|
|
for (var func_code in this_ins._funcodes)
|
|
{
|
|
autfunction_arr.push(func_code);
|
|
}
|
|
}
|
|
else
|
|
autfunction_arr.push("WEB_PRJBOF");
|
|
}
|
|
oRs.Close();
|
|
}
|
|
|
|
if (srtdeel_key == -1)
|
|
{
|
|
var srtdeel_key = getQParamInt("srtdeel_key");
|
|
rot = 0;
|
|
scl = 1.0;
|
|
|
|
// Zoek autorisatie functies op, op basis van ins_srtdeel_key
|
|
var sql = "SELECT sg.ins_discipline_key"
|
|
+ " FROM ins_srtdeel sd"
|
|
+ " , ins_srtgroep sg"
|
|
+ " WHERE sd.ins_srtgroep_key = sg.ins_srtgroep_key"
|
|
+ " AND sd.ins_srtdeel_key = " + srtdeel_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
var disc_key = oRs("ins_discipline_key").Value;
|
|
oRs.Close();
|
|
var this_ins = ins.func_enabled_scope(disc_key);
|
|
for (var func_code in this_ins._funcodes)
|
|
{
|
|
autfunction_arr.push(func_code);
|
|
}
|
|
}
|
|
|
|
var authparams = user.checkAutorisation(autfunction_arr);
|
|
|
|
if (Request.QueryString("dwgX").Count == 0)
|
|
{
|
|
var newX = "NULL"; // Droppen met ctrlKey ingedrukt liet XY achterwege
|
|
var newY = "NULL";
|
|
}
|
|
else
|
|
{
|
|
var newX = parseFloat(getQParamFloat("dwgX"));
|
|
var newY = parseFloat(getQParamFloat("dwgY"));
|
|
}
|
|
|
|
var ins_type = (inoutMode == MODE_IN? 'R' : 'T');
|
|
|
|
var roomKey = getQParamInt("room_key", -1);
|
|
var wpKey = "NULL";
|
|
if (roomKey == -1) // Niet gedropt op ruimte maar werkplek?
|
|
{
|
|
wpKey = getQParamInt("wp_key"); // Dan moet die er zijn
|
|
ins_type = "W";
|
|
if (scenario_key == 0)
|
|
{
|
|
roomKey = wpKey;
|
|
var sql = "SELECT prs_werkplek_dwgx dwgx, prs_werkplek_dwgy dwgy,"
|
|
+ " prs_werkplek_dwgrotatie rot, prs_werkplek_dwgschaal scl"
|
|
+ " FROM prs_werkplek pw"
|
|
+ " WHERE pw.prs_werkplek_key = " + wpKey;
|
|
oRs = Oracle.Execute(sql);
|
|
}
|
|
else
|
|
{
|
|
var sql = "SELECT prj_werkplek_dwgx dwgx, prj_werkplek_dwgy dwgy,"
|
|
+ " prj_werkplek_dwgrotatie rot, prj_werkplek_dwgschaal scl,"
|
|
+ " prj_ruimte_key"
|
|
+ " FROM prj_werkplek pw"
|
|
+ " WHERE pw.prj_werkplek_key = " + wpKey;
|
|
oRs = Oracle.Execute(sql);
|
|
roomKey = oRs("prj_ruimte_key").value;
|
|
}
|
|
if (oRs("dwgX").value == null)
|
|
{
|
|
Response.AddHeader("X-JSON", "{ success: false, message: \""+L("lcl_fg_place_wp_first").replace(/\n/g,'\\n')+"\"}");
|
|
Response.End;
|
|
}
|
|
else
|
|
{
|
|
newX = newX - oRs("dwgX").value; // Coordinaten zijn relatief tov werkplek
|
|
newY = newY - oRs("dwgY").value;
|
|
}
|
|
}
|
|
|
|
var BIND_RUIMTE = 0x01;
|
|
var BIND_WERKPL = 0x02;
|
|
var BIND_TERREI = 0x04;
|
|
var BIND_AFDELI = 0x08;
|
|
var BIND_PERSOO = 0x10;
|
|
var BIND_INSDEE = 0x20; // Onderdeel
|
|
|
|
// We hebben srtdeel_key. Nu binding controleren
|
|
sql = "SELECT ins_srtdeel_binding"
|
|
+ " FROM ins_srtdeel"
|
|
+ " WHERE ins_srtdeel_key = " + srtdeel_key;
|
|
oRs = Oracle.Execute(sql);
|
|
srtdeel_binding=oRs(0).value;
|
|
oRs.Close();
|
|
|
|
if ((ins_type=="R"&& !(srtdeel_binding&BIND_RUIMTE)) ||
|
|
(ins_type=="W"&& !(srtdeel_binding&BIND_WERKPL)) ||
|
|
(ins_type=="T"&& !(srtdeel_binding&BIND_TERREI))
|
|
)
|
|
{
|
|
var msg = ins_type=="R"?L("lcl_obj_bind_r"):ins_type=="T"?L("lcl_obj_bind_t"):L("lcl_obj_bind_w");
|
|
Response.Write(JSON.stringify({ success: false, message: L("lcl_fg_obj_bind_error")+msg }));
|
|
Response.End;
|
|
}
|
|
|
|
var locKey = getQParamInt("loc_key");
|
|
|
|
if (scenario_key == 0)
|
|
{
|
|
sql = "SELECT ins.nextdescription(ins_srtdeel_code, NULL)"
|
|
+ " FROM ins_srtdeel "
|
|
+ " WHERE ins_srtdeel_key = " + srtdeel_key;
|
|
}
|
|
else
|
|
{
|
|
sql = "SELECT max(ins_srtdeel_code)||NVL "
|
|
+ " (LPAD "
|
|
+ " (TO_CHAR "
|
|
+ " ( MAX "
|
|
+ " (TO_NUMBER (SUBSTR (prj_deel_omschrijving, "
|
|
+ " LENGTH (ins_srtdeel_code) "
|
|
+ " + 1, "
|
|
+ " LENGTH (prj_deel_omschrijving) "
|
|
+ " - LENGTH (ins_srtdeel_code) "
|
|
+ " ) "
|
|
+ " ) "
|
|
+ " ) "
|
|
+ " + 1 "
|
|
+ " ), "
|
|
+ " MAX ( LENGTH (prj_deel_omschrijving) "
|
|
+ " - LENGTH (ins_srtdeel_code) "
|
|
+ " ), "
|
|
+ " '0' "
|
|
+ " ), "
|
|
+ " '001' "
|
|
+ " ) "
|
|
+ " FROM prj_deel, prj_ruimte, ins_srtdeel "
|
|
+ " WHERE UPPER(prj_deel_omschrijving) LIKE ins_srtdeel_code_upper || '%' " // caseinsensitive
|
|
+ " AND fac.safe_to_number (SUBSTR (prj_deel_omschrijving, "
|
|
+ " LENGTH (ins_srtdeel_code) + 1, "
|
|
+ " LENGTH (prj_deel_omschrijving) "
|
|
+ " - LENGTH (ins_srtdeel_code) "
|
|
+ " ) "
|
|
+ " ) IS NOT NULL "
|
|
+ " AND prj_deel_verwijder IS NULL "
|
|
+ " AND prj_deel.prj_ruimte_key = prj_ruimte.prj_ruimte_key "
|
|
+ " AND ins_srtdeel.ins_srtdeel_key = " + srtdeel_key
|
|
+ " AND prj_ruimte.prj_scenario_key = " + scenario_key
|
|
}
|
|
oRs = Oracle.Execute(sql);
|
|
var desc = oRs(0).value;
|
|
oRs.Close();
|
|
|
|
if (S("cad_symbols_snap") >= 1 && inArray(rot, [0,90,180,270]))
|
|
{
|
|
newX = Math.round(newX / S("cad_symbols_snap")) * S("cad_symbols_snap");
|
|
newY = Math.round(newY / S("cad_symbols_snap")) * S("cad_symbols_snap");
|
|
}
|
|
|
|
if (scenario_key == 0)
|
|
sql = "INSERT INTO INS_DEEL"
|
|
+ "( ins_srtdeel_key, ins_deel_omschrijving"
|
|
+ ", ins_alg_ruimte_type, ins_alg_ruimte_key"
|
|
+ ", ins_deel_dwgx, ins_deel_dwgy, ins_deel_dwgz"
|
|
+ ", ins_deel_dwgrotatie, ins_deel_dwgschaal"
|
|
+ ")"
|
|
+ " VALUES"
|
|
+ "(" + srtdeel_key
|
|
+ "," + safe.quoted_sql(desc)
|
|
+ "," + safe.quoted_sql(ins_type)
|
|
+ "," + roomKey
|
|
+ "," + newX
|
|
+ "," + newY
|
|
+ "," + (ins_type === "R"
|
|
? "(SELECT alg_verdieping_dwgz"
|
|
+ " FROM alg_verdieping v"
|
|
+ " , alg_ruimte r"
|
|
+ " WHERE r.alg_verdieping_key = v.alg_verdieping_key"
|
|
+ " AND r.alg_ruimte_key = " + roomKey + ")"
|
|
: "NULL")
|
|
+ "," + rot
|
|
+ "," + scl
|
|
+ ")";
|
|
else
|
|
sql = "INSERT INTO PRJ_DEEL"
|
|
+ "( ins_srtdeel_key, prj_deel_omschrijving"
|
|
+ ", prj_ruimte_key, prj_werkplek_key"
|
|
+ ", prj_deel_dwgx, prj_deel_dwgy"
|
|
+ ", prj_deel_dwgrotatie, prj_deel_dwgschaal"
|
|
+ ")"
|
|
+ " VALUES"
|
|
+ "(" + srtdeel_key
|
|
+ "," + safe.quoted_sql(desc)
|
|
+ "," + roomKey
|
|
+ "," + wpKey
|
|
+ "," + newX
|
|
+ "," + newY
|
|
+ "," + rot
|
|
+ "," + scl
|
|
+ ")";
|
|
Oracle.Execute(sql);
|
|
|
|
Response.Write(JSON.stringify({ success: true }));
|
|
%>
|
|
<% ASPPAGE_END(); %>
|