Main/resources/[jobs]/[mdt]/myMechanicMDT/server/server.lua
2025-08-14 13:21:51 +02:00

242 lines
8 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()
myEmergency_Data.dashboard.usePoliceData = exports["myMDT_core"]:GetMyMechanicMDT_usePoliceData()
myEmergency_Data.files.usePoliceData = exports["myMDT_core"]:GetMyMechanicMDT_usePoliceData()
end)
if Config.Framework == "ESX" then
ESX.RegisterServerCallback('myMechanicMDT:loadOverview', function(source, cb, pageNum, quicksearch, loadType)
cb(handleLoadOverview(source, pageNum, quicksearch, loadType))
end)
ESX.RegisterServerCallback('myMechanicMDT:loadCustom', function(source, cb, loadType, id)
cb(handleCustomData(source, loadType, id))
end)
ESX.RegisterServerCallback('myMechanicMDT:loadDetails', function(source, cb, id, loadType)
cb(loadDetails(source, id, loadType))
end)
ESX.RegisterServerCallback('myMechanicMDT:finish-manhunt', function(source, cb, id, loadType)
cb(myEmergency_Data.manhunt.finish(source, id, loadType))
end)
ESX.RegisterServerCallback('myMechanicMDT:save-data', function(source, cb, id, data, saveSrc)
cb(handleSave(source, id, data, saveSrc))
end)
ESX.RegisterServerCallback('myMechanicMDT: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('myMechanicMDT: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('myMechanicMDT:SetRadioState', function(source, cb, new_state_id)
cb(myMDT_Core.Data.radiostate.set(source, new_state_id))
end)
ESX.RegisterServerCallback('myMechanicMDT:filterFileDropdown', function(source, cb, parentID, search)
local _source = source
cb(myMDT_Core.Data.filesSaver.getForDropDown(_source, parentID, search))
end)
ESX.RegisterServerCallback('myMechanicMDT:SetVehicle', function(source, cb, new_state_id)
cb(myMDT_Core.Data.employees.setVehicle(source, new_state_id))
end)
ESX.RegisterServerCallback('myMechanicMDT:resetVehicle', function(source, cb, id)
cb(myMDT_Core.Data.emergencyvehicle.reset(source, id))
end)
ESX.RegisterServerCallback('myMechanicMDT:resetEmployeeRadio', function(source, cb, id)
cb(myMDT_Core.Data.employeeradio.reset(source, id))
end)
elseif Config.Framework == "QB" then
QBCore.Functions.CreateCallback('myMechanicMDT:loadOverview', function(source, cb, pageNum, quicksearch, loadType)
cb(handleLoadOverview(source, pageNum, quicksearch, loadType))
end)
QBCore.Functions.CreateCallback('myMechanicMDT:loadCustom', function(source, cb, loadType, id)
cb(handleCustomData(source, loadType, id))
end)
QBCore.Functions.CreateCallback('myMechanicMDT:loadDetails', function(source, cb, id, loadType)
cb(loadDetails(source, id, loadType))
end)
QBCore.Functions.CreateCallback('myMechanicMDT:finish-manhunt', function(source, cb, id, loadType)
cb(myEmergency_Data.manhunt.finish(source, id, loadType))
end)
QBCore.Functions.CreateCallback('myMechanicMDT:save-data', function(source, cb, id, data, saveSrc)
cb(handleSave(source, id, data, saveSrc))
end)
QBCore.Functions.CreateCallback('myMechanicMDT:delete-data', function(source, cb, id, src)
cb(handleDelete(source, id, src))
end)
QBCore.Functions.CreateCallback('myMechanicMDT: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('myMechanicMDT:SetRadioState', function(source, cb, new_state_id)
cb(myMDT_Core.Data.radiostate.set(source, new_state_id))
end)
QBCore.Functions.CreateCallback('myMechanicMDT:filterFileDropdown', function(source, cb, parentID, search)
local _source = source
cb(myMDT_Core.Data.filesSaver.getForDropDown(_source, parentID, search))
end)
QBCore.Functions.CreateCallback('myMechanicMDT:SetVehicle', function(source, cb, new_state_id)
cb(myMDT_Core.Data.employees.setVehicle(source, new_state_id))
end)
QBCore.Functions.CreateCallback('myMechanicMDT:resetVehicle', function(source, cb, id)
cb(myMDT_Core.Data.emergencyvehicle.reset(source, id))
end)
QBCore.Functions.CreateCallback('myMechanicMDT:resetEmployeeRadio', function(source, cb, id)
cb(myMDT_Core.Data.employeeradio.reset(source, id))
end)
end
RegisterNetEvent("myMechanicMDT:openSystem")
AddEventHandler('myMechanicMDT:openSystem',function(_source)
local _source = source or _source
local xPlayer = myMDT_Core.Functions.getPlayer(_source, true, Config.Systems)
openServiceSystem(_source, xPlayer)
end)
RegisterNetEvent("myMechanicMDT:openRadioStates")
AddEventHandler('myMechanicMDT: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("myMechanicMDT: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()
TriggerClientEvent(
"myMechanicMDT:open"
,source
, playerName
, xPlayer.myEmergeny.systemRights
, playerJob
, xPlayer.myEmergeny.jobGrade
, systemBehaviour
, xPlayer.myEmergeny.current_job_grades
, theme
, syncState
)
else
TriggerClientEvent("myMechanicMDT:notify",source, Config.NoSystemText[Config.Locale])
end
else
print("no xPlayer found!")
TriggerClientEvent("myMechanicMDT:notify",source, "Problem: No xPlayer found!")
end
end
--todo syncstate nur wenn myEmergency in Config Aktiv, andernfalls eigenen sync bauen
exports('DeleteFile', function(_source, id, whereColumn, system)
myEmergency_Data.files.delete(_source, id, whereColumn, system)
end)
exports('GetSystems', function()
return Config.Systems
end)