This commit is contained in:
Nordi98 2025-08-14 13:21:51 +02:00
parent 48a36209b5
commit 884f3df7cf
262 changed files with 223207 additions and 2 deletions

Binary file not shown.

View file

@ -0,0 +1,176 @@
ESX = nil
QBCore = nil
players = {}
startSync = false

if Config.Framework == "ESX" then
ESX = exports["es_extended"]:getSharedObject()
elseif Config.Framework == "QB" then
QBCore = exports['qb-core']:GetCoreObject()
end

myMDT_Core = {}
myMDT_Core.Config = Config
myMDT_Core.Data = MyMDT_Core_Data
myMDT_Core.FW_Wrapper = MyMDT_FW_Wrapper
myMDT_Core.Functions = MyMDT_Functions
myMDT_Core.DB = DBFunctions





exports('GetCore', function()
return myMDT_Core
end)

MySQL.ready(function()
if SyncSettings.MainData.active or SyncSettings.Licenses.sync then
startSync = true
end
end)


function DebugPrint(text)
if Config.Debug then
print(text)
end
end


RegisterNetEvent("myMDT:openSystem")
AddEventHandler('myMDT:openSystem',function()
local _source = source
local xPlayer = myMDT_Core.Functions.getPlayer(_source, true, Config.Systems)

local myEmergencySystems = {}
local myMechanicMDTSystems = {}

local currentScript = nil

local done = false

if GetResourceState('myEmergency') == 'started' then
local systems = exports["myEmergency"]:GetSystems()

if jobHasSystem(_source, systems) then

TriggerClientEvent("myEmergency:openSystem", _source)
done = true
end
end

if not done and GetResourceState('myMechanicMDT') == "started" then
local systems = exports["myMechanicMDT"]:GetSystems()

if jobHasSystem(_source, systems) then
TriggerClientEvent("myMechanicMDT:openSystem", _source)
done = true
end
end
end)

RegisterNetEvent("myMDT:openRadioStates")
AddEventHandler('myMDT:openRadioStates',function()

local _source = source
local done = false
local xPlayer = nil
local clientEvent = nil


if GetResourceState('myEmergency') == 'started' then
local systems = exports["myEmergency"]:GetSystems()

if jobHasSystem(_source, systems) then
xPlayer = myMDT_Core.Functions.getPlayer(_source, true, systems)
done = true
clientEvent = "myEmergency:openRadio"
end
end

if not done and GetResourceState('myMechanicMDT') == "started" then
local systems = exports["myMechanicMDT"]:GetSystems()

if jobHasSystem(_source, systems) then
xPlayer = myMDT_Core.Functions.getPlayer(_source, true, systems)
done = true
clientEvent = "myMechnicMDT:openRadio"
end
end

local system = myMDT_Core.Functions.getSystemNameBySource(_source)
local systemConfig = myMDT_Core.Functions.getSystemConfigBySource(_source)

if system ~= nil and system ~= "" and systemConfig[system] ~= nil then
local theme = systemConfig[system].theme or "dark"
local curState = myMDT_Core.Functions.GetCurrentRadio(_source)

local data = MyMDT_Core_Data.radiostate.get(_source, "", 1)

TriggerClientEvent(clientEvent,_source, data.data, curState, theme)
end
end)


function jobHasSystem(_source,systemConfig)
local xPlayer = myMDT_Core.FW_Wrapper.getPlayerBySource(_source)
local playerjob = myMDT_Core.FW_Wrapper.getJobName(xPlayer)
local retval = false

for key, values in pairs(systemConfig) do
if retval == false then
for mainjob, subjobs in pairs(values.MainJob) do
if playerjob == mainjob then
retval = true
end

if retval == "" then
for k, subjob in pairs(subjobs.offdutyjobs) do
if playerjob == subjob then
retval = key
retval = true
end
end
end
end
end
end

return retval
end

exports('GetSyncState', function()
return SyncSettings.MainData
end)
exports('GetLicenseSyncState', function()
return SyncSettings.Licenses
end)
exports('GetMyMechanicMDT_usePoliceData', function()
return Config.MyMechanicMDT.usePoliceData
end)

exports('SaveVehicleData', function(_source, data)
if Config.VehiclesAreCreatedByExport then
MyMDT_Core_Data.regvehicle.SaveByExport(_source, data)
end
end)

