291 lines
12 KiB
JavaScript
291 lines
12 KiB
JavaScript
/**
|
|
* @param {string} key
|
|
* @returns {Array}
|
|
*/
|
|
|
|
app.use("/getServerVehicles.lvorex", express.json())
|
|
app.post("/getServerVehicles.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, "Vehicles", 0);
|
|
if (!PermissionCheck) return res.json({ code: 401, message: "Your rank is not enough." });
|
|
|
|
const vehicles = [];
|
|
|
|
if (config.Framework.includes("qb")) {
|
|
const SharedVehicles = await LV.GetAllServerVehicles();
|
|
|
|
if (!SharedVehicles || SharedVehicles.length === 0) {
|
|
return res.json({ code: 404, message: "No vehicles found or failed to retrieve vehicles." });
|
|
}
|
|
|
|
for (const value of SharedVehicles) {
|
|
let result = await query(`
|
|
SELECT * FROM \`madmin_vehicles\`
|
|
WHERE \`model\` = '${value.model}'
|
|
`);
|
|
|
|
if (result === false) {
|
|
return res.json({ code: 404, message: "SQL Error Appeared." });
|
|
}
|
|
|
|
let vehicleClass = "E";
|
|
let vehicleCategory = "Vanilla";
|
|
let vehicleImportStatus = 0;
|
|
let vehicleImage = "img/CarImage.png";
|
|
|
|
if (result.length !== 0) {
|
|
result = result[0];
|
|
vehicleClass = result.class;
|
|
vehicleCategory = result.category;
|
|
vehicleImportStatus = result.import;
|
|
vehicleImage = result.image;
|
|
} else {
|
|
result = await query(`
|
|
INSERT INTO \`madmin_vehicles\` (
|
|
\`model\`,
|
|
\`class\`,
|
|
\`category\`,
|
|
\`import\`
|
|
) VALUES (
|
|
'${value.model}',
|
|
'${vehicleClass}',
|
|
'${vehicleCategory}',
|
|
0
|
|
)
|
|
`);
|
|
|
|
if (result === false) {
|
|
return res.json({ code: 404, message: "SQL Error Appeared." });
|
|
}
|
|
}
|
|
|
|
vehicles.push({
|
|
brand: value.brand,
|
|
label: value.name,
|
|
mainCategory: vehicleCategory,
|
|
class: vehicleClass, // E D C B A A+ S S+
|
|
model: value.model,
|
|
shop: value.shop,
|
|
category: value.categoryLabel ?? value.category,
|
|
categoryValue: value.category,
|
|
hash: GetHashKey(value.model),
|
|
price: value.price,
|
|
import: vehicleImportStatus,
|
|
image: vehicleImage
|
|
});
|
|
}
|
|
} else if (config.Framework.includes("esx")) {
|
|
let result = await LV.GetAllServerVehicles();
|
|
|
|
if (!result || result.length === 0) {
|
|
return res.json({ code: 404, message: "No vehicles found or failed to retrieve vehicles." });
|
|
}
|
|
|
|
for await (const vehicle of result) {
|
|
let MAdminVehicle = await query(`
|
|
SELECT * FROM \`madmin_vehicles\`
|
|
WHERE \`model\` = '${vehicle.model}'
|
|
`);
|
|
|
|
if (MAdminVehicle === false) return res.json({ code: 404, message: "SQL Error Appeared." });
|
|
MAdminVehicle = MAdminVehicle[0];
|
|
let vehicleClass = "E";
|
|
let vehicleCategory = "Vanilla";
|
|
let vehicleImportStatus = 0;
|
|
let vehicleImage = "img/CarImage.png";
|
|
|
|
if (MAdminVehicle) {
|
|
vehicleClass = MAdminVehicle.class;
|
|
vehicleCategory = MAdminVehicle.category;
|
|
vehicleImportStatus = Number(MAdminVehicle.import);
|
|
vehicleImage = MAdminVehicle.image;
|
|
} else {
|
|
result = await query(`
|
|
INSERT INTO \`madmin_vehicles\` (
|
|
\`model\`,
|
|
\`class\`,
|
|
\`category\`,
|
|
\`import\`,
|
|
\`image\`
|
|
) VALUES (
|
|
'${vehicle.model}',
|
|
'${vehicleClass}',
|
|
'${vehicleCategory}',
|
|
0,
|
|
'${vehicleImage}'
|
|
)
|
|
`);
|
|
|
|
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." });
|
|
}
|
|
|
|
vehicles.push({
|
|
brand: vehicle.name.split(" ")[0],
|
|
label: vehicle.name,
|
|
mainCategory: vehicleCategory,
|
|
class: vehicleClass, // E D C B A A+ S S+
|
|
model: vehicle.model,
|
|
shop: "Vehicle Shop",
|
|
category: vehicle.category,
|
|
categoryValue: vehicle.category,
|
|
hash: GetHashKey(vehicle.model),
|
|
price: vehicle.price,
|
|
import: vehicleImportStatus,
|
|
image: vehicleImage
|
|
});
|
|
}
|
|
}
|
|
|
|
res.json({ code: 200, message: vehicles });
|
|
});
|
|
|
|
|
|
/**
|
|
* @param {string} key
|
|
* @returns {Array}
|
|
*/
|
|
|
|
app.use("/getOwnedVehicles.lvorex", express.json())
|
|
app.post("/getOwnedVehicles.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, "Vehicles", 2)
|
|
if (!PermissionCheck) return res.json({ code: 401, message: "Your rank is not enough." })
|
|
const vehicles = []
|
|
|
|
if (config.Framework.includes("qb")) {
|
|
let result = await query(`
|
|
select * from \`player_vehicles\`
|
|
`)
|
|
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
if (result.length === 0) return res.json({ code: 200, message: [] })
|
|
|
|
for await (const vehicle of result) {
|
|
const Vehicles = await LV.GetAllServerVehicles()
|
|
const VehicleCredentials = Vehicles.find(v => v.model === vehicle.vehicle)
|
|
let ownerName = "Not Found."
|
|
|
|
let ownerResult = await query(`
|
|
select * from \`players\`
|
|
where \`citizenid\` = '${vehicle.citizenid}'
|
|
`)
|
|
if (ownerResult === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
if (ownerResult.length !== 0) {
|
|
ownerResult = ownerResult[0]
|
|
const CharInfo = JSON.parse(ownerResult.charinfo)
|
|
ownerName = `${CharInfo.firstname} ${CharInfo.lastname}`
|
|
}
|
|
|
|
let vehicleClass = "C"
|
|
let vehicleCategory = "Vanilla"
|
|
let vehicleImportStatus = 0
|
|
let vehicleImage = "img/CarImage.png"
|
|
let vehicleOtherCredentialsResult = await query(`
|
|
select * from \`madmin_vehicles\`
|
|
where \`model\` = '${vehicle.vehicle}'
|
|
`)
|
|
if (vehicleOtherCredentialsResult === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
if (vehicleOtherCredentialsResult.length !== 0) {
|
|
vehicleOtherCredentialsResult = vehicleOtherCredentialsResult[0]
|
|
|
|
vehicleClass = vehicleOtherCredentialsResult.class
|
|
vehicleCategory = vehicleOtherCredentialsResult.category
|
|
vehicleImportStatus = vehicleOtherCredentialsResult.import
|
|
vehicleImage = vehicleOtherCredentialsResult.image
|
|
}
|
|
|
|
vehicles.push({
|
|
brand: VehicleCredentials ? VehicleCredentials.brand : "Not Found",
|
|
label: VehicleCredentials ? VehicleCredentials.name : "Not Found",
|
|
mainCategory: vehicleCategory,
|
|
class: vehicleClass,
|
|
import: vehicleImportStatus,
|
|
categoryValue: VehicleCredentials ? VehicleCredentials.category : "Not Found.",
|
|
image: vehicleImage,
|
|
|
|
plate: vehicle.plate,
|
|
state: vehicle.state === 1 ? "In Garage" : "Outside",
|
|
owner: `owned by ${ownerName}`,
|
|
distance: `${parseInt(vehicle.drivingdistance / 1000)} km`,
|
|
price: VehicleCredentials ? VehicleCredentials.price : 0,
|
|
|
|
ownerCitizenid: vehicle.citizenid
|
|
})
|
|
}
|
|
} else if (config.Framework.includes("esx")) {
|
|
let result = await query(`
|
|
select * from \`owned_vehicles\`
|
|
`)
|
|
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
if (result.length === 0) return res.json({ code: 200, message: [] })
|
|
|
|
for await (const vehicle of result) {
|
|
let VehicleSQLJSon = JSON.parse(vehicle.vehicle)
|
|
let VehicleCredentials = await LV.GetAllServerVehicles()
|
|
VehicleCredentials.forEach(v => {
|
|
if (!VehicleCredentials.length) return
|
|
if (GetHashKey(v.model) === VehicleSQLJSon.model) {
|
|
VehicleCredentials = v
|
|
return
|
|
}
|
|
})
|
|
if (!VehicleCredentials.name) continue
|
|
|
|
let ownerName = await query(`
|
|
select * from \`users\`
|
|
where \`identifier\` = '${vehicle.owner}'
|
|
`)
|
|
if (ownerName === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
if (ownerName.length !== 0) {
|
|
ownerName = ownerName[0]
|
|
ownerName = `${ownerName.firstname} ${ownerName.lastname}`
|
|
} else {
|
|
ownerName = "Not Found."
|
|
}
|
|
|
|
let vehicleClass = "C"
|
|
let vehicleCategory = "Vanilla"
|
|
let vehicleImportStatus = 0
|
|
let vehicleImage = "img/CarImage.png"
|
|
let vehicleOtherCredentialsResult = await query(`
|
|
select * from \`madmin_vehicles\`
|
|
where \`model\` = '${vehicle.vehicle}'
|
|
`)
|
|
if (vehicleOtherCredentialsResult === false) return res.json({ code: 404, message: "SQL Error Appeared." })
|
|
if (vehicleOtherCredentialsResult.length !== 0) {
|
|
vehicleOtherCredentialsResult = vehicleOtherCredentialsResult[0]
|
|
|
|
vehicleClass = vehicleOtherCredentialsResult.class
|
|
vehicleCategory = vehicleOtherCredentialsResult.category
|
|
vehicleImportStatus = vehicleOtherCredentialsResult.import
|
|
vehicleImage = vehicleOtherCredentialsResult.image
|
|
}
|
|
|
|
vehicles.push({
|
|
brand: VehicleCredentials.name.split(" ")[0],
|
|
label: VehicleCredentials.name,
|
|
mainCategory: vehicleCategory,
|
|
class: vehicleClass,
|
|
import: vehicleImportStatus,
|
|
categoryValue: VehicleCredentials.category,
|
|
image: vehicleImage,
|
|
|
|
plate: vehicle.plate,
|
|
state: vehicle.stored === 1 ? "In Garage" : "Outside",
|
|
owner: `owned by ${ownerName}`,
|
|
distance: `${vehicle.mileage} km`,
|
|
price: VehicleCredentials.price,
|
|
|
|
ownerCitizenid: vehicle.owner
|
|
})
|
|
}
|
|
}
|
|
|
|
res.json({ code: 200, message: vehicles })
|
|
}) |