mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-28 22:01:29 +00:00
Merge pull request #1854 from seltonmt012/fix/createjob-existing-job
fix(es_extended/server/modules/createJob): let CreateJob add grades to an existing job
This commit is contained in:
@@ -5,24 +5,10 @@ local NOTIFY_TYPES = {
|
||||
ERROR = "^5[%s]^7-^1[ERROR]^7 %s"
|
||||
}
|
||||
|
||||
local function doesJobAndGradesExist(name, grades)
|
||||
if not ESX.Jobs[name] then
|
||||
return false
|
||||
end
|
||||
|
||||
for _, grade in ipairs(grades) do
|
||||
if not ESX.DoesJobExist(name, grade.grade) then
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local function generateNewJobTable(name, label, grades, jobType)
|
||||
local job = { name = name, label = label, type = jobType, grades = {} }
|
||||
local job = ESX.Jobs[name] or { name = name, label = label, type = jobType, grades = {} }
|
||||
for _, v in pairs(grades) do
|
||||
job.grades[tostring(v.grade)] = { job_name = name, grade = v.grade, name = v.name, label = v.label, salary = v.salary, skin_male = v.skin_male or '{}', skin_female = v.skin_female or '{}' }
|
||||
job.grades[tostring(v.grade)] = { job_name = name, grade = v.grade, name = v.name, label = v.label, salary = v.salary, skin_male = v.skin_male, skin_female = v.skin_female }
|
||||
end
|
||||
|
||||
return job
|
||||
@@ -66,22 +52,47 @@ function ESX.CreateJob(name, label, grades, jobType)
|
||||
jobType = "civ"
|
||||
end
|
||||
|
||||
local currentJobExist = doesJobAndGradesExist(name, grades)
|
||||
local existingJob = MySQL.single.await('SELECT `label`, `type` FROM `jobs` WHERE `name` = ?', { name })
|
||||
local jobExists = existingJob ~= nil
|
||||
local existingGrades = {}
|
||||
|
||||
if currentJobExist then
|
||||
notify("ERROR",currentResourceName, 'Job or grades already exists: `%s`', name)
|
||||
return success
|
||||
if jobExists then
|
||||
label, jobType = existingJob.label, existingJob.type
|
||||
|
||||
local rows = MySQL.query.await('SELECT `grade` FROM `job_grades` WHERE `job_name` = ?', { name })
|
||||
|
||||
for i = 1, #(rows or {}) do
|
||||
existingGrades[tostring(rows[i].grade)] = true
|
||||
end
|
||||
end
|
||||
|
||||
local queries = {
|
||||
{ query = 'INSERT INTO `jobs` (`name`, `label`, `type`) VALUES (?, ?, ?)', values = { name, label, jobType } }
|
||||
}
|
||||
local queries = {}
|
||||
|
||||
if not jobExists then
|
||||
queries[#queries + 1] = {
|
||||
query = 'INSERT INTO `jobs` (`name`, `label`, `type`) VALUES (?, ?, ?)',
|
||||
values = { name, label, jobType }
|
||||
}
|
||||
end
|
||||
|
||||
local newGrades = {}
|
||||
|
||||
for _, grade in pairs(grades) do
|
||||
queries[#queries + 1] = {
|
||||
query = 'INSERT INTO job_grades (job_name, grade, name, label, salary, skin_male, skin_female) VALUES (?, ?, ?, ?, ?, ?, ?)',
|
||||
values = { name, grade.grade, grade.name, grade.label, grade.salary, grade.skin_male and json.encode(grade.skin_male) or '{}', grade.skin_female and json.encode(grade.skin_female) or '{}' }
|
||||
}
|
||||
if not existingGrades[tostring(grade.grade)] then
|
||||
local skinMale = grade.skin_male and json.encode(grade.skin_male) or '{}'
|
||||
local skinFemale = grade.skin_female and json.encode(grade.skin_female) or '{}'
|
||||
|
||||
newGrades[#newGrades + 1] = { grade = grade.grade, name = grade.name, label = grade.label, salary = grade.salary, skin_male = skinMale, skin_female = skinFemale }
|
||||
queries[#queries + 1] = {
|
||||
query = 'INSERT INTO job_grades (job_name, grade, name, label, salary, skin_male, skin_female) VALUES (?, ?, ?, ?, ?, ?, ?)',
|
||||
values = { name, grade.grade, grade.name, grade.label, grade.salary, skinMale, skinFemale }
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
if not queries[1] then
|
||||
notify("ERROR",currentResourceName, 'Job or grades already exists: `%s`', name)
|
||||
return success
|
||||
end
|
||||
|
||||
success = exports.oxmysql:transaction_async(queries)
|
||||
@@ -91,7 +102,7 @@ function ESX.CreateJob(name, label, grades, jobType)
|
||||
return success
|
||||
end
|
||||
|
||||
ESX.Jobs[name] = generateNewJobTable(name, label, grades, jobType)
|
||||
ESX.Jobs[name] = generateNewJobTable(name, label, newGrades, jobType)
|
||||
|
||||
notify("SUCCESS", currentResourceName, 'Job created successfully: `%s`', name)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user