exports('DeleteVehicleData', function(plate)
if Config.VehiclesAreCreatedByExport then
MyMDT_Core_Data.regvehicle.delete(nil, plate, "plate")
end
end)

exports('VehicleChangePlate', function(old_plate, new_plate)
if Config.VehiclesAreCreatedByExport then
MyMDT_Core_Data.regvehicle.ChangePlate(old_plate, new_plate)
end
end)

exports('SaveCitizenData', function(_source, data)
if Config.FilesAreCreatedByExport then
MyMDT_Core_Data.filesSaver.SaveByExport(_source, data)
end
end)

View file

@ -0,0 +1,143 @@
--[[
find documentation here:
https://daburnergermany.gitbook.io/myemergency-2.0/info/sync
]]


Sync = {}
Sync.Debug = false

Sync.Licenses = myMDT_core_sync.licenses

Sync.MainData = {
Files = myMDT_core_sync.files,
FilesLicenses = myMDT_core_sync.files_licenses,
Vehicles = myMDT_core_sync.vehicles,
Settings = {
myEmergency = false,
myMechanicMDT = false,
Interval= 1*60*1000,
Active=nil,
OnlyOnStartUp=nil
}
}


--here sync the maindata
CreateThread(function()
if SyncSettings.MainData.active then

local anySystemStarted = false

Sync.MainData.Settings.Active = SyncSettings.MainData.active
Sync.MainData.Settings.Interval = SyncSettings.MainData.Interval
Sync.MainData.Settings.OnlyOnStartUp = SyncSettings.MainData.onlyOnStartUp

Sync.Debug = SyncSettings.MainData.showServerMessages

Sync.MainData.Vehicles.SetDebug(Sync.Debug)
Sync.MainData.Vehicles.SetShowServerMessages(SyncSettings.MainData.showServerMessages)
Sync.MainData.Vehicles.SetFullsync(SyncSettings.MainData.fullSync)
Sync.MainData.Vehicles.SetWhereStatement(SyncSettings.MainData.VehiclesWhere)
Sync.MainData.Vehicles.SetActive(SyncSettings.MainData.Types.Vehicles)

Sync.MainData.Files.SetDebug(Sync.Debug)
Sync.MainData.Files.SetShowServerMessages(SyncSettings.MainData.showServerMessages)
Sync.MainData.Files.SetFullsync(SyncSettings.MainData.fullSync)
Sync.MainData.Files.SetActive(SyncSettings.MainData.Types.Users)

Sync.MainData.FilesLicenses.SetActive(SyncSettings.MainData.Types.Users and SyncSettings.MainData.Types.UserLicenses)
Sync.MainData.FilesLicenses.SetLicenseSystem("ESX", SyncSettings.Licenses.system.ESX)
Sync.MainData.FilesLicenses.SetLicenseSystem("myDocuments", SyncSettings.Licenses.system.myDocuments)
Sync.MainData.FilesLicenses.SetLicenseSystem("bcs_licensemanager", SyncSettings.Licenses.system.bcs_licensemanager)
Sync.MainData.FilesLicenses.SetFullsync(SyncSettings.MainData.fullSync)

local run = true
while run do
while startSync == false do
Citizen.Wait(100)
end
while anySystemStarted == false do
if GetResourceState('myEmergency') == 'started' or GetResourceState('myMechanicMDT') == 'started' then
anySystemStarted = true
end

if not anySystemStarted then
Citizen.Wait(100)
end
end

if GetResourceState('myEmergency') == 'started' then
Sync.MainData.Settings.myEmergency = true
anySystemStarted = true
end

if GetResourceState('myMechanicMDT') == 'started' then
Sync.MainData.Settings.myMechanicMDT = true
anySystemStarted = true
end

if Sync.Debug then
print("Framework is " .. Config.Framework)
end


Sync.MainData.Vehicles.SetSystemsActive(Sync.MainData.Settings.myEmergency, Sync.MainData.Settings.myMechanicMDT)
Sync.MainData.Files.SetSystemsActive(Sync.MainData.Settings.myEmergency, Sync.MainData.Settings.myMechanicMDT)
Sync.MainData.FilesLicenses.SetSystemsActive(Sync.MainData.Settings.myEmergency, Sync.MainData.Settings.myMechanicMDT)
Sync.Licenses.SetSystemsActive(Sync.MainData.Settings.myEmergency, Sync.MainData.Settings.myMechanicMDT)

Sync.MainData.Files.Delete()
Sync.MainData.Files.transferToMDT(Sync.MainData.Files.GetData())

Sync.MainData.Vehicles.Delete()
Sync.MainData.Vehicles.transferToMDT(Sync.MainData.Vehicles.GetData())

Sync.MainData.FilesLicenses.ImportData()
Sync.MainData.FilesLicenses.Delete()

if Sync.Debug then
print("-----------------------------------------")
end


if Sync.MainData.Settings.OnlyOnStartUp then
run = false
else
Citizen.Wait(Sync.MainData.Settings.Interval)
end
end
end
end)

