97 lines
3.9 KiB
JavaScript
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 })
|
|
}) |