Files
Elite-Gaming-FiveM/resources/cadvanced_mdt/server/modules/units.lua
T
2021-12-03 01:19:31 +00:00

222 lines
6.9 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 units = {}
-- Get the table of all units
function units.get_all_units(pass_to_client)
local q_all_units = queries.get_all_units()
api.request(
q_all_units,
function(response)
response = json.decode(response)
if response.error == nil then
local unt = {}
for _, unit in ipairs(response.data.allUnits) do
table.insert(unt, unit)
end
state_set("units", unt)
if (pass_to_client ~= nil and pass_to_client) then
client_sender.pass_data(state.units, "units")
end
else
print_debug(response.error)
end
end
)
end
-- Get the table of all unit states
function units.get_all_unit_states(pass_to_client)
local q_all_unit_states = queries.get_all_unit_states()
api.request(
q_all_unit_states,
function(response)
response = json.decode(response)
if response.error == nil then
local us = {}
for _, state in ipairs(response.data.allUnitStates) do
table.insert(us, state)
end
state_set("unit_states", us)
if (pass_to_client ~= nil and pass_to_client) then
client_sender.pass_data(state.unit_states, "unit_states")
end
else
print_debug(response.error)
end
end
)
end
-- Get the table of all unit types
function units.get_all_unit_types(pass_to_client)
local q_all_unit_types = queries.get_all_unit_types()
api.request(
q_all_unit_types,
function(response)
response = json.decode(response)
if response.error == nil then
local ut = {}
for _, uType in ipairs(response.data.allUnitTypes) do
table.insert(ut, uType)
end
state_set("unit_types", ut)
if (pass_to_client ~= nil and pass_to_client) then
client_sender.pass_data(state.unit_types, "unit_types")
end
else
print_debug(response.error)
end
end
)
end
-- Get the table of all user / unit assignments
function units.get_all_user_units(pass_to_client)
local q_all_user_units = queries.get_all_user_units()
api.request(
q_all_user_units,
function(response)
response = json.decode(response)
if response.error == nil then
local user_units = {}
for _, assignment in ipairs(response.data.allUserUnits) do
table.insert(user_units, assignment)
end
state_set("user_units", user_units)
if (pass_to_client ~= nil and pass_to_client) then
client_sender.pass_data(state.user_units, "user_units")
end
else
print_debug(response.error)
end
end
)
end
-- Send a unit
function units.send_unit(data)
local q_send_unit
if (data.id) then
q_send_unit = queries.update_unit(data)
else
q_send_unit = queries.create_unit(data)
end
api.request(
q_send_unit,
function(response)
response = json.decode(response)
if response.error ~= nil then
print_debug(response.error)
end
end
)
end
-- Delete a unit
function units.delete_unit(data)
local q_delete_unit = queries.delete_unit(data)
api.request(
q_delete_unit,
function(response)
response = json.decode(response)
if response.error ~= nil then
print_debug(response.error)
end
end
)
end
-- Repopulate all user_units
function units.repopulate_user_units()
units.get_all_user_units(true)
end
-- Repopulate all units
function units.repopulate_units()
units.get_all_units(true)
end
-- Repopulate all unit states
function units.repopulate_unit_states()
units.get_all_unit_states(true)
end
-- Repopulate all unit types
function units.repopulate_unit_types()
units.get_all_unit_types(true)
end
-- Update a unit
function units.update_unit(id)
local q_get_unit = queries.get_unit(id)
print_debug("UPDATING UNIT " .. id)
api.request(
q_get_unit,
function(response)
response = json.decode(response)
if response.error == nil then
print_debug("PARSING UPDATED UNIT")
local received = response.data.getUnit
local ex_units = state_get("units")
local found = false
for i, iter in ipairs(ex_units) do
if (iter.id == received.id) then
ex_units[i] = received
found = true
end
end
if not found then
table.insert(ex_units, received)
end
state_set("units", ex_units)
-- Send client the updated units list
print_debug("SENDING ALL CLIENTS UPDATED UNITS")
client_sender.pass_data(ex_units, "units")
else
print_debug(response.error)
end
end
)
end
-- Update a unit's state
function units.set_unit_state(data)
local unit = state_get_value("units", data.unitId)
print_debug("SENDING UPDATED UNIT STATE TO CAD FOR UNIT " .. data.unitId)
if (unit ~= nil) then
local q_set_unit_state = queries.set_unit_state(data, unit)
api.request(
q_set_unit_state,
function(response)
response = json.decode(response)
if response.error == nil then
print_debug("PARSING UPDATED UNIT")
local received = response.data.updateUnit
local ex_units = state_get("units")
local found = false
for i, iter in ipairs(ex_units) do
if (iter.id == received.id) then
ex_units[i] = received
found = true
end
end
if not found then
table.insert(ex_units, received)
end
state_set("units", ex_units)
-- Send client the updated units list
print_debug("SENDING ALL CLIENTS UPDATED UNITS")
client_sender.pass_data(ex_units, "units")
else
print_debug(response.error)
end
end
)
end
end
return units