CreateThread(function()
Sync.Licenses.SetActive(SyncSettings.Licenses.sync)
Sync.Licenses.SetLicenseSystem("ESX", SyncSettings.Licenses.system.ESX)
Sync.Licenses.SetLicenseSystem("myDocuments", SyncSettings.Licenses.system.myDocuments)
Sync.Licenses.SetLicenseSystem("bcs_licensemanager", SyncSettings.Licenses.system.bcs_licensemanager)
Sync.Licenses.SetInterval(SyncSettings.Licenses.interval)
Sync.Licenses.SetOnlyOnStartup(SyncSettings.Licenses.onlyOnStartUp)
Sync.Licenses.ValidateExecution()

if Sync.Licenses.Active and Sync.Licenses.Deactivated == false then
local run = true
while run do
while startSync == false do
Wait(100)
end

Sync.Licenses.ImportData()
Sync.Licenses.Delete()
if Sync.Licenses.OnlyOnStartup and Sync.Licenses.ImportDone then
run = false
else
Wait(Sync.Licenses.Interval)
end
end
end
end)

View file

@ -0,0 +1,254 @@
myMDT_core_sync = myMDT_core_sync or {}
myMDT_core_sync.files = {}
myMDT_core_sync.files.Debug = false
myMDT_core_sync.files.Active = false
myMDT_core_sync.files.FullSync = nil
myMDT_core_sync.files.showServerMessages = false
myMDT_core_sync.files.Systems = {}


myMDT_core_sync.files.SetDebug = function(value)
myMDT_core_sync.files.Debug = value
end
myMDT_core_sync.files.SetActive = function(value)
myMDT_core_sync.files.Active = value
end
myMDT_core_sync.files.SetFullsync = function(value)
myMDT_core_sync.files.FullSync = value
end
myMDT_core_sync.files.SetWhereStatement = function(value)
myMDT_core_sync.files.WhereStatement = value
end
myMDT_core_sync.files.SetShowServerMessages = function(value)
myMDT_core_sync.files.showServerMessages = value
end


myMDT_core_sync.files.SetSystemsActive = function(myEmergency, myMechanicMDT)
myMDT_core_sync.files.Systems = {}

if myEmergency == true and myMechanicMDT == true then
myMDT_core_sync.files.Systems = {"police", "medic", "mechanic"}
elseif myEmergency ~= true and myMechanicMDT == true then
myMDT_core_sync.files.Systems = {"mechanic"}
elseif myEmergency == true and myMechanicMDT ~= true then
myMDT_core_sync.files.Systems = {"police", "medic"}
end
end

myMDT_core_sync.files.GetData = function()
local data = {}

if myMDT_core_sync.files.Active ~= true then
return data
end

for key,system in pairs(myMDT_core_sync.files.Systems) do
if myMDT_core_sync.files.Debug then
print("myMDT_core_sync.files.GetData -> get data for system: " .. system)
end

if Config.Framework == "ESX" then
local params = {}

if myMDT_core_sync.files.FullSync then
query = "SELECT * FROM users"
else
query = "SELECT * FROM users where identifier not in (select player_id from myemergency_files where myemergency_files.fromsystem = @fromsystem)"
params = {
["@fromsystem"] = system
}
end


local temp = MySQL.Sync.fetchAll(query, params)

