2026-04-14 17:41:39 +02:00

97 lines
3.9 KiB
JavaScript

/**
* @param {string} key
* @returns {Array}
*/
app.use("/getAllFactions.lvorex", express.json())
app.post("/getAllFactions.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, "Factions", 0)
if (!PermissionCheck) return res.json({ code: 401, message: "Your rank is not enough." })
if (!config.Framework.includes("qb")) return res.json({ code: 404, message: "This function only works on QBCore." })
const Factions = FrameworkObject.Shared.Gangs
const toInsertFactions = []
for await (const [k, faction] of Object.entries(Factions)) {
let result = await query(`
select * from \`madmin_factions\`
where \`faction\` = '${k}'
`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
let [factionImage, factionType] = ["img/DefaultFactionIcon.png", "gangs"]
if (result.length === 0) {
result = await query(`
insert into \`madmin_factions\`
(\`faction\`)
values
('${k}')
`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
} else {
result = result[0]
factionImage = result.image
factionType = result.type
}
let preparingFaction = {
code: k,
label: faction.label,
type: factionType,
image: factionImage,
grades: faction.grades,
mostRankedPlayer: { name: "", grade: { level: 0, name: "" } },
factionMembers: []
}
result = await query(`
select * from \`players\`
where \`gang\` like '%"name":"${k}%'
`)
if (result === false) return
if (result.length === 0) {
preparingFaction.factionMembers = []
} else {
for await (const factionMember of result) {
let dcResult = await query(`
select * from \`madmin_characters\`
where \`identifier\` = '${factionMember.citizenid}'
`)
if (dcResult === false) return res.json({ code: 404, message: "SQL Error Appeared." })
let userAvatar = "img/DefaultIcon.png"
if (dcResult.length !== 0) {
userAvatar = await getPlayerDiscordProfile(dcResult[0].discord.split(":")[1])
}
const factionCredentials = JSON.parse(factionMember.gang)
const charInfo = JSON.parse(factionMember.charinfo)
const preparePlayer = {
name: charInfo.firstname+" "+charInfo.lastname,
grade: factionCredentials.grade.level,
gradeName: factionCredentials.grade.name,
identifier: factionMember.citizenid,
avatar: userAvatar
}
const mostRankedPlayer = preparingFaction.mostRankedPlayer
if (mostRankedPlayer.grade.level < factionCredentials.grade.level) {
preparingFaction.mostRankedPlayer = {
name: factionCredentials.grade.name + ". " + charInfo.firstname+" "+charInfo.lastname,
grade: factionCredentials.grade.level,
identifier: factionMember.citizenid
}
}
preparingFaction.factionMembers.push(preparePlayer)
}
}
toInsertFactions.push(preparingFaction)
}
res.json({ code: 200, message: toInsertFactions })
})