From 10f8013d1bdd65185de7b9da0951a89ff555ea91 Mon Sep 17 00:00:00 2001 From: RoccoMyTacco Date: Tue, 20 Sep 2022 03:05:28 -0500 Subject: [PATCH 1/3] Fix account issues + qb-management export support --- server.lua | 137 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 123 insertions(+), 14 deletions(-) diff --git a/server.lua b/server.lua index 19f57a4..76d71f1 100644 --- a/server.lua +++ b/server.lua @@ -36,26 +36,80 @@ local function UniqueAccounts(player) } exports.pefcl:createUniqueAccount(playerSrc, data) end - - local role = false - if PlayerJob.grade.level >= Config.BusinessAccounts[PlayerJob.name].AdminRole then - role = 'admin' - elseif PlayerJob.grade.level >= Config.BusinessAccounts[PlayerJob.name].ContributorRole then - role = 'contributor' - end - - if role then - local data = { - role = role, - accountIdentifier = PlayerJob.name, + end + local accounts = exports.pefcl:getAccounts(playerSrc).data + for k,v in pairs(accounts) do + if Config.BusinessAccounts[v.ownerIdentifier] and v.ownerIdentifier == PlayerJob.name then + local role = false + if PlayerJob.grade.level >= Config.BusinessAccounts[v.ownerIdentifier].AdminRole then + role = 'admin' + elseif PlayerJob.grade.level >= Config.BusinessAccounts[v.ownerIdentifier].ContributorRole then + role = 'contributor' + end + if not role then + local data1 = { + userIdentifier = citizenid, + accountIdentifier = v.ownerIdentifier, + } + exports.pefcl:removeUserFromUniqueAccount(playerSrc, data1) + elseif v.role ~= role then + local data1 = { + userIdentifier = citizenid, + accountIdentifier = v.ownerIdentifier, + } + exports.pefcl:removeUserFromUniqueAccount(playerSrc, data1) + if Config.BusinessAccounts[PlayerJob.name] then + local role = false + if PlayerJob.grade.level >= Config.BusinessAccounts[PlayerJob.name].AdminRole then + role = 'admin' + elseif PlayerJob.grade.level >= Config.BusinessAccounts[PlayerJob.name].ContributorRole then + role = 'contributor' + end + if role then + local data = { + role = role, + accountIdentifier = PlayerJob.name, + userIdentifier = citizenid, + source = playerSrc + } + exports.pefcl:addUserToUniqueAccount(playerSrc, data) + end + end + end + elseif Config.BusinessAccounts[v.ownerIdentifier] and v.ownerIdentifier ~= PlayerJob.name then + local data1 = { + userIdentifier = citizenid, + accountIdentifier = v.ownerIdentifier, + } + exports.pefcl:removeUserFromUniqueAccount(playerSrc, data1) + elseif Config.BusinessAccounts[PlayerJob.name] and v.ownerIdentifier ~= PlayerJob.name then + local data1 = { userIdentifier = citizenid, - source = playerSrc + accountIdentifier = v.ownerIdentifier, } - exports.pefcl:addUserToUniqueAccount(playerSrc, data) + exports.pefcl:removeUserFromUniqueAccount(playerSrc, data1) + if Config.BusinessAccounts[PlayerJob.name] then + local role = false + if PlayerJob.grade.level >= Config.BusinessAccounts[PlayerJob.name].AdminRole then + role = 'admin' + elseif PlayerJob.grade.level >= Config.BusinessAccounts[PlayerJob.name].ContributorRole then + role = 'contributor' + end + if role then + local data = { + role = role, + accountIdentifier = PlayerJob.name, + userIdentifier = citizenid, + source = playerSrc + } + exports.pefcl:addUserToUniqueAccount(playerSrc, data) + end + end end end end + local function getCards(source) local Player = QBCore.Functions.GetPlayer(source) local cards = Player.Functions.GetItemsByName('visa') @@ -87,6 +141,61 @@ local function getBank(source) return Player.PlayerData.money["bank"] or 0 end +function GetAccount(account) + if exports.pefcl:getUniqueAccount(-1, account).data then + return exports.pefcl:getBankBalanceByIdentifier(-1, account).data + else + return false + end +end +exports('GetAccount', GetAccount) + +function AddMoney(src, account, amount, reason) + if exports.pefcl:getUniqueAccount(src, account).data then + local data = { + identifier = account, + amount = amount, + description = reason + } + exports.pefcl:addBankBalanceByIdentifier(src, data) + return true + else + return false + end +end +exports('AddMoney', AddMoney) + +function RemoveMoney(account, amount, reason) + if exports.pefcl:getUniqueAccount(-1, account).data then + if tonumber(exports.pefcl:getBankBalanceByIdentifier(-1, account).data) >= amount then + local data = { + identifier = account, + amount = amount, + description = reason + } + exports.pefcl:removeBankBalanceByIdentifier(-1, data) + return true + else + return false + end + else + return false + end +end +exports('RemoveMoney', RemoveMoney) + +AddEventHandler(('__cfx_export_qb-management_%s'):format('AddMoney'), function(setCB) + setCB(AddMoney) +end) + +AddEventHandler(('__cfx_export_qb-management_%s'):format('RemoveMoney'), function(setCB) + setCB(RemoveMoney) +end) + +AddEventHandler(('__cfx_export_qb-management_%s'):format('GetAccount'), function(setCB) + setCB(GetAccount) +end) + exports("getBank", getBank) exports("addCash", addCash) exports("removeCash", removeCash) From 8c25412585cdbc3861e144538eac4ac1c522af4c Mon Sep 17 00:00:00 2001 From: RoccoMyTacco <70236122+RoccoMyTacco@users.noreply.github.com> Date: Fri, 14 Jul 2023 00:55:21 -0500 Subject: [PATCH 2/3] Update server.lua Co-authored-by: Malcolm Keefe <27903055+Mkeefeus@users.noreply.github.com> --- server.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server.lua b/server.lua index 76d71f1..8136736 100644 --- a/server.lua +++ b/server.lua @@ -171,7 +171,7 @@ function RemoveMoney(account, amount, reason) local data = { identifier = account, amount = amount, - description = reason + message = reason } exports.pefcl:removeBankBalanceByIdentifier(-1, data) return true From 309373ca34dc0317f6bb30e91fb0db7853c0f262 Mon Sep 17 00:00:00 2001 From: RoccoMyTacco <70236122+RoccoMyTacco@users.noreply.github.com> Date: Fri, 14 Jul 2023 00:55:25 -0500 Subject: [PATCH 3/3] Update server.lua Co-authored-by: Malcolm Keefe <27903055+Mkeefeus@users.noreply.github.com> --- server.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server.lua b/server.lua index 8136736..8baf0c2 100644 --- a/server.lua +++ b/server.lua @@ -82,7 +82,7 @@ local function UniqueAccounts(player) accountIdentifier = v.ownerIdentifier, } exports.pefcl:removeUserFromUniqueAccount(playerSrc, data1) - elseif Config.BusinessAccounts[PlayerJob.name] and v.ownerIdentifier ~= PlayerJob.name then + elseif Config.BusinessAccounts[PlayerJob.name] and v.ownerIdentifier ~= PlayerJob.name and v.type == 'shared' then local data1 = { userIdentifier = citizenid, accountIdentifier = v.ownerIdentifier,