if myMDT_core_sync.files.Debug then
print("myMDT_core_sync.files.GetData -> found " .. #temp .. " entries for sync")
end

for rowIndex, rowData in pairs(temp) do

if myMDT_core_sync.files.Debug then
print("lastname = " .. tostring(rowData.lastname))
print("firstname = " .. tostring(rowData.firstname))
end


if rowData.firstname ~= nil or rowData.lastname ~= nil then
table.insert(data, myMDT_core_sync.files.FormatData_ESX(rowData, system))
end
end


elseif Config.Framework == "QB" then

local params = {}

if myMDT_core_sync.files.FullSync then
query = "SELECT * FROM players"
else
query = "SELECT * FROM players where citizenid not in (select player_id from myemergency_files where myemergency_files.fromsystem = @fromsystem)"
params = {
["@fromsystem"] = system
}
end

local temp = MySQL.Sync.fetchAll(query, params)

if myMDT_core_sync.files.Debug then
print("myMDT_core_sync.files.GetData -> found " .. #temp .. " entries for sync")
end


for rowIndex, rowData in pairs(temp) do
table.insert(data, myMDT_core_sync.files.FormatData_QB(rowData, system))
end
end
end

return data
end

myMDT_core_sync.files.transferToMDT = function(data)

if myMDT_core_sync.files.Debug then
print("myMDT_core_sync.files.transferToMDT -> Start transfer " .. #data .. " entries")
end

for k,v in pairs(data) do
myMDT_Core.Data.filesSaver.save(nil, v, v.id)
end

if myMDT_core_sync.files.Debug then
print("myMDT_core_sync.files.transferToMDT -> Finished transfer " .. #data .. " entries")
end
end


myMDT_core_sync.files.Delete = function()
if myMDT_core_sync.files.Active ~= true then
return
end

local query = ""

for key,system in pairs(myMDT_core_sync.files.Systems) do
if myMDT_core_sync.files.Debug then
print("myMDT_core_sync.files.Delete -> get data to delete for system: " .. system)
end


if Config.Framework == "ESX" then
query = [[
SELECT myemergency_files.* FROM myemergency_files
LEFT JOIN users on users.identifier = myemergency_files.player_id
WHERE users.identifier is null
and myemergency_files.fromsystem = @fromsystem
]]
elseif Config.Framework == "QB" then
query = [[
SELECT myemergency_files.* FROM myemergency_files
LEFT JOIN players on players.citizenid = myemergency_files.player_id
WHERE players.citizenid is null
and myemergency_files.fromsystem = @fromsystem
]]
end

if query ~= "" then
local files = MySQL.Sync.fetchAll(query, {
["@fromsystem"] = system
})

if myMDT_core_sync.files.Debug then
print("myMDT_core_sync.files.Delete -> Start delete " .. #files .. " entries")
end

for k,v in pairs(files) do

if system == 'police' or system == 'medic' then
exports["myEmergency"]:DeleteFile(nil, v.id, "id", system)
else
exports["myMechanicMDT"]:DeleteFile(nil, v.id, "id", system)
end
end
if myMDT_core_sync.files.Debug then
print("myMDT_core_sync.files.Delete -> Finished delete " .. #files .. " entries")
end
end
end
end


--[[
SECTION FOR DATA FORMATTING
]]
myMDT_core_sync.files.FormatData_ESX = function(inputData, system)

local playername = inputData.firstname or ""
if playername ~= "" then
playername = playername .. (inputData.lastname and " " .. inputData.lastname or "")
else
playername = playername .. (inputData.lastname and inputData.lastname or "")
end

return {
id = inputData.identifier,
player_id = inputData.identifier,
fromsystem = system,
name = playername,
sex = inputData.sex == "m" and 1 or 2,
size = inputData.height,
}
end


myMDT_core_sync.files.FormatData_QB = function(inputData, system)
local charinfo = json.decode(inputData.charinfo)

return {
id = inputData.citizenid,
player_id = inputData.citizenid,
fromsystem = system,
name = charinfo.firstname .. " " .. charinfo.lastname ,
phone = inputData.phone,
birth = inputData.birthdate,
}
end



--example usage myMDT_core_sync.files.convertDateForMDT(<here date>, ".", "dd.mm.yyyy")
--example usage myMDT_core_sync.files.convertDateForMDT(<here date>, "-", "yyyy-mm-dd")
--example usage myMDT_core_sync.files.convertDateForMDT(<here date>, "/", "mm/dd/yyyy")
myMDT_core_sync.files.convertDateForMDT = function(inputstr, separator, source_format)
if separator == nil then
return inputstr
end
local t={}
if separator == "." then
separator = "%."
end
for str in string.gmatch(inputstr, "([^"..separator.."]+)") do
table.insert(t, str)
end
local questionFormat = string.lower(source_format:gsub(separator, ""))
if questionFormat == "ddmmyyyy" then
return t[3] .. "-" .. t[2] .. "-" .. t[1]
elseif questionFormat == "mmddyyyy" then
return t[3] .. "-" .. t[1] .. "-" .. t[2]
elseif questionFormat == "yyyymmdd" then
return inputstr
else
print("no convert found for format : " .. tostring(source_format))
return inputstr
end
end

View file

@ -0,0 +1,147 @@
myMDT_core_sync = myMDT_core_sync or {}

myMDT_core_sync.files_licenses = {}
myMDT_core_sync.files_licenses.Debug = false
myMDT_core_sync.files_licenses.Active = false
myMDT_core_sync.files_licenses.FullSync = nil
myMDT_core_sync.files_licenses.showServerMessages = false
myMDT_core_sync.files_licenses.Systems = {}

myMDT_core_sync.files_licenses.LicenseSystem = {
ESX = false,
myDocuments = false,
bcs_licensemanager = false,
}



myMDT_core_sync.files_licenses.SetDebug = function(value)
myMDT_core_sync.files.Debug = value
end
myMDT_core_sync.files_licenses.SetActive = function(value)
myMDT_core_sync.files_licenses.Active = value
end
myMDT_core_sync.files_licenses.SetLicenseSystem = function(systemname, value)
myMDT_core_sync.files_licenses.LicenseSystem[systemname] = value
end
myMDT_core_sync.files_licenses.SetFullsync = function(value)
myMDT_core_sync.files.FullSync = value
end
myMDT_core_sync.files_licenses.SetShowServerMessages = function(value)
myMDT_core_sync.files.showServerMessages = value
end

myMDT_core_sync.files_licenses.SetSystemsActive = function(myEmergency, myMechanicMDT)
myMDT_core_sync.files_licenses.Systems = {}

if myEmergency == true then
myMDT_core_sync.files_licenses.Systems = {"police"}
end
end

myMDT_core_sync.files_licenses.ImportData = function()
if #myMDT_core_sync.files_licenses.Systems == 0 or myMDT_core_sync.files_licenses.Active ~= true then
return
end

local data = {}
local query = {}

if myMDT_core_sync.files_licenses.LicenseSystem.ESX then

query = "SELECT *,(select id from myemergency_licenses where string_key = user_licenses.type) as license_id FROM user_licenses having license_id is not null"

if not myMDT_core_sync.files_licenses.FullSync then
query = query .. " AND (SELECT file_id from myemergency_files_licences where license_id = (select id from myemergency_licenses where string_key = user_licenses.type) and myemergency_files_licences.file_id = user_licenses.`owner`) is null"
end

local temp = MySQL.Sync.fetchAll(query)

for k,v in pairs(temp) do
table.insert(data,{
fromsystem = 'police',
file_id = v.owner,
license_id = v.license_id
})
end

elseif myMDT_core_sync.files_licenses.LicenseSystem.myDocuments then
query = "SELECT *,(select id from myemergency_licenses where string_key = user_licenses.type) as license_id FROM user_licenses having license_id is not null"

if not myMDT_core_sync.files_licenses.FullSync then
query = query .. " AND (SELECT file_id from myemergency_files_licences where license_id = (select id from myemergency_licenses where string_key = user_licenses.type) and myemergency_files_licences.file_id = user_licenses.`owner`) is null"
end

local temp = MySQL.Sync.fetchAll(query)
for k,v in pairs(temp) do
table.insert(data,{
fromsystem = 'police',
file_id = v.owner,
license_id = v.license_id
})
end
elseif myMDT_core_sync.files_licenses.LicenseSystem.bcs_licensemanager then
query = "SELECT *,(select id from myemergency_licenses where string_key = licenses.license) as license_id FROM licenses having license_id is not null"
local temp = MySQL.Sync.fetchAll(query)
for k,v in pairs(temp) do
table.insert(data,{
fromsystem = 'police',
file_id = v.owner,
license_id = v.license_id
})
end
end

for k,v in pairs(data) do
exports["myEmergency"]:SaveFileLicense(nil, v, nil)
end
end






myMDT_core_sync.files_licenses.Delete = function()
if #myMDT_core_sync.files_licenses.Systems == 0 or myMDT_core_sync.files_licenses.Active ~= true then
return
end

local data = {}
local query = ""
if myMDT_core_sync.files_licenses.LicenseSystem.ESX then
query = " "..
" select myemergency_files_licences.id, myemergency_files_licences.fromsystem from myemergency_files_licences"..
" left join myemergency_licenses on myemergency_licenses.id = myemergency_files_licences.license_id"..
" left join user_licenses on user_licenses.type = myemergency_licenses.string_key"..
" AND user_licenses.`owner` = myemergency_files_licences.file_id"..
" where user_licenses.id is null and myemergency_files_licences.fromsystem = 'police'"
data = MySQL.Sync.fetchAll(query)

elseif myMDT_core_sync.files_licenses.LicenseSystem.myDocuments then
query = " "..
" select myemergency_files_licences.id, myemergency_files_licences.fromsystem from myemergency_files_licences"..
" left join myemergency_licenses on myemergency_licenses.id = myemergency_files_licences.license_id"..
" left join user_licenses on user_licenses.type = myemergency_licenses.string_key"..
" AND user_licenses.`owner` = myemergency_files_licences.file_id"..
" where user_licenses.id is null and myemergency_files_licences.fromsystem = 'police'"
data = MySQL.Sync.fetchAll(query)

elseif myMDT_core_sync.files_licenses.LicenseSystem.bcs_licensemanager then
query = " "..
" select myemergency_files_licences.id, myemergency_files_licences.fromsystem from myemergency_files_licences"..
" left join myemergency_licenses on myemergency_licenses.id = myemergency_files_licences.license_id"..
" left join licenses on licenses.license = myemergency_licenses.string_key"..
" AND licenses.`owner` = myemergency_files_licences.file_id"..
" where licenses.cardid is null and myemergency_files_licences.fromsystem = 'police'"
data = MySQL.Sync.fetchAll(query)
end

for k,v in pairs(data) do
exports["myEmergency"]:DeleteFileLicense(nil, v.id, nil, 'police')
end
end

View file

@ -0,0 +1,137 @@
myMDT_core_sync = myMDT_core_sync or {}

myMDT_core_sync.licenses = {}
myMDT_core_sync.licenses.Deactivated = false
myMDT_core_sync.licenses.ImportDone = false
myMDT_core_sync.licenses.Active = false
myMDT_core_sync.licenses.LicenseSystem = {
ESX = false,
myDocuments = false,
bcs_licensemanager = false,
}
myMDT_core_sync.licenses.Interval = nil
myMDT_core_sync.licenses.OnlyOnStartup = nil
myMDT_core_sync.licenses.Systems = {}


myMDT_core_sync.licenses.SetActive = function(value)
myMDT_core_sync.licenses.Active = value
end
myMDT_core_sync.licenses.SetLicenseSystem = function(systemname, value)
myMDT_core_sync.licenses.LicenseSystem[systemname] = value
end
myMDT_core_sync.licenses.SetInterval = function(value)
myMDT_core_sync.licenses.Interval = value
end
myMDT_core_sync.licenses.SetOnlyOnStartup = function(value)
myMDT_core_sync.licenses.OnlyOnStartup = value
end

myMDT_core_sync.licenses.SetSystemsActive = function(myEmergency, myMechanicMDT)
myMDT_core_sync.licenses.Systems = {}

if myEmergency == true then
myMDT_core_sync.licenses.Systems = {"police"}
end
end

myMDT_core_sync.licenses.ValidateExecution = function()
if myMDT_core_sync.licenses.LicenseSystem.bcs_licensemanager then
myMDT_core_sync.licenses.Deactivated = true
end
end


myMDT_core_sync.licenses.ImportData = function()
if #myMDT_core_sync.licenses.Systems == 0 or myMDT_core_sync.licenses.Active ~= true or myMDT_core_sync.licenses.Deactivated == true then
return
end

local importData = {}

if myMDT_core_sync.licenses.LicenseSystem.ESX then
query = "SELECT *, IFNULL((SELECT id from myemergency_licenses where string_key = licenses.type),-1) as id FROM licenses"
local temp = MySQL.Sync.fetchAll(query)

for k,v in pairs(temp) do
table.insert(importData,{
id = v.id,
fromsystem = 'police',
string_key = v.type,
name = v.label
})
end

elseif myMDT_core_sync.licenses.LicenseSystem.myDocuments then
if GetResourceState('myDocuments') == 'started' then
local definedDocuments = exports["myDocuments"]:GetGiveableLicenses()

local documentsCleaned = {}
local documentsInDatabase = {}
local toDelete = {}
for k,v in pairs(definedDocuments) do
documentsCleaned[v.type] = v.label
end
local temp = MySQL.Sync.fetchAll("SELECT * from myemergency_licenses where fromsystem='police'")
for k,v in pairs(temp) do
documentsInDatabase[v.string_key] = v.id
end
for k,v in pairs(documentsCleaned) do
table.insert(importData,{
id = documentsInDatabase[k],
fromsystem = 'police',
string_key = k,
name = v
})
end

end
end

for k,v in pairs(importData) do
exports["myEmergency"]:SaveLicense(nil, v, nil)
end

myMDT_core_sync.licenses.ImportDone = (#importData > 0)

end

myMDT_core_sync.licenses.Delete = function()

if #myMDT_core_sync.licenses.Systems == 0 or myMDT_core_sync.licenses.Active ~= true or myMDT_core_sync.licenses.Deactivated == true then
return
end

if myMDT_core_sync.licenses.LicenseSystem.ESX then
query = " select id from myemergency_licenses where (SELECT COUNT(*) FROM licenses where type = myemergency_licenses.string_key) = 0 and myemergency_licenses.fromsystem='police'"
local data = MySQL.Sync.fetchAll(query)

for k,v in pairs(data) do
exports["myEmergency"]:DeleteLicense(nil, v.id, nil, "police")
end


elseif myMDT_core_sync.licenses.LicenseSystem.myDocuments then
if GetResourceState('myDocuments') == 'started' then
local definedDocuments = exports["myDocuments"]:GetGiveableLicenses()

local documentsCleaned = {}
local toDelete = {}
for k,v in pairs(definedDocuments) do
documentsCleaned[v.type] = v.label
end
local temp = MySQL.Sync.fetchAll("SELECT * from myemergency_licenses where fromsystem='police'")
for k,v in pairs(temp) do
if documentsCleaned[v.string_key] == nil then
exports["myEmergency"]:DeleteLicense(nil, v.id, nil, "police")
end
end
end
end
end

View file

@ -0,0 +1,213 @@
myMDT_core_sync = myMDT_core_sync or {}

myMDT_core_sync.vehicles = {}
myMDT_core_sync.vehicles.Debug = false
myMDT_core_sync.vehicles.Active = false
myMDT_core_sync.vehicles.FullSync = nil
myMDT_core_sync.vehicles.WhereStatement = nil
myMDT_core_sync.vehicles.showServerMessages = false
myMDT_core_sync.vehicles.QuestionOwnerOnPartialSync = true
myMDT_core_sync.vehicles.Systems = {}


myMDT_core_sync.vehicles.SetDebug = function(value)
myMDT_core_sync.vehicles.Debug = value
end
myMDT_core_sync.vehicles.SetActive = function(value)
myMDT_core_sync.vehicles.Active = value
end
myMDT_core_sync.vehicles.SetFullsync = function(value)
myMDT_core_sync.vehicles.FullSync = value
end
myMDT_core_sync.vehicles.SetWhereStatement = function(value)
myMDT_core_sync.vehicles.WhereStatement = value
end
myMDT_core_sync.vehicles.SetShowServerMessages = function(value)
myMDT_core_sync.vehicles.showServerMessages = value
end
myMDT_core_sync.vehicles.SetSystemsActive = function(myEmergency, myMechanicMDT)
myMDT_core_sync.vehicles.Systems = {}

if myEmergency == true and myMechanicMDT == true then
myMDT_core_sync.vehicles.Systems = {"police", "mechanic"}
elseif myEmergency ~= true and myMechanicMDT == true then
myMDT_core_sync.vehicles.Systems = {"mechanic"}
elseif myEmergency == true and myMechanicMDT ~= true then
myMDT_core_sync.vehicles.Systems = {"police"}
end
end

myMDT_core_sync.vehicles.GetData = function()
local data = {}

if myMDT_core_sync.vehicles.Active ~= true then
return data
end
local gametable = Config.Framework == "ESX" and "owned_vehicles" or "player_vehicles"
local identifier = Config.Framework == "ESX" and "owned_vehicles.owner" or "player_vehicles.citizenid"

for key,system in pairs(myMDT_core_sync.vehicles.Systems) do
if myMDT_core_sync.vehicles.Debug then
print("myMDT_core_sync.vehicles.GetData -> get data for system: " .. system)
end

local where = ""

if myMDT_core_sync.vehicles.WhereStatement ~= nil and myMDT_core_sync.vehicles.WhereStatement ~= "" then
where = where .. " WHERE (" .. myMDT_core_sync.vehicles.WhereStatement .. ")"
end

if myMDT_core_sync.vehicles.FullSync == false then

if myMDT_core_sync.vehicles.QuestionOwnerOnPartialSync then
where = where .. (where == "" and " WHERE " or " AND ") .. " (myemergency_reg_vehicle.id is null or myemergency_reg_vehicle.owner <> " .. identifier .. ")"
else
where = where .. (where == "" and " WHERE " or " AND ") .. " (myemergency_reg_vehicle.id is null)"
end
end

query = " " ..
" SELECT " .. gametable.. ".*, ifnull(myemergency_reg_vehicle.id, -1) as id " ..
" FROM " .. gametable ..
" LEFT JOIN myemergency_reg_vehicle ON myemergency_reg_vehicle.plate = " .. gametable .. ".plate" ..
" AND myemergency_reg_vehicle.fromsystem = @fromsystem" ..
where
local temp = MySQL.Sync.fetchAll(query, {
["@fromsystem"] = system
})

if Config.Framework == "ESX" then
for rowKey,rowData in pairs(temp) do
table.insert(data, myMDT_core_sync.vehicles.FormatData_ESX(rowData, system))
end

elseif Config.Framework == "QB" then
for rowKey,rowData in pairs(temp) do
table.insert(data, myMDT_core_sync.vehicles.FormatData_QB(rowData, system))
end
end
end

return data
end


myMDT_core_sync.vehicles.transferToMDT = function(data)

if myMDT_core_sync.vehicles.Debug then
print("myMDT_core_sync.vehicles.transferToMDT -> Start transfer " .. #data .. " entries")
end

for k,v in pairs(data) do
myMDT_Core.Data.regvehicle.save(nil, v, v.id)
end

if myMDT_core_sync.vehicles.Debug then
print("myMDT_core_sync.vehicles.transferToMDT -> Finished transfer " .. #data .. " entries")
end
end




myMDT_core_sync.vehicles.Delete = function()
if myMDT_core_sync.vehicles.Active ~= true then
return
end

local gametable = Config.Framework == "ESX" and "owned_vehicles" or "player_vehicles"
local query = ""

for key,system in pairs(myMDT_core_sync.vehicles.Systems) do
if myMDT_core_sync.vehicles.Debug then
print("myMDT_core_sync.vehicles.Delete -> get data to delete for system: " .. system)
end


local where = ""
if myMDT_core_sync.vehicles.WhereStatement ~= nil and myMDT_core_sync.vehicles.WhereStatement ~= "" then
where = where .. " AND (" .. myMDT_core_sync.vehicles.WhereStatement .. ")"
end

query = [[
SELECT myemergency_reg_vehicle.*
FROM myemergency_reg_vehicle
]]
query = query .. " WHERE (SELECT COUNT(*) FROM " .. gametable .. " WHERE " .. gametable .. ".plate = myemergency_reg_vehicle.plate " .. where .. ") = 0 and myemergency_reg_vehicle.fromsystem = @fromsystem"
data = MySQL.Sync.fetchAll(query, {
["@fromsystem"] = system
})

if myMDT_core_sync.vehicles.Debug then
print("myMDT_core_sync.vehicles.Delete -> Start delete " .. #data .. " entries and dependecies")
end

for k,v in pairs(data) do
MyMDT_Core_Data.regvehicle.delete(nil, v.id, "id")
end

if myMDT_core_sync.vehicles.Debug then
print("myMDT_core_sync.vehicles.Delete -> Finished delete " .. #data .. " entries and dependecies")
end



end
end


--[[
SECTION FOR DATA FORMATTING
]]
myMDT_core_sync.vehicles.FormatData_ESX = function(inputData, system)
if inputData.id == -1 then
return {
id = inputData.id,
fromsystem = system,
plate = inputData.plate,
owner = inputData.owner,
others = '',
}
else
return {
id = inputData.id,
fromsystem = system,
plate = inputData.plate,
owner = inputData.owner,
}
end

end


myMDT_core_sync.vehicles.FormatData_QB = function(inputData, system)

if inputData.id == -1 then
return {
id = inputData.id,
fromsystem = system,
plate = inputData.plate,
owner = inputData.citizenid,
mot = inputData.mot,
others = '',
}
else
return {
id = inputData.id,
fromsystem = system,
plate = inputData.plate,
owner = inputData.citizenid,
mot = inputData.mot,
}
end

end