/** * @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 }) })