Files
2021-12-03 01:19:31 +00:00

185 lines
5.7 KiB
Lua

local queries = module("server/modules/queries")
local client_sender = module("server/modules/comms/client_sender")
local api = module("server/modules/comms/api")
local calls = {}
-- Get the table of all calls
function calls.get_all_calls(pass_to_client)
local q_all_calls = queries.get_all_calls()
api.request(
q_all_calls,
function(response)
response = json.decode(response)
if response.error == nil then
local cll = {}
for _, call in ipairs(response.data.allCalls) do
table.insert(cll, call)
end
state_set("calls", cll)
if (pass_to_client ~= nil and pass_to_client) then
client_sender.pass_data(state.calls, "calls")
end
else
print_debug(response.error)
end
end
)
end
-- Update a call
function calls.update_call(id)
local q_get_call = queries.get_call(id)
print_debug("UPDATING CALL " .. id)
api.request(
q_get_call,
function(response)
response = json.decode(response)
if response.error == nil then
print_debug("PARSING UPDATED CALL")
local received = response.data.getCall
local ex_calls = state_get("calls")
local found = false
for i, iter in ipairs(ex_calls) do
if (iter.id == received.id) then
ex_calls[i] = received
found = true
end
end
if not found then
table.insert(ex_calls, received)
end
state_set("calls", ex_calls)
-- Send client the updated calls list
print_debug("SENDING ALL CLIENTS UPDATED CALLS")
client_sender.pass_data(ex_calls, "calls")
else
print_debug(response.error)
end
end
)
end
-- Repopulate all calls
function calls.repopulate_calls()
calls.get_all_calls(true)
end
-- Get the table of all call grades
function calls.get_all_call_grades(pass_to_client)
local q_get_all_call_grades = queries.get_all_call_grades()
api.request(
q_get_all_call_grades,
function(response)
response = json.decode(response)
if response.error == nil then
local call_grades = {}
for _, grade in ipairs(response.data.allCallGrades) do
table.insert(call_grades, grade)
end
state_set("call_grades", call_grades)
if (pass_to_client ~= nil and pass_to_client) then
client_sender.pass_data(state.call_grades, "call_grades")
end
else
print_debug(response.error)
end
end
)
end
-- Get the table of all call types
function calls.get_all_call_types(pass_to_client)
local q_get_all_call_types = queries.get_all_call_types()
api.request(
q_get_all_call_types,
function(response)
response = json.decode(response)
if response.error == nil then
local call_types = {}
for _, call_type in ipairs(response.data.allCallTypes) do
table.insert(call_types, call_type)
end
state_set("call_types", call_types)
if (pass_to_client ~= nil and pass_to_client) then
client_sender.pass_data(state.call_types, "call_types")
end
else
print_debug(response.error)
end
end
)
end
-- Get the table of all call incidents
function calls.get_all_call_incidents(pass_to_client)
local q_get_all_call_incidents = queries.get_all_call_incidents()
api.request(
q_get_all_call_incidents,
function(response)
response = json.decode(response)
if response.error == nil then
local call_incidents = {}
for _, call_incident in ipairs(response.data.allIncidentTypes) do
table.insert(call_incidents, call_incident)
end
state_set("call_incidents", call_incidents)
if (pass_to_client ~= nil and pass_to_client) then
client_sender.pass_data(state.call_incidents, "call_incidents")
end
else
print_debug(response.error)
end
end
)
end
-- Send a call
function calls.send_call(data)
local q_send_call
if (data.id) then
q_send_call = queries.update_call(data)
else
q_send_call = queries.create_call(data)
end
api.request(
q_send_call,
function(response)
response = json.decode(response)
if response.error ~= nil then
print_debug(response.error)
end
end
)
end
-- Delete a call
function calls.delete_call(data)
local q_delete_call = queries.delete_call(data)
api.request(
q_delete_call,
function(response)
response = json.decode(response)
if response.error ~= nil then
print_debug(response.error)
end
end
)
end
-- Toggle a unit assignment
function calls.toggle_assignment(data)
local q_toggle_assignment = queries.toggle_assignment(data)
api.request(
q_toggle_assignment,
function(response)
response = json.decode(response)
if response.error ~= nil then
print_debug(response.error)
end
end
)
end
return calls