fix getEmployees

Fixes an issue with the "getEmployees" callback where it wouldn't return people who were recently hired (since ESX doesn't update the database straight away).
This commit is contained in:
Loffes
2020-12-22 02:01:19 +01:00
committed by GitHub
parent af56efc19c
commit ebe0f66d81
+59 -42
View File
@@ -168,52 +168,69 @@ ESX.RegisterServerCallback('esx_society:getSocietyMoney', function(source, cb, s
end)
ESX.RegisterServerCallback('esx_society:getEmployees', function(source, cb, society)
if Config.EnableESXIdentity then
local employees = {}
MySQL.Async.fetchAll('SELECT firstname, lastname, identifier, job, job_grade FROM users WHERE job = @job ORDER BY job_grade DESC', {
['@job'] = society
}, function (results)
local employees = {}
local xPlayers = ESX.GetPlayers()
for k, v in pairs(xPlayers) do
local xPlayer = ESX.GetPlayerFromId(v)
for i=1, #results, 1 do
table.insert(employees, {
name = results[i].firstname .. ' ' .. results[i].lastname,
identifier = results[i].identifier,
job = {
name = results[i].job,
label = Jobs[results[i].job].label,
grade = results[i].job_grade,
grade_name = Jobs[results[i].job].grades[tostring(results[i].job_grade)].name,
grade_label = Jobs[results[i].job].grades[tostring(results[i].job_grade)].label
}
})
end
local name = GetPlayerName(xPlayer.source)
if Config.EnableESXIdentity then
name = xPlayer.get('firstName') .. ' ' .. xPlayer.get('lastName')
end
cb(employees)
end)
else
MySQL.Async.fetchAll('SELECT identifier, job, job_grade FROM users WHERE job = @job ORDER BY job_grade DESC', {
['@job'] = society
}, function (result)
local employees = {}
for i=1, #result, 1 do
table.insert(employees, {
name = GetPlayerName(source),
identifier = result[i].identifier,
job = {
name = result[i].job,
label = Jobs[result[i].job].label,
grade = result[i].job_grade,
grade_name = Jobs[result[i].job].grades[tostring(result[i].job_grade)].name,
grade_label = Jobs[result[i].job].grades[tostring(result[i].job_grade)].label
}
})
end
cb(employees)
end)
if xPlayer.getJob().name == society then
table.insert(employees, {
name = name,
identifier = xPlayer.identifier,
job = {
name = society,
label = xPlayer.getJob().label,
grade = xPlayer.getJob().grade,
grade_name = xPlayer.getJob().grade_name,
grade_label = xPlayer.getJob().grade_label
}
})
end
end
MySQL.Async.fetchAll('SELECT * FROM `users` WHERE `job`=@job ORDER BY job_grade DESC', {
['@job'] = society
}, function(result)
for k, row in pairs(result) do
local alreadyInTable
local identifier = row.identifier
for k, v in pairs(employees) do
if v.identifier == identifier then
alreadyInTable = true
end
end
if not alreadyInTable then
local name = "Name not found." -- maybe this should be a locale instead ¯\_(ツ)_/¯
if Config.EnableESXIdentity then
name = row.firstname .. ' ' .. row.lastname
end
table.insert(employees, {
name = name,
identifier = identifier,
job = {
name = society,
label = Jobs[society].label,
grade = row.job_grade,
grade_name = Jobs[society].grades[tostring(row.job_grade)].name,
grade_label = Jobs[society].grades[tostring(row.job_grade)].label
}
})
end
end
cb(employees)
end)
end)
ESX.RegisterServerCallback('esx_society:getJob', function(source, cb, society)