1
0
Fork 0
forked from Simnation/Main
Main/resources/[jobs]/[mdt]/myEmergency/server/server.lua
2025-08-14 13:21:51 +02:00

278 lines
No EOL
9.3 KiB
Lua

ESX = nil
QBCore = nil
myMDT_Core = nil
if Config.Framework == "ESX" then
ESX = exports["es_extended"]:getSharedObject()
elseif Config.Framework == "QB" then
QBCore = exports['qb-core']:GetCoreObject()
end
myMDT_Core = exports["myMDT_core"]:GetCore()
startSync = false
players = {}
MySQL.ready(function()
initSystemRights()
myMDT_Core.DB.updateTableColumns()
myMDT_Core.DB.handleDatabaseCollation(
--todo !!
{table = Config.Framework == "ESX" and "users" or "players", column = Config.Framework == "ESX" and "identifier" or "citizenid"},
{
{table = "myemergency_employees", col = "id"},
{table = "myemergency_employees", col = "createdby"},
{table = "myemergency_employees", col = "changedby"},
{table = "myemergency_files_entries", col = "createdby"},
{table = "myemergency_mission_reports", col = "createdby"},
{table = "myemergency_mission_reports", col = "changedby"},
{table = "myemergency_investigations_entries", col = "createdby"},
{table = "myemergency_investigations_entries", col = "changedby"},
{table = "myemergency_employees_entries", col = "createdby"},
{table = "myemergency_employees_entries", col = "changedby"},
{table = "myemergency_trainings_employees", col = "createdby"},
{table = "myemergency_trainings_employees", col = "changedby"},
{table = "myemergency_trainings_employees", col = "employee_id"},
}
)
end)
if Config.Framework == "ESX" then
ESX.RegisterServerCallback('myEmergency:loadOverview', function(source, cb, pageNum, quicksearch, loadType)
cb(handleLoadOverview(source, pageNum, quicksearch, loadType))
end)
ESX.RegisterServerCallback('myEmergency:loadCustom', function(source, cb, loadType, id)
cb(handleCustomData(source, loadType, id))
end)
ESX.RegisterServerCallback('myEmergency:loadDetails', function(source, cb, id, loadType)
cb(loadDetails(source, id, loadType))
end)
ESX.RegisterServerCallback('myEmergency:finish-manhunt', function(source, cb, id, loadType)
cb(myEmergency_Data.manhunt.finish(source, id, loadType))
end)
ESX.RegisterServerCallback('myEmergency:save-data', function(source, cb, id, data, saveSrc)
cb(handleSave(source, id, data, saveSrc))
end)
ESX.RegisterServerCallback('myEmergency:delete-data', function(source, cb, id, src)
--[[
local xPlayer = myMDT_Core.Functions.getPlayer(source)
local query = "select *,(SELECT string_key from myemergency_licenses where myemergency_licenses.id = myemergency_files_licences.license_id) as license_key from myemergency_files_licences where id = @id"
local data = MySQL.Sync.fetchAll(query,{
["@id"] = id
})
if data~= nil and #data>0 then
TriggerEvent('LicenseManager:revokeLicense', data[1].file_id, data[1].license_key)
end
--]]
cb(handleDelete(source, id, src))
end)
ESX.RegisterServerCallback('myEmergency:takeControlCentre', function(source, cb, isReset)
local _source = source
--if you use a phone with specialnumber here your export
--[[
local xPlayer = myMDT_Core.Functions.getPlayer(source)
if xPlayer.myEmergeny.openedSystem == 'police' then
if not isReset then
PhoneExport to get
else
PhoneExport to set empty
end
elseif xPlayer.myEmergeny.openedSystem == 'medic' then
if not isReset then
PhoneExport to get
else
PhoneExport to set empty
end
end
]]
cb(myMDT_Core.Data.controlcentre.take(_source, isReset))
end)
ESX.RegisterServerCallback('myEmergency:SetRadioState', function(source, cb, new_state_id)
cb(myMDT_Core.Data.radiostate.set(source, new_state_id))
end)
ESX.RegisterServerCallback('myEmergency:filterFileDropdown', function(source, cb, parentID, search)
local _source = source
cb(myMDT_Core.Data.filesSaver.getForDropDown(_source, parentID, search))
end)
ESX.RegisterServerCallback('myEmergency:SetVehicle', function(source, cb, new_state_id)
cb(myMDT_Core.Data.employees.setVehicle(source, new_state_id))
end)
ESX.RegisterServerCallback('myEmergency:resetVehicle', function(source, cb, id)
cb(myMDT_Core.Data.emergencyvehicle.reset(source, id))
end)
ESX.RegisterServerCallback('myEmergency:resetEmployeeRadio', function(source, cb, id)
cb(myMDT_Core.Data.employeeradio.reset(source, id))
end)
elseif Config.Framework == "QB" then
QBCore.Functions.CreateCallback('myEmergency:loadOverview', function(source, cb, pageNum, quicksearch, loadType)
cb(handleLoadOverview(source, pageNum, quicksearch, loadType))
end)
QBCore.Functions.CreateCallback('myEmergency:loadCustom', function(source, cb, loadType, id)
cb(handleCustomData(source, loadType, id))
end)
QBCore.Functions.CreateCallback('myEmergency:loadDetails', function(source, cb, id, loadType)
cb(loadDetails(source, id, loadType))
end)
QBCore.Functions.CreateCallback('myEmergency:finish-manhunt', function(source, cb, id, loadType)
cb(myEmergency_Data.manhunt.finish(source, id, loadType))
end)
QBCore.Functions.CreateCallback('myEmergency:save-data', function(source, cb, id, data, saveSrc)
cb(handleSave(source, id, data, saveSrc))
end)
QBCore.Functions.CreateCallback('myEmergency:delete-data', function(source, cb, id, src)
cb(handleDelete(source, id, src))
end)
QBCore.Functions.CreateCallback('myEmergency:takeControlCentre', function(source, cb, isReset)
local _source = source
--if you use a phone with specialnumber here your export
--[[
local xPlayer = myMDT_Core.Functions.getPlayer(source)
if xPlayer.myEmergeny.openedSystem == 'police' then
if not isReset then
PhoneExport to get
else
PhoneExport to set empty
end
elseif xPlayer.myEmergeny.openedSystem == 'medic' then
if not isReset then
PhoneExport to get
else
PhoneExport to set empty
end
end
]]
cb(myMDT_Core.Data.controlcentre.take(_source, isReset))
end)
QBCore.Functions.CreateCallback('myEmergency:SetRadioState', function(source, cb, new_state_id)
cb(myMDT_Core.Data.radiostate.set(source, new_state_id))
end)
QBCore.Functions.CreateCallback('myEmergency:filterFileDropdown', function(source, cb, parentID, search)
local _source = source
cb(myMDT_Core.Data.filesSaver.getForDropDown(_source, parentID, search))
end)
QBCore.Functions.CreateCallback('myEmergency:SetVehicle', function(source, cb, new_state_id)
cb(myMDT_Core.Data.employees.setVehicle(source, new_state_id))
end)
QBCore.Functions.CreateCallback('myEmergency:resetVehicle', function(source, cb, id)
cb(myMDT_Core.Data.emergencyvehicle.reset(source, id))
end)
QBCore.Functions.CreateCallback('myEmergency:resetEmployeeRadio', function(source, cb, id)
cb(myMDT_Core.Data.employeeradio.reset(source, id))
end)
end
RegisterNetEvent("myEmergency:openSystem")
AddEventHandler('myEmergency:openSystem',function(_source)
local _source = source or _source
local xPlayer = myMDT_Core.Functions.getPlayer(_source, true, Config.Systems)
openServiceSystem(_source, xPlayer)
end)
RegisterNetEvent("myEmergency:openRadioStates")
AddEventHandler('myEmergency:openRadioStates',function()
local _source = source
local system = myMDT_Core.Functions.getSystemNameBySource(_source)
if system ~= nil and system ~= "" and Config.Systems[system] ~= nil then
local theme = Config.Systems[system].theme or "dark"
local curState = myMDT_Core.Functions.GetCurrentRadio(_source)
local data = handleLoadOverview(_source, 1, "", "radiostate", {})
TriggerClientEvent("myEmergency:openRadio",_source, data, curState, theme)
end
end)
function openServiceSystem(source, xPlayer)
local _source = source
if xPlayer ~= nil and xPlayer.myEmergeny ~= nil then
local openedSystem = myMDT_Core.Functions.getSystemNameBySource(_source)
if openedSystem ~= nil and openedSystem ~= "" then
local systemBehaviour = myMDT_Core.Functions.getSystemBehaviourBySource(_source)
local playerName = myMDT_Core.FW_Wrapper.getNameByIdentifier(myMDT_Core.FW_Wrapper.getPlayerIdentifier(xPlayer))
local playerJob = myMDT_Core.FW_Wrapper.getJobName(xPlayer)
local theme = Config.Systems[xPlayer.myEmergeny.openedSystem].theme
local syncState = exports["myMDT_core"]:GetSyncState()
local syncStateLicenses = exports["myMDT_core"]:GetLicenseSyncState()
TriggerClientEvent(
"myEmergency:open"
,source
, playerName
, xPlayer.myEmergeny.systemRights
, playerJob
, xPlayer.myEmergeny.jobGrade
, systemBehaviour
, xPlayer.myEmergeny.current_job_grades
, theme
, syncState
, syncStateLicenses
)
else
TriggerClientEvent("myEmergency:notify",source, Config.NoSystemText[Config.Locale])
end
else
print("no xPlayer found!")
TriggerClientEvent("myEmergency:notify",source, "Problem: No xPlayer found!")
end
end
exports('DeleteFile', function(_source, id, whereColumn, system)
myEmergency_Data.files.delete(_source, id, whereColumn, system)
end)
exports('DeleteLicense', function(_source, id, whereColumn, system)
myEmergency_Data.licenses.delete(_source, id, whereColumn, system)
end)
exports('SaveLicense', function(_source, data, id)
myEmergency_Data.licenses.save(_source, data, id)
end)
exports('DeleteFileLicense', function(_source, id, whereColumn, system)
myEmergency_Data.fileslicenses.delete(_source, id, whereColumn, system)
end)
exports('SaveFileLicense', function(_source, data, id)
myEmergency_Data.fileslicenses.save(_source, data, id)
end)
exports('GetSystems', function()
return Config.Systems
end)