-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIDS_ServerRoutingRule.lua
More file actions
97 lines (85 loc) · 3.12 KB
/
IDS_ServerRoutingRule.lua
File metadata and controls
97 lines (85 loc) · 3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
-- IDS_ServerRoutingRule.lua
--
-- Bill Jones
-- Michael C. Mulligan
--
local Settings = {};
Settings.VERSION = '0.0.2.0';
Settings.NVTGC = GetSetting("NVTGC");
Settings.ProcessType = GetSetting("ProcessType");
Settings.RequestType = GetSetting("RequestType");
Settings.TransactionStatus = GetSetting("TransactionStatus");
Settings.MatchString = GetSetting("MatchString");
Settings.NewProcessType = GetSetting("NewProcessType");
Settings.NewTransactionStatus = GetSetting("NewTransactionStatus");
Settings.OCLCSymbol = '';
function Init()
RegisterSystemEventHandler("SystemTimerElapsed", "TimerElapsed");
end
function TimerElapsed(eventArgs)
setOCLCSymbol()
local tns = getTransactionsToProcess();
ProcessDataContexts("TransactionNumber", tns, "ProcessTransaction");
end
function setOCLCSymbol()
local q = "select OCLCSymbol from LocalInfo where NVTGC='" .. Settings.NVTGC .. "'";
Settings.OCLCSymbol = getScalar(q);
end
function ProcessTransaction()
local cur_tn = GetFieldValue("Transaction", "TransactionNumber");
local cur_type = GetFieldValue("Transaction", "ProcessType");
if (cur_type == Settings.NewProcessType) then
ExecuteCommand("Route", {cur_tn, Settings.NewTransactionStatus});
elseif (cur_type == 'Borrowing') and (Settings.NewProcessType == 'Doc Del') then
ExecuteCommand("RouteToDocumentDelivery", {cur_tn, Settings.NewTransactionStatus});
elseif (cur_type == 'Doc Del') and (Settings.NewProcessType == 'Borrowing') then
ExecuteCommand("RouteToBorrowing", {cur_tn, Settings.NewTransactionStatus});
else
LogDebug("ERROR! Invalid change of process type");
end
SaveDataSource("Transaction");
end
function getTransactionsToProcess()
local usersTable = getUsersTable();
local q = '';
q = q .. "select t.TransactionNumber ";
q = q .. "from Transactions t, " .. usersTable .. " u ";
q = q .. "where ( t.Username = u.Username ) ";
q = q .. "and ( u.NVTGC = '" .. Settings.NVTGC .. "' ) ";
q = q .. "and ( t.ProcessType = '" .. Settings.ProcessType .. "' ) ";
q = q .. "and ( t.RequestType = '" .. Settings.RequestType .. "' ) ";
q = q .. "and ( t.TransactionStatus = '" .. Settings.TransactionStatus .. "' ) ";
q = q .. 'and ( ' .. Settings.MatchString .. ' ) ';
return getTransactions(q);
end
function getTransactions(query)
local connection = CreateManagedDatabaseConnection();
connection.QueryString = query;
connection:Connect();
local resultsTable = connection:Execute();
local transactionNumbers = {};
for i = 0, resultsTable.Rows.Count - 1 do
transactionNumbers[i] = resultsTable.Rows:get_Item(i):get_Item("TransactionNumber");
end
connection:Disconnect();
connection:Dispose();
return transactionNumbers
end
function getScalar(query)
local value = '';
local connection = CreateManagedDatabaseConnection();
connection.QueryString = query;
connection:Connect();
value = connection:ExecuteScalar();
connection:Disconnect();
connection:Dispose();
return value;
end
function getUsersTable()
local usersTable = 'Users';
local shared = getScalar("select Value from Customization where CustKey = 'SharedServerSupport' and NVTGC = 'ILL'");
if (shared == "Yes") then
usersTable = 'UsersAll';
end
return usersTable;
end