forked from Simnation/Main
ed
This commit is contained in:
parent
dee484871a
commit
06087a7800
3 changed files with 486 additions and 2 deletions
|
@ -72,6 +72,14 @@ function openInfoPointMenu()
|
||||||
onSelect = function()
|
onSelect = function()
|
||||||
showEvents()
|
showEvents()
|
||||||
end
|
end
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title = 'Allgemeine Informationen',
|
||||||
|
description = 'Wichtige Bekanntmachungen und Hinweise',
|
||||||
|
icon = 'bullhorn',
|
||||||
|
onSelect = function()
|
||||||
|
showGeneralInfo()
|
||||||
|
end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,6 +112,26 @@ function openInfoPointMenu()
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Option to post general information (only for authorized jobs)
|
||||||
|
local canPostInfo = false
|
||||||
|
for _, allowedJob in pairs(Config.JobPermissions.canPostGeneralInfo) do
|
||||||
|
if job == allowedJob then
|
||||||
|
canPostInfo = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if canPostInfo then
|
||||||
|
table.insert(menuOptions, {
|
||||||
|
title = 'Information veröffentlichen',
|
||||||
|
description = 'Neue allgemeine Information erstellen',
|
||||||
|
icon = 'pen',
|
||||||
|
onSelect = function()
|
||||||
|
createGeneralInfoDialog()
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
-- Vorfall melden (für alle oder spezifische Jobs)
|
-- Vorfall melden (für alle oder spezifische Jobs)
|
||||||
if Config.JobPermissions.canReportIncidents == 'all' or
|
if Config.JobPermissions.canReportIncidents == 'all' or
|
||||||
(type(Config.JobPermissions.canReportIncidents) == 'table' and
|
(type(Config.JobPermissions.canReportIncidents) == 'table' and
|
||||||
|
@ -665,6 +693,261 @@ function editLicenseInfoDialog(license)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Show general information
|
||||||
|
function showGeneralInfo()
|
||||||
|
QBCore.Functions.TriggerCallback('infopoint:getGeneralInfo', function(infoList)
|
||||||
|
local infoOptions = {}
|
||||||
|
|
||||||
|
if #infoList == 0 then
|
||||||
|
table.insert(infoOptions, {
|
||||||
|
title = 'Keine Informationen verfügbar',
|
||||||
|
description = 'Derzeit sind keine allgemeinen Informationen vorhanden',
|
||||||
|
icon = 'info'
|
||||||
|
})
|
||||||
|
else
|
||||||
|
for _, info in pairs(infoList) do
|
||||||
|
local importanceIcon = '📄'
|
||||||
|
if info.importance == 'high' then
|
||||||
|
importanceIcon = '🔴'
|
||||||
|
elseif info.importance == 'medium' then
|
||||||
|
importanceIcon = '🟠'
|
||||||
|
end
|
||||||
|
|
||||||
|
local createdDate = os.date('%d.%m.%Y', os.time({
|
||||||
|
year = tonumber(string.sub(info.created_at, 1, 4)),
|
||||||
|
month = tonumber(string.sub(info.created_at, 6, 7)),
|
||||||
|
day = tonumber(string.sub(info.created_at, 9, 10))
|
||||||
|
}))
|
||||||
|
|
||||||
|
table.insert(infoOptions, {
|
||||||
|
title = importanceIcon .. ' ' .. info.title,
|
||||||
|
description = 'Kategorie: ' .. info.category .. ' | Erstellt: ' .. createdDate,
|
||||||
|
icon = 'bullhorn',
|
||||||
|
onSelect = function()
|
||||||
|
showGeneralInfoDetails(info)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert(infoOptions, {
|
||||||
|
title = '← Zurück',
|
||||||
|
icon = 'arrow-left',
|
||||||
|
onSelect = function()
|
||||||
|
openInfoPointMenu()
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
lib.registerContext({
|
||||||
|
id = 'infopoint_general_info',
|
||||||
|
title = 'Allgemeine Informationen',
|
||||||
|
options = infoOptions
|
||||||
|
})
|
||||||
|
|
||||||
|
lib.showContext('infopoint_general_info')
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Show general information details
|
||||||
|
function showGeneralInfoDetails(info)
|
||||||
|
local PlayerData = QBCore.Functions.GetPlayerData()
|
||||||
|
local canManage = false
|
||||||
|
|
||||||
|
-- Check if player can manage this info (created by them or has management rights)
|
||||||
|
if PlayerData.citizenid == info.created_by then
|
||||||
|
canManage = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check if player has permission to post general info (they can also manage)
|
||||||
|
local job = PlayerData.job.name
|
||||||
|
for _, allowedJob in pairs(Config.JobPermissions.canPostGeneralInfo) do
|
||||||
|
if job == allowedJob then
|
||||||
|
canManage = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- If they can manage, show management options
|
||||||
|
if canManage then
|
||||||
|
local options = {
|
||||||
|
{
|
||||||
|
title = 'Information anzeigen',
|
||||||
|
description = 'Details der Information anzeigen',
|
||||||
|
icon = 'eye',
|
||||||
|
onSelect = function()
|
||||||
|
showInfoContent(info)
|
||||||
|
end
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title = '✏️ Bearbeiten',
|
||||||
|
description = 'Information bearbeiten',
|
||||||
|
icon = 'edit',
|
||||||
|
onSelect = function()
|
||||||
|
editGeneralInfoDialog(info)
|
||||||
|
end
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title = '🗑️ Löschen',
|
||||||
|
description = 'Information löschen',
|
||||||
|
icon = 'trash',
|
||||||
|
onSelect = function()
|
||||||
|
deleteGeneralInfo(info.id)
|
||||||
|
end
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title = '← Zurück',
|
||||||
|
icon = 'arrow-left',
|
||||||
|
onSelect = function()
|
||||||
|
showGeneralInfo()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lib.registerContext({
|
||||||
|
id = 'general_info_management',
|
||||||
|
title = info.title,
|
||||||
|
options = options
|
||||||
|
})
|
||||||
|
|
||||||
|
lib.showContext('general_info_management')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- If they can't manage, just show the content
|
||||||
|
showInfoContent(info)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Function to show just the content
|
||||||
|
function showInfoContent(info)
|
||||||
|
local createdDate = os.date('%d.%m.%Y', os.time({
|
||||||
|
year = tonumber(string.sub(info.created_at, 1, 4)),
|
||||||
|
month = tonumber(string.sub(info.created_at, 6, 7)),
|
||||||
|
day = tonumber(string.sub(info.created_at, 9, 10))
|
||||||
|
}))
|
||||||
|
|
||||||
|
local expiryInfo = ''
|
||||||
|
if info.expires_at then
|
||||||
|
local expiryDate = os.date('%d.%m.%Y', os.time({
|
||||||
|
year = tonumber(string.sub(info.expires_at, 1, 4)),
|
||||||
|
month = tonumber(string.sub(info.expires_at, 6, 7)),
|
||||||
|
day = tonumber(string.sub(info.expires_at, 9, 10))
|
||||||
|
}))
|
||||||
|
expiryInfo = 'Gültig bis: ' .. expiryDate .. '\n\n'
|
||||||
|
end
|
||||||
|
|
||||||
|
local importanceText = 'Normal'
|
||||||
|
if info.importance == 'high' then
|
||||||
|
importanceText = 'Hoch'
|
||||||
|
elseif info.importance == 'medium' then
|
||||||
|
importanceText = 'Mittel'
|
||||||
|
end
|
||||||
|
|
||||||
|
lib.alertDialog({
|
||||||
|
header = info.title,
|
||||||
|
content = 'Kategorie: ' .. info.category .. '\n\n' ..
|
||||||
|
'Wichtigkeit: ' .. importanceText .. '\n\n' ..
|
||||||
|
'Erstellt am: ' .. createdDate .. '\n\n' ..
|
||||||
|
expiryInfo ..
|
||||||
|
'Inhalt:\n' .. info.content .. '\n\n' ..
|
||||||
|
'Veröffentlicht von: ' .. info.created_by_name .. ' (' .. info.created_by_job .. ')',
|
||||||
|
centered = true,
|
||||||
|
cancel = true
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Create general information dialog
|
||||||
|
function createGeneralInfoDialog()
|
||||||
|
local categoryOptions = {}
|
||||||
|
for _, category in pairs(Config.GeneralInfoCategories) do
|
||||||
|
table.insert(categoryOptions, {value = category, label = category})
|
||||||
|
end
|
||||||
|
|
||||||
|
local importanceOptions = {
|
||||||
|
{value = 'normal', label = 'Normal'},
|
||||||
|
{value = 'medium', label = 'Mittel'},
|
||||||
|
{value = 'high', label = 'Hoch'}
|
||||||
|
}
|
||||||
|
|
||||||
|
local input = lib.inputDialog('Information veröffentlichen', {
|
||||||
|
{type = 'input', label = 'Titel', required = true, max = 100},
|
||||||
|
{type = 'textarea', label = 'Inhalt', required = true, max = 1000},
|
||||||
|
{type = 'select', label = 'Kategorie', options = categoryOptions, required = true},
|
||||||
|
{type = 'select', label = 'Wichtigkeit', options = importanceOptions, default = 'normal'},
|
||||||
|
{type = 'date', label = 'Gültig bis (optional)'}
|
||||||
|
})
|
||||||
|
|
||||||
|
if input then
|
||||||
|
local infoData = {
|
||||||
|
title = input[1],
|
||||||
|
content = input[2],
|
||||||
|
category = input[3],
|
||||||
|
importance = input[4],
|
||||||
|
expires_at = input[5] ~= '' and input[5] or nil
|
||||||
|
}
|
||||||
|
|
||||||
|
TriggerServerEvent('infopoint:createGeneralInfo', infoData)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Function to edit general info
|
||||||
|
function editGeneralInfoDialog(info)
|
||||||
|
local categoryOptions = {}
|
||||||
|
for _, category in pairs(Config.GeneralInfoCategories) do
|
||||||
|
table.insert(categoryOptions, {value = category, label = category})
|
||||||
|
end
|
||||||
|
|
||||||
|
local importanceOptions = {
|
||||||
|
{value = 'normal', label = 'Normal'},
|
||||||
|
{value = 'medium', label = 'Mittel'},
|
||||||
|
{value = 'high', label = 'Hoch'}
|
||||||
|
}
|
||||||
|
|
||||||
|
local expiryDate = nil
|
||||||
|
if info.expires_at then
|
||||||
|
expiryDate = string.sub(info.expires_at, 1, 10)
|
||||||
|
end
|
||||||
|
|
||||||
|
local input = lib.inputDialog('Information bearbeiten', {
|
||||||
|
{type = 'input', label = 'Titel', required = true, max = 100, default = info.title},
|
||||||
|
{type = 'textarea', label = 'Inhalt', required = true, max = 1000, default = info.content},
|
||||||
|
{type = 'select', label = 'Kategorie', options = categoryOptions, required = true, default = info.category},
|
||||||
|
{type = 'select', label = 'Wichtigkeit', options = importanceOptions, default = info.importance},
|
||||||
|
{type = 'date', label = 'Gültig bis (optional)', default = expiryDate}
|
||||||
|
})
|
||||||
|
|
||||||
|
if input then
|
||||||
|
local infoData = {
|
||||||
|
title = input[1],
|
||||||
|
content = input[2],
|
||||||
|
category = input[3],
|
||||||
|
importance = input[4],
|
||||||
|
expires_at = input[5] ~= '' and input[5] or nil
|
||||||
|
}
|
||||||
|
|
||||||
|
TriggerServerEvent('infopoint:updateGeneralInfo', info.id, infoData)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Function to delete general info
|
||||||
|
function deleteGeneralInfo(infoId)
|
||||||
|
lib.alertDialog({
|
||||||
|
header = 'Information löschen',
|
||||||
|
content = 'Bist du sicher, dass du diese Information löschen möchtest?',
|
||||||
|
centered = true,
|
||||||
|
cancel = true,
|
||||||
|
labels = {
|
||||||
|
cancel = 'Abbrechen',
|
||||||
|
confirm = 'Löschen'
|
||||||
|
}
|
||||||
|
}, function(confirmed)
|
||||||
|
if confirmed then
|
||||||
|
TriggerServerEvent('infopoint:deleteGeneralInfo', infoId)
|
||||||
|
Wait(500)
|
||||||
|
showGeneralInfo() -- Back to overview
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
-- Hilfsfunktion für table.contains
|
-- Hilfsfunktion für table.contains
|
||||||
function table.contains(table, element)
|
function table.contains(table, element)
|
||||||
for _, value in pairs(table) do
|
for _, value in pairs(table) do
|
||||||
|
|
|
@ -47,9 +47,12 @@ Config.JobPermissions = {
|
||||||
-- Wer kann Vorfälle melden
|
-- Wer kann Vorfälle melden
|
||||||
canReportIncidents = 'all', -- 'all' für alle, oder spezifische Jobs als Table
|
canReportIncidents = 'all', -- 'all' für alle, oder spezifische Jobs als Table
|
||||||
|
|
||||||
-- Who can manage license information
|
-- Wer kann Lizenz-Informationen verwalten
|
||||||
canManageLicenses = {'police'}, -- Add any other jobs that should be able to manage licenses
|
canManageLicenses = {'police'}, -- Add any other jobs that should be able to manage licenses
|
||||||
|
|
||||||
|
-- Wer kann allgemeine Informationen veröffentlichen
|
||||||
|
canPostGeneralInfo = {'police', 'ambulance'},
|
||||||
|
|
||||||
-- Spezielle Job Informationen
|
-- Spezielle Job Informationen
|
||||||
jobSpecificInfo = {
|
jobSpecificInfo = {
|
||||||
['police'] = {
|
['police'] = {
|
||||||
|
@ -102,3 +105,22 @@ Config.EventCategories = {
|
||||||
'Rennen',
|
'Rennen',
|
||||||
'Sonstiges'
|
'Sonstiges'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- Allgemeine Informations-Kategorien
|
||||||
|
Config.GeneralInfoCategories = {
|
||||||
|
'Öffentliche Bekanntmachung',
|
||||||
|
'Sicherheitshinweis',
|
||||||
|
'Gesundheitshinweis',
|
||||||
|
'Verkehrsinformation',
|
||||||
|
'Bürgerinformation',
|
||||||
|
'Sonstiges'
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Standard Lizenz-Typen
|
||||||
|
Config.DefaultLicenseTypes = {
|
||||||
|
'Führerschein',
|
||||||
|
'Waffenschein',
|
||||||
|
'Pilotenschein',
|
||||||
|
'Motorradführerschein',
|
||||||
|
'Bootslizenz'
|
||||||
|
}
|
||||||
|
|
|
@ -65,6 +65,23 @@ CreateThread(function()
|
||||||
)
|
)
|
||||||
]])
|
]])
|
||||||
|
|
||||||
|
-- Neue Tabelle für allgemeine Informationen
|
||||||
|
MySQL.query([[
|
||||||
|
CREATE TABLE IF NOT EXISTS infopoint_general_info (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
title VARCHAR(255) NOT NULL,
|
||||||
|
content TEXT,
|
||||||
|
category VARCHAR(100),
|
||||||
|
importance VARCHAR(50) DEFAULT 'normal',
|
||||||
|
created_by VARCHAR(50),
|
||||||
|
created_by_job VARCHAR(50),
|
||||||
|
created_by_name VARCHAR(255),
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
expires_at DATETIME NULL,
|
||||||
|
active BOOLEAN DEFAULT TRUE
|
||||||
|
)
|
||||||
|
]])
|
||||||
|
|
||||||
-- Standard Lizenz-Informationen einfügen falls nicht vorhanden
|
-- Standard Lizenz-Informationen einfügen falls nicht vorhanden
|
||||||
MySQL.query('SELECT COUNT(*) as count FROM infopoint_license_info', {}, function(result)
|
MySQL.query('SELECT COUNT(*) as count FROM infopoint_license_info', {}, function(result)
|
||||||
if result[1].count == 0 then
|
if result[1].count == 0 then
|
||||||
|
@ -174,6 +191,15 @@ QBCore.Functions.CreateCallback('infopoint:getLicenseInfo', function(source, cb)
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
-- Allgemeine Informationen abrufen
|
||||||
|
QBCore.Functions.CreateCallback('infopoint:getGeneralInfo', function(source, cb)
|
||||||
|
local currentDate = os.date('%Y-%m-%d')
|
||||||
|
|
||||||
|
MySQL.query('SELECT * FROM infopoint_general_info WHERE active = 1 AND (expires_at IS NULL OR expires_at >= ?) ORDER BY importance DESC, created_at DESC', {currentDate}, function(result)
|
||||||
|
cb(result)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
-- Prüfen ob Spieler Lizenz-Informationen verwalten kann
|
-- Prüfen ob Spieler Lizenz-Informationen verwalten kann
|
||||||
QBCore.Functions.CreateCallback('infopoint:canManageLicenses', function(source, cb)
|
QBCore.Functions.CreateCallback('infopoint:canManageLicenses', function(source, cb)
|
||||||
local Player = QBCore.Functions.GetPlayer(source)
|
local Player = QBCore.Functions.GetPlayer(source)
|
||||||
|
@ -435,3 +461,156 @@ RegisterNetEvent('infopoint:deleteLicenseInfo', function(licenseId)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
-- Allgemeine Information erstellen
|
||||||
|
RegisterNetEvent('infopoint:createGeneralInfo', function(infoData)
|
||||||
|
local src = source
|
||||||
|
local Player = QBCore.Functions.GetPlayer(src)
|
||||||
|
if not Player then return end
|
||||||
|
|
||||||
|
local job = Player.PlayerData.job.name
|
||||||
|
local canPost = false
|
||||||
|
|
||||||
|
-- Sicherheitsprüfung für Config
|
||||||
|
if Config and Config.JobPermissions and Config.JobPermissions.canPostGeneralInfo then
|
||||||
|
if type(Config.JobPermissions.canPostGeneralInfo) == 'table' then
|
||||||
|
for _, allowedJob in pairs(Config.JobPermissions.canPostGeneralInfo) do
|
||||||
|
if job == allowedJob then
|
||||||
|
canPost = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not canPost then
|
||||||
|
TriggerClientEvent('QBCore:Notify', src, 'Du hast keine Berechtigung allgemeine Informationen zu veröffentlichen!', 'error')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
MySQL.insert('INSERT INTO infopoint_general_info (title, content, category, importance, expires_at, created_by, created_by_job, created_by_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?)', {
|
||||||
|
infoData.title,
|
||||||
|
infoData.content,
|
||||||
|
infoData.category,
|
||||||
|
infoData.importance,
|
||||||
|
infoData.expires_at,
|
||||||
|
Player.PlayerData.citizenid,
|
||||||
|
Player.PlayerData.job.name,
|
||||||
|
Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname
|
||||||
|
}, function(insertId)
|
||||||
|
if insertId then
|
||||||
|
TriggerClientEvent('QBCore:Notify', src, 'Information erfolgreich veröffentlicht!', 'success')
|
||||||
|
TriggerClientEvent('infopoint:refreshData', -1)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Allgemeine Information bearbeiten
|
||||||
|
RegisterNetEvent('infopoint:updateGeneralInfo', function(infoId, infoData)
|
||||||
|
local src = source
|
||||||
|
local Player = QBCore.Functions.GetPlayer(src)
|
||||||
|
if not Player then return end
|
||||||
|
|
||||||
|
-- First check if this player created the info or has permission to post general info
|
||||||
|
MySQL.query('SELECT created_by FROM infopoint_general_info WHERE id = ?', {infoId}, function(result)
|
||||||
|
if result[1] then
|
||||||
|
local canEdit = false
|
||||||
|
|
||||||
|
-- Check if player created this info
|
||||||
|
if result[1].created_by == Player.PlayerData.citizenid then
|
||||||
|
canEdit = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check if player has permission to post general info (they can also edit)
|
||||||
|
if not canEdit then
|
||||||
|
local job = Player.PlayerData.job.name
|
||||||
|
if Config and Config.JobPermissions and Config.JobPermissions.canPostGeneralInfo then
|
||||||
|
if type(Config.JobPermissions.canPostGeneralInfo) == 'table' then
|
||||||
|
for _, allowedJob in pairs(Config.JobPermissions.canPostGeneralInfo) do
|
||||||
|
if job == allowedJob then
|
||||||
|
canEdit = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not canEdit then
|
||||||
|
TriggerClientEvent('QBCore:Notify', src, 'Du hast keine Berechtigung diese Information zu bearbeiten!', 'error')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Update the info
|
||||||
|
MySQL.update('UPDATE infopoint_general_info SET title = ?, content = ?, category = ?, importance = ?, expires_at = ? WHERE id = ?', {
|
||||||
|
infoData.title,
|
||||||
|
infoData.content,
|
||||||
|
infoData.category,
|
||||||
|
infoData.importance,
|
||||||
|
infoData.expires_at,
|
||||||
|
infoId
|
||||||
|
}, function(affectedRows)
|
||||||
|
if affectedRows > 0 then
|
||||||
|
TriggerClientEvent('QBCore:Notify', src, 'Information erfolgreich aktualisiert!', 'success')
|
||||||
|
TriggerClientEvent('infopoint:refreshData', -1)
|
||||||
|
else
|
||||||
|
TriggerClientEvent('QBCore:Notify', src, 'Fehler beim Aktualisieren der Information!', 'error')
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
TriggerClientEvent('QBCore:Notify', src, 'Information nicht gefunden!', 'error')
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Allgemeine Information löschen
|
||||||
|
RegisterNetEvent('infopoint:deleteGeneralInfo', function(infoId)
|
||||||
|
local src = source
|
||||||
|
local Player = QBCore.Functions.GetPlayer(src)
|
||||||
|
if not Player then return end
|
||||||
|
|
||||||
|
-- First check if this player created the info or has permission to post general info
|
||||||
|
MySQL.query('SELECT created_by FROM infopoint_general_info WHERE id = ?', {infoId}, function(result)
|
||||||
|
if result[1] then
|
||||||
|
local canDelete = false
|
||||||
|
|
||||||
|
-- Check if player created this info
|
||||||
|
if result[1].created_by == Player.PlayerData.citizenid then
|
||||||
|
canDelete = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check if player has permission to post general info (they can also delete)
|
||||||
|
if not canDelete then
|
||||||
|
local job = Player.PlayerData.job.name
|
||||||
|
if Config and Config.JobPermissions and Config.JobPermissions.canPostGeneralInfo then
|
||||||
|
if type(Config.JobPermissions.canPostGeneralInfo) == 'table' then
|
||||||
|
for _, allowedJob in pairs(Config.JobPermissions.canPostGeneralInfo) do
|
||||||
|
if job == allowedJob then
|
||||||
|
canDelete = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not canDelete then
|
||||||
|
TriggerClientEvent('QBCore:Notify', src, 'Du hast keine Berechtigung diese Information zu löschen!', 'error')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Delete (set inactive) the info
|
||||||
|
MySQL.update('UPDATE infopoint_general_info SET active = 0 WHERE id = ?', {infoId}, function(affectedRows)
|
||||||
|
if affectedRows > 0 then
|
||||||
|
TriggerClientEvent('QBCore:Notify', src, 'Information erfolgreich gelöscht!', 'success')
|
||||||
|
TriggerClientEvent('infopoint:refreshData', -1)
|
||||||
|
else
|
||||||
|
TriggerClientEvent('QBCore:Notify', src, 'Fehler beim Löschen der Information!', 'error')
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
TriggerClientEvent('QBCore:Notify', src, 'Information nicht gefunden!', 'error')
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue