205 lines
8.2 KiB
JavaScript
205 lines
8.2 KiB
JavaScript
/**
|
|
* @param {string} key
|
|
* @returns {Array}
|
|
*/
|
|
|
|
app.use("/getAllServerJobs.lvorex", express.json())
|
|
app.post("/getAllServerJobs.lvorex", async (req, res) => {
|
|
const postBody = req.body
|
|
const { keyFound, userKey } = await controlKey(req, postBody.key)
|
|
|
|
if (keyFound === false) return res.json({ code: 404, message: "Not authorized." })
|
|
const PermissionCheck = await checkPermission(userKey.rank, "Jobs", 0)
|
|
if (!PermissionCheck) return res.json({ code: 401, message: "Your rank is not enough." })
|
|
|
|
const toInsertJobs = []
|
|
|
|
if (config.Framework.includes("qb")) {
|
|
const SharedJobs = FrameworkObject.Shared.Jobs
|
|
const toPrepareJobs = []
|
|
|
|
Object.entries(SharedJobs).forEach(([key, value]) => {
|
|
toPrepareJobs.push({
|
|
label: value.label,
|
|
code: key,
|
|
payment: value.defaultDuty ? 'Default Payment' : 'Off Duty Payment',
|
|
grades: value.grades
|
|
})
|
|
})
|
|
|
|
if (toPrepareJobs.length === 0) return res.json({ code: 200, message: [] })
|
|
|
|
for await (const job of toPrepareJobs) {
|
|
let result = await query(`
|
|
select * from \`players\`
|
|
where \`job\` like '%"name":"${job.code}",%'
|
|
`)
|
|
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
|
|
let mostRankedPlayer = { name: "", grade: { level: 0, name: "" } }
|
|
let jobPlayers = []
|
|
for await (const p of result) {
|
|
let dcResult = await query(`
|
|
select * from \`madmin_characters\`
|
|
where \`identifier\` = '${p.citizenid}'
|
|
`)
|
|
if (dcResult === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
let userAvatar = "img/DefaultIcon.png"
|
|
|
|
if (dcResult.length !== 0) {
|
|
userAvatar = dcResult[0].discord_avatar
|
|
}
|
|
|
|
let jobCredentials = JSON.parse(p.job)
|
|
let charInfo = JSON.parse(p.charinfo)
|
|
|
|
const NeededPlayer = await checkPlayerIsOnline(p.citizenid, res, true)
|
|
if (NeededPlayer) {
|
|
jobCredentials = NeededPlayer.job
|
|
charInfo = NeededPlayer.charinfo
|
|
}
|
|
|
|
const preparePlayer = {
|
|
name: charInfo.firstname+" "+charInfo.lastname,
|
|
grade: jobCredentials.grade.level,
|
|
gradeName: jobCredentials.grade.name,
|
|
identifier: p.citizenid,
|
|
avatar: userAvatar
|
|
}
|
|
|
|
if (mostRankedPlayer.grade.level < jobCredentials.grade.level) {
|
|
mostRankedPlayer = {
|
|
name: jobCredentials.grade.name + ". " + charInfo.firstname+" "+charInfo.lastname,
|
|
grade: jobCredentials.grade.level,
|
|
identifier: p.citizenid
|
|
}
|
|
}
|
|
|
|
jobPlayers.push(preparePlayer)
|
|
}
|
|
|
|
result = await query(`
|
|
select * from \`madmin_jobs\`
|
|
where \`job\` = '${job.code}'
|
|
`)
|
|
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
let mAdminJobCredentials = { type: "state", image: "img/DefaultJobIcon.png" }
|
|
if (result.length === 0) {
|
|
result = await query(`
|
|
insert into \`madmin_jobs\` ( \`job\` )
|
|
values ( '${job.code}' )
|
|
`)
|
|
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
} else {
|
|
mAdminJobCredentials = { type: result[0].type, image: result[0].image }
|
|
}
|
|
|
|
toInsertJobs.push({
|
|
label: job.label,
|
|
code: job.code,
|
|
payment: job.payment,
|
|
grades: job.grades,
|
|
image: mAdminJobCredentials.image,
|
|
type: mAdminJobCredentials.type,
|
|
mostRankedPlayer,
|
|
jobPlayers
|
|
})
|
|
}
|
|
} else if (config.Framework.includes("esx")) {
|
|
const SharedJobs = FrameworkObject.GetJobs()
|
|
const toPrepareJobs = []
|
|
|
|
Object.entries(SharedJobs).forEach(([key, value]) => {
|
|
toPrepareJobs.push({
|
|
label: value.label,
|
|
code: key,
|
|
payment: 'Default Payment',
|
|
grades: value.grades
|
|
})
|
|
})
|
|
|
|
if (toPrepareJobs.length === 0) return res.json({ code: 200, message: [] })
|
|
|
|
for await (const job of toPrepareJobs) {
|
|
let result = await query(`
|
|
select * from \`users\`
|
|
where \`job\` = '${job.code}'
|
|
`)
|
|
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
|
|
let mostRankedPlayer = { name: "", grade: { level: 0, name: "" } }
|
|
let jobPlayers = []
|
|
for await (const p of result) {
|
|
let dcResult = await query(`
|
|
select * from \`madmin_characters\`
|
|
where \`identifier\` = '${p.identifier}'
|
|
`)
|
|
if (dcResult === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
let userAvatar = "img/DefaultIcon.png"
|
|
|
|
if (dcResult.length !== 0) {
|
|
userAvatar = dcResult[0].discord_avatar
|
|
}
|
|
|
|
let preparePlayer = {
|
|
name: p.firstname+" "+p.lastname,
|
|
grade: Number(p.job_grade),
|
|
gradeName: job.grades[p.job_grade].label,
|
|
identifier: p.identifier,
|
|
avatar: userAvatar
|
|
}
|
|
|
|
if (config.DifferentJobGrade) {
|
|
let GradeData = await query(`
|
|
select * from \`job_grades\`
|
|
where \`job_name\` = '${job.code}'
|
|
and \`grade\` = ${p.job_grade}
|
|
`)
|
|
if (GradeData === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
if (GradeData.length === 0) continue
|
|
GradeData = GradeData[0]
|
|
preparePlayer.gradeName = GradeData.label
|
|
}
|
|
|
|
if (mostRankedPlayer.grade.level < Number(p.job_grade)) {
|
|
mostRankedPlayer = {
|
|
name: job.grades[p.job_grade].label + ". " + p.firstname+" "+p.lastname,
|
|
grade: Number(p.job_grade),
|
|
identifier: p.identifier
|
|
}
|
|
}
|
|
|
|
jobPlayers.push(preparePlayer)
|
|
}
|
|
|
|
result = await query(`
|
|
select * from \`madmin_jobs\`
|
|
where \`job\` = '${job.code}'
|
|
`)
|
|
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
let mAdminJobCredentials = { type: "state", image: "img/DefaultJobIcon.png" }
|
|
if (result.length === 0) {
|
|
result = await query(`
|
|
insert into \`madmin_jobs\` ( \`job\` )
|
|
values ( '${job.code}' )
|
|
`)
|
|
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
} else {
|
|
mAdminJobCredentials = { type: result[0].type, image: result[0].image }
|
|
}
|
|
|
|
toInsertJobs.push({
|
|
label: job.label,
|
|
code: job.code,
|
|
payment: job.payment,
|
|
grades: job.grades,
|
|
image: mAdminJobCredentials.image,
|
|
type: mAdminJobCredentials.type,
|
|
mostRankedPlayer,
|
|
jobPlayers
|
|
})
|
|
}
|
|
}
|
|
|
|
res.json({ code: 200, message: toInsertJobs, framework: config.Framework })
|
|
}) |