forked from Simnation/Main
1693 lines
No EOL
68 KiB
Lua
1693 lines
No EOL
68 KiB
Lua
local QBCore = exports["qb-core"]:GetCoreObject()
|
|
|
|
local Webhook = ''
|
|
|
|
local playerWithMenuOpen = {}
|
|
|
|
RegisterServerEvent("okokBanking:setMenuOpened")
|
|
AddEventHandler("okokBanking:setMenuOpened", function(opened)
|
|
local source = source
|
|
if opened then
|
|
playerWithMenuOpen[source] = opened
|
|
else
|
|
playerWithMenuOpen[source] = nil
|
|
end
|
|
end)
|
|
|
|
function interp(s, tab)
|
|
return (s:gsub('($%b{})', function(w) return tab[w:sub(3, -2)] or w end))
|
|
end
|
|
|
|
function AddMoney(society, amount)
|
|
-- Check if society exists, create it if it doesn't
|
|
local exists = MySQL.scalar.await("SELECT 1 FROM okokbanking_societies WHERE society = ?", { society })
|
|
if not exists then
|
|
-- Create Iban
|
|
local iban = Config.IBANPrefix .. society
|
|
local societyName = QBCore.Shared.Jobs[society] and QBCore.Shared.Jobs[society].label or society
|
|
return MySQL.insert.await("INSERT INTO okokbanking_societies (society, society_name, iban, value) VALUES (?,?,?,?)",{ society, societyName, iban, amount })
|
|
end
|
|
|
|
MySQL.update.await('UPDATE okokbanking_societies SET value = value + @value WHERE society = @society OR society = @society2', {
|
|
['@value'] = amount,
|
|
['@society'] = 'society_' .. string.gsub(society, "society_", ""),
|
|
['@society2'] = string.gsub(society, "society_", ""),
|
|
})
|
|
return true
|
|
end
|
|
|
|
function RemoveMoney(society, amount)
|
|
MySQL.update.await('UPDATE okokbanking_societies SET value = value - @value WHERE society = @society OR society = @society2', {
|
|
['@value'] = amount,
|
|
['@society'] = 'society_' .. string.gsub(society, "society_", ""),
|
|
['@society2'] = string.gsub(society, "society_", ""),
|
|
})
|
|
return true
|
|
end
|
|
|
|
function GetAccount(society)
|
|
local done = false
|
|
local money = 0
|
|
|
|
MySQL.query('SELECT value FROM okokbanking_societies WHERE society = @society OR society = @society2', {
|
|
['@society'] = 'society_'..string.gsub(society, "society_", ""),
|
|
['@society2'] = string.gsub(society, "society_", "")
|
|
}, function(result)
|
|
local db = result[1]
|
|
done = true
|
|
if db ~= nil then
|
|
if db.value ~= nil then
|
|
money = tonumber(db.value)
|
|
end
|
|
end
|
|
end)
|
|
|
|
while not done do
|
|
Citizen.Wait(1)
|
|
end
|
|
|
|
return money
|
|
end
|
|
|
|
if Config.UseCashAsItem then
|
|
QBCore.Functions.CreateCallback("okokBanking:GetPlayerInfo", function(source, cb)
|
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
|
local itemCash = xPlayer.Functions.GetItemByName("cash")
|
|
local itemCashAmount = 0
|
|
if itemCash then
|
|
itemCashAmount = itemCash.amount
|
|
end
|
|
MySQL.query('SELECT * FROM players WHERE citizenid = @identifier', {
|
|
['@identifier'] = xPlayer.PlayerData.citizenid
|
|
}, function(result)
|
|
local db = result[1]
|
|
local data = {
|
|
playerName = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname,
|
|
playerBankMoney = xPlayer.PlayerData.money.bank,
|
|
playerIBAN = xPlayer.PlayerData.charinfo.account,
|
|
walletMoney = itemCashAmount,
|
|
sex = xPlayer.PlayerData.charinfo.gender,
|
|
isBoss = xPlayer.PlayerData.job.isboss,
|
|
isBossGang = xPlayer.PlayerData.gang.isboss
|
|
}
|
|
|
|
cb(data)
|
|
end)
|
|
end)
|
|
else
|
|
QBCore.Functions.CreateCallback("okokBanking:GetPlayerInfo", function(source, cb)
|
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
|
MySQL.query('SELECT * FROM players WHERE citizenid = @identifier', {
|
|
['@identifier'] = xPlayer.PlayerData.citizenid
|
|
}, function(result)
|
|
local db = result[1]
|
|
local data = {
|
|
playerName = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname,
|
|
playerBankMoney = xPlayer.PlayerData.money.bank,
|
|
playerIBAN = xPlayer.PlayerData.charinfo.account,
|
|
walletMoney = xPlayer.PlayerData.money.cash,
|
|
sex = xPlayer.PlayerData.charinfo.gender,
|
|
isBoss = xPlayer.PlayerData.job.isboss,
|
|
isBossGang = xPlayer.PlayerData.gang.isboss
|
|
}
|
|
|
|
cb(data)
|
|
end)
|
|
end)
|
|
end
|
|
|
|
QBCore.Functions.CreateCallback("okokBanking:IsIBanUsed", function(source, cb, iban)
|
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
|
|
|
MySQL.query('SELECT * FROM players WHERE JSON_EXTRACT(charinfo, "$.account") = @iban', {
|
|
['@iban'] = iban
|
|
}, function(result)
|
|
local db = result[1]
|
|
|
|
if db ~= nil then
|
|
cb(db, true, xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname)
|
|
else
|
|
if Config.UseQBManagement or Config.UseQBBanking then
|
|
if Config.UseQBBanking then
|
|
MySQL.query('SELECT * FROM bank_accounts WHERE iban = @iban', {
|
|
['@iban'] = iban
|
|
}, function(result2)
|
|
local db2 = result2[1]
|
|
local dbdata
|
|
if db2 ~= nil then
|
|
dbdata = {
|
|
iban = db2.iban,
|
|
value = db2.account_balance,
|
|
society_name = db2.account_name,
|
|
society = db2.account_name
|
|
}
|
|
end
|
|
|
|
cb(dbdata, false)
|
|
end)
|
|
else
|
|
MySQL.query('SELECT * FROM management_funds WHERE iban = @iban', {
|
|
['@iban'] = iban
|
|
}, function(result2)
|
|
local db2 = result2[1]
|
|
local dbdata
|
|
if db2 ~= nil then
|
|
dbdata = {
|
|
iban = db2.iban,
|
|
value = db2.amount,
|
|
society_name = db2.job_name,
|
|
society = db2.job_name
|
|
}
|
|
end
|
|
|
|
cb(dbdata, false)
|
|
end)
|
|
end
|
|
else
|
|
MySQL.query('SELECT * FROM okokbanking_societies WHERE iban = @iban', {
|
|
['@iban'] = iban
|
|
}, function(result2)
|
|
local db2 = result2[1]
|
|
|
|
cb(db2, false)
|
|
end)
|
|
end
|
|
end
|
|
end)
|
|
end)
|
|
|
|
QBCore.Functions.CreateCallback("okokBanking:GetPIN", function(source, cb)
|
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
|
|
|
MySQL.query('SELECT pincode FROM players WHERE citizenid = @identifier', {
|
|
['@identifier'] = xPlayer.PlayerData.citizenid,
|
|
}, function(result)
|
|
local pin = result[1]
|
|
|
|
cb(pin.pincode)
|
|
end)
|
|
end)
|
|
|
|
QBCore.Functions.CreateCallback("okokBanking:SocietyInfo", function(source, cb, society, iban)
|
|
if Config.UseQBManagement or Config.UseQBBanking then
|
|
if Config.UseQBBanking then
|
|
MySQL.query('SELECT * FROM bank_accounts WHERE account_name = @account_name', {
|
|
['@account_name'] = society,
|
|
}, function(result)
|
|
local db = result[1]
|
|
local aa
|
|
if db ~= nil then
|
|
if db.iban ~= nil then
|
|
aa = {
|
|
value = db.account_balance,
|
|
society_name = db.account_name,
|
|
society = db.account_name,
|
|
iban = db.iban
|
|
}
|
|
else
|
|
MySQL.query('UPDATE bank_accounts SET iban = @iban WHERE account_name = @account_name', {
|
|
['@iban'] = string.gsub(iban:upper(), " ", ""),
|
|
['@account_name'] = society,
|
|
}, function(result2)
|
|
local db2 = result2[1]
|
|
if db2 ~= nil then
|
|
aa = {
|
|
value = db2.account_balance,
|
|
society_name = db2.account_name,
|
|
society = db2.account_name,
|
|
iban = db2.iban
|
|
}
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
cb(aa)
|
|
end)
|
|
else
|
|
MySQL.query('SELECT * FROM management_funds WHERE job_name = @job_name', {
|
|
['@job_name'] = society,
|
|
}, function(result)
|
|
local db = result[1]
|
|
local aa
|
|
if db ~= nil then
|
|
if db.iban ~= nil then
|
|
aa = {
|
|
value = db.amount,
|
|
society_name = db.job_name,
|
|
society = db.job_name,
|
|
iban = db.iban
|
|
}
|
|
else
|
|
MySQL.query('UPDATE management_funds SET iban = @iban WHERE job_name = @job_name', {
|
|
['@iban'] = string.gsub(iban:upper(), " ", ""),
|
|
['@job_name'] = society,
|
|
}, function(result2)
|
|
local db2 = result2[1]
|
|
if db2 ~= nil then
|
|
aa = {
|
|
value = db2.amount,
|
|
society_name = db2.job_name,
|
|
society = db2.job_name,
|
|
iban = db2.iban
|
|
}
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
cb(aa)
|
|
end)
|
|
end
|
|
else
|
|
MySQL.query('SELECT * FROM okokbanking_societies WHERE society = @society', {
|
|
['@society'] = society
|
|
}, function(result)
|
|
local db = result[1]
|
|
cb(db)
|
|
end)
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:CreateSocietyAccount")
|
|
AddEventHandler("okokBanking:CreateSocietyAccount", function(society, society_name, value, iban)
|
|
if Config.UseQBManagement or Config.UseQBBanking then
|
|
if Config.UseQBBanking then
|
|
MySQL.query('SELECT * FROM bank_accounts WHERE account_name = @account_name', {
|
|
['@account_name'] = society,
|
|
}, function(result)
|
|
local db = result[1]
|
|
if db == nil then
|
|
MySQL.query('INSERT INTO bank_accounts (account_name, account_balance, iban) VALUES (@account_name, @account_balance, @iban)', {
|
|
['@account_name'] = society,
|
|
['@account_balance'] = value,
|
|
['@iban'] = string.gsub(iban:upper(), "%s+", ""),
|
|
}, function (result)
|
|
end)
|
|
end
|
|
end)
|
|
else
|
|
MySQL.query('SELECT * FROM management_funds WHERE job_name = @job_name', {
|
|
['@job_name'] = society,
|
|
}, function(result)
|
|
local db = result[1]
|
|
if db == nil then
|
|
MySQL.query('INSERT INTO management_funds (job_name, amount, iban) VALUES (@job_name, @amount, @iban)', {
|
|
['@job_name'] = society,
|
|
['@amount'] = value,
|
|
['@iban'] = string.gsub(iban:upper(), "%s+", ""),
|
|
}, function (result)
|
|
end)
|
|
end
|
|
end)
|
|
end
|
|
else
|
|
MySQL.query('INSERT INTO okokbanking_societies (society, society_name, value, iban) VALUES (@society, @society_name, @value, @iban)', {
|
|
['@society'] = society,
|
|
['@society_name'] = society_name,
|
|
['@value'] = value,
|
|
['@iban'] = string.gsub(iban:upper(), "%s+", ""),
|
|
}, function (result)
|
|
end)
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:SetIBAN")
|
|
AddEventHandler("okokBanking:SetIBAN", function(iban)
|
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
|
|
|
xPlayer.Functions.ChangeIban(iban)
|
|
end)
|
|
|
|
QBCore.Functions.CreateCallback("okokBanking:HasCreditCard", function(source, cb)
|
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
|
if xPlayer ~= nil then
|
|
local item = xPlayer.Functions.GetItemByName(Config.CreditCardItem)
|
|
if item ~= nil then
|
|
cb(item.amount >= 1)
|
|
else
|
|
cb(false)
|
|
end
|
|
else
|
|
cb(false)
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:DepositMoney")
|
|
AddEventHandler("okokBanking:DepositMoney", function(amount)
|
|
local _source = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local playerMoney = xPlayer.PlayerData.money.cash
|
|
local itemCash = xPlayer.Functions.GetItemByName("cash")
|
|
local playerMoneyCash = 0
|
|
if itemCash ~= nil then
|
|
playerMoneyCash = itemCash.amount
|
|
end
|
|
|
|
if not playerWithMenuOpen[source] then
|
|
return
|
|
end
|
|
|
|
if amount <= playerMoney and not Config.UseCashAsItem or amount <= playerMoneyCash and Config.UseCashAsItem then
|
|
if Config.UseCashAsItem then
|
|
xPlayer.Functions.RemoveItem('cash', amount)
|
|
else
|
|
xPlayer.Functions.RemoveMoney('cash', amount)
|
|
end
|
|
xPlayer.Functions.AddMoney('bank', amount)
|
|
xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local itemCashUpdated = xPlayer.Functions.GetItemByName("cash")
|
|
local playerMoneyCashUpdated = 0
|
|
if itemCashUpdated ~= nil then
|
|
playerMoneyCashUpdated = itemCashUpdated.amount
|
|
end
|
|
TriggerEvent('okokBanking:AddDepositTransaction', amount, _source)
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactions', _source, xPlayer.PlayerData.money.bank, playerMoneyCashUpdated)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactions', _source, xPlayer.PlayerData.money.bank, xPlayer.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('deposited').title, interp(_L('deposited').text, {s1 = amount}), _L('deposited').time, _L('deposited').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('deposited').text, {s1 = amount}), _L('deposited').type)
|
|
end
|
|
DepositMoneyWebhook({sender_name = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname, value = GroupDigits(amount)})
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('no_money_pocket').title, _L('no_money_pocket').text, _L('no_money_pocket').time, _L('no_money_pocket').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, _L('no_money_pocket').text, _L('no_money_pocket').type)
|
|
end
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:WithdrawMoney")
|
|
AddEventHandler("okokBanking:WithdrawMoney", function(amount)
|
|
local _source = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local playerMoney = xPlayer.PlayerData.money.bank
|
|
local playerMoneyCash = xPlayer.Functions.GetItemByName("cash")
|
|
local playerMoneyCashAmount = 0
|
|
if playerMoneyCash then
|
|
playerMoneyCashAmount = playerMoneyCash.amount
|
|
end
|
|
|
|
if not playerWithMenuOpen[source] then
|
|
return
|
|
end
|
|
|
|
if amount <= playerMoney then
|
|
if Config.UseCashAsItem then
|
|
xPlayer.Functions.AddItem('cash', amount)
|
|
else
|
|
xPlayer.Functions.AddMoney('cash', amount)
|
|
end
|
|
xPlayer.Functions.RemoveMoney('bank', amount)
|
|
xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local playerMoneyCash = xPlayer.Functions.GetItemByName("cash")
|
|
local playerMoneyCashAmount = 0
|
|
if playerMoneyCash then
|
|
playerMoneyCashAmount = playerMoneyCash.amount
|
|
end
|
|
|
|
TriggerEvent('okokBanking:AddWithdrawTransaction', amount, _source)
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactions', _source, xPlayer.PlayerData.money.bank, playerMoneyCashAmount)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactions', _source, xPlayer.PlayerData.money.bank, xPlayer.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('withdrawn').title, interp(_L('withdrawn').text, {s1 = amount}), _L('withdrawn').time, _L('withdrawn').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('withdrawn').text, {s1 = amount}), _L('withdrawn').type)
|
|
end
|
|
WithdrawMoneyWebhook({receiver_name = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname, value = GroupDigits(amount)})
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('no_money_bank').title, _L('no_money_bank').text, _L('no_money_bank').time, _L('no_money_bank').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, _L('no_money_bank').text, _L('no_money_bank').type)
|
|
end
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:TransferMoney")
|
|
AddEventHandler("okokBanking:TransferMoney", function(amount, ibanNumber, targetIdentifier, acc, targetName)
|
|
local _source = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local xTarget = QBCore.Functions.GetPlayerByCitizenId(targetIdentifier)
|
|
local xPlayers = QBCore.Functions.GetPlayers()
|
|
local playerMoney = xPlayer.PlayerData.money.bank
|
|
local itemCash = xPlayer.Functions.GetItemByName("cash")
|
|
local PlayerCashMoney = 0
|
|
if itemCash ~= nil then
|
|
PlayerCashMoney = itemCash.amount
|
|
end
|
|
ibanNumber = ibanNumber:upper()
|
|
|
|
if xPlayer.PlayerData.citizenid ~= targetIdentifier then
|
|
if amount <= playerMoney or amount <= PlayerCashMoney then
|
|
if xTarget ~= nil then
|
|
xPlayer.Functions.RemoveMoney('bank', amount)
|
|
xTarget.Functions.AddMoney('bank', amount)
|
|
xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
|
|
for i=1, #xPlayers, 1 do
|
|
local xForPlayer = QBCore.Functions.GetPlayer(xPlayers[i])
|
|
|
|
if xForPlayer.PlayerData.citizenid == targetIdentifier then
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactions', xPlayers[i], xTarget.PlayerData.money.bank, PlayerCashMoney)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactions', xPlayers[i], xTarget.PlayerData.money.bank, xTarget.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', xPlayers[i], _L('received_from').title, interp(_L('received_from').text, {s1 = amount, s2 = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname}), _L('received_from').time, _L('received_from').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', xPlayers[i], interp(_L('received_from').text, {s1 = amount, s2 = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname}), _L('received_from').type)
|
|
end
|
|
end
|
|
end
|
|
local tName = xTarget.PlayerData.charinfo.firstname..' '..xTarget.PlayerData.charinfo.lastname
|
|
TriggerEvent('okokBanking:AddTransferTransaction', amount, xTarget, _source, tName, targetIdentifier)
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactions', _source, xPlayer.PlayerData.money.bank, PlayerCashMoney)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactions', _source, xPlayer.PlayerData.money.bank, xPlayer.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('transferred_to').title, interp(_L('transferred_to').text, {s1 = amount, s2 = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname}), _L('transferred_to').time, _L('transferred_to').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('transferred_to').text, {s1 = amount, s2 = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname}), _L('transferred_to').type)
|
|
end
|
|
TransferMoneyWebhook({sender_name = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname, receiver_name = tName, value = amount})
|
|
elseif xTarget == nil then
|
|
local playerAccount = json.decode(acc)
|
|
playerAccount.bank = playerAccount.bank + amount
|
|
playerAccount = json.encode(playerAccount)
|
|
xPlayer.Functions.RemoveMoney('bank', amount)
|
|
xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
TriggerEvent('okokBanking:AddTransferTransaction', amount, 1, _source, targetName, targetIdentifier)
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactions', _source, xPlayer.PlayerData.money.bank, PlayerCashMoney)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactions', _source, xPlayer.PlayerData.money.bank, xPlayer.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('transferred_to').title, interp(_L('transferred_to').text, {s1 = amount, s2 = targetName}), _L('transferred_to').time, _L('transferred_to').type)
|
|
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('transferred_to').text, {s1 = amount, s2 = targetName}), _L('transferred_to').type)
|
|
end
|
|
TransferMoneyWebhook({sender_name = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname, receiver_name = targetName..' (Offline User)', value = amount})
|
|
|
|
MySQL.query('UPDATE players SET money = @playerAccount WHERE citizenid = @target', {
|
|
['@playerAccount'] = playerAccount,
|
|
['@target'] = targetIdentifier
|
|
}, function(changed)
|
|
end)
|
|
end
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('no_money_bank').title, _L('no_money_bank').text, _L('no_money_bank').time, _L('no_money_bank').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, _L('no_money_bank').text, _L('no_money_bank').type)
|
|
end
|
|
end
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('not_send_yourself').title, _L('not_send_yourself').text, _L('not_send_yourself').time, _L('not_send_yourself').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, _L('not_send_yourself').text, _L('not_send_yourself').type)
|
|
end
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:DepositMoneyToSociety")
|
|
AddEventHandler("okokBanking:DepositMoneyToSociety", function(amount, society, societyName)
|
|
local _source = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local playerMoney = xPlayer.PlayerData.money.cash
|
|
local itemCash = xPlayer.Functions.GetItemByName("cash")
|
|
local playerMoneyCash = 0
|
|
if itemCash ~= nil then
|
|
playerMoneyCash = itemCash.amount
|
|
end
|
|
|
|
if amount <= playerMoney and not Config.UseCashAsItem or amount <= playerMoneyCash and Config.UseCashAsItem then
|
|
if Config.UseQBManagement or Config.UseQBBanking then
|
|
if Config.UseQBBanking then
|
|
exports['qb-banking']:AddMoney(society, amount)
|
|
else
|
|
exports['qb-management']:AddMoney(society, amount)
|
|
end
|
|
else
|
|
MySQL.query('UPDATE okokbanking_societies SET value = value + @value WHERE society = @society AND society_name = @society_name', {
|
|
['@value'] = amount,
|
|
['@society'] = society,
|
|
['@society_name'] = societyName,
|
|
}, function(changed)
|
|
end)
|
|
end
|
|
|
|
if Config.UseCashAsItem then
|
|
xPlayer.Functions.RemoveItem('cash', amount)
|
|
else
|
|
xPlayer.Functions.RemoveMoney('cash', amount)
|
|
end
|
|
xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local itemCashUpdated = xPlayer.Functions.GetItemByName("cash")
|
|
local playerMoneyCashUpdated = 0
|
|
if itemCashUpdated ~= nil then
|
|
playerMoneyCashUpdated = itemCashUpdated.amount
|
|
end
|
|
TriggerEvent('okokBanking:AddDepositTransactionToSociety', amount, _source, society, societyName)
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, playerMoneyCashUpdated)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, xPlayer.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('deposited_to').title, interp(_L('deposited_to').text, {s1 = amount, s2 = societyName}), _L('deposited_to').time, _L('deposited_to').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('deposited_to').text, {s1 = amount, s2 = societyName}), _L('deposited_to').type)
|
|
end
|
|
TransferMoneyWebhook({sender_name = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname, receiver_name = societyName..' ('..society..')', value = amount})
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('no_money_pocket').title, _L('no_money_pocket').text, _L('no_money_pocket').time, _L('no_money_pocket').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, _L('no_money_pocket').text, _L('no_money_pocket').type)
|
|
end
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:WithdrawMoneyToSociety")
|
|
AddEventHandler("okokBanking:WithdrawMoneyToSociety", function(amount, society, societyName, societyMoney)
|
|
local _source = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local db
|
|
local hasChecked = false
|
|
|
|
if Config.UseQBManagement or Config.UseQBBanking then
|
|
if Config.UseQBBanking then
|
|
MySQL.Async.fetchAll('SELECT * FROM bank_accounts WHERE account_name = @account_name', {
|
|
['@account_name'] = society,
|
|
}, function(result)
|
|
db = result[1]
|
|
hasChecked = true
|
|
db.value = db.account_balance
|
|
end)
|
|
else
|
|
MySQL.Async.fetchAll('SELECT * FROM management_funds WHERE job_name = @job_name', {
|
|
['@job_name'] = society,
|
|
}, function(result)
|
|
db = result[1]
|
|
hasChecked = true
|
|
db.value = db.amount
|
|
end)
|
|
end
|
|
else
|
|
MySQL.query('SELECT * FROM okokbanking_societies WHERE society = @society', {
|
|
['@society'] = society
|
|
}, function(result)
|
|
db = result[1]
|
|
hasChecked = true
|
|
end)
|
|
end
|
|
|
|
if not Config.UseQBManagement then
|
|
MySQL.query('UPDATE okokbanking_societies SET is_withdrawing = 1 WHERE society = @society AND society_name = @society_name', {
|
|
['@value'] = amount,
|
|
['@society'] = society,
|
|
['@society_name'] = societyName,
|
|
}, function(changed)
|
|
end)
|
|
end
|
|
|
|
while not hasChecked do
|
|
Citizen.Wait(100)
|
|
end
|
|
|
|
if amount <= db.value then
|
|
if db.is_withdrawing == 1 then
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('someone_withdrawing').title, _L('someone_withdrawing').text, _L('someone_withdrawing').time, _L('someone_withdrawing').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, _L('someone_withdrawing').text, _L('someone_withdrawing').type)
|
|
end
|
|
else
|
|
if Config.UseQBManagement or Config.UseQBBanking then
|
|
if Config.UseQBBanking then
|
|
exports['qb-banking']:RemoveMoney(society, amount)
|
|
else
|
|
exports['qb-management']:RemoveMoney(society, amount)
|
|
end
|
|
else
|
|
MySQL.query('UPDATE okokbanking_societies SET value = value - @value WHERE society = @society AND society_name = @society_name', {
|
|
['@value'] = amount,
|
|
['@society'] = society,
|
|
['@society_name'] = societyName,
|
|
}, function(changed)
|
|
end)
|
|
end
|
|
|
|
if Config.UseCashAsItem then
|
|
xPlayer.Functions.AddItem('cash', amount)
|
|
else
|
|
xPlayer.Functions.AddMoney('cash', amount)
|
|
end
|
|
xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local itemCash = xPlayer.Functions.GetItemByName("cash")
|
|
local PlayerCashMoney = 0
|
|
if itemCash ~= nil then
|
|
PlayerCashMoney = itemCash.amount
|
|
end
|
|
TriggerEvent('okokBanking:AddWithdrawTransactionToSociety', amount, _source, society, societyName)
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, PlayerCashMoney)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, xPlayer.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('you_have_withdrawn').title, interp(_L('you_have_withdrawn').text, {s1 = amount, s2 = societyName}), _L('you_have_withdrawn').time, _L('you_have_withdrawn').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('you_have_withdrawn').text, {s1 = amount, s2 = societyName}), _L('you_have_withdrawn').type)
|
|
end
|
|
TransferMoneyWebhook({sender_name = societyName..' ('..society..')', receiver_name = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname, value = amount})
|
|
end
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('society_no_money').title, _L('society_no_money').text, _L('society_no_money').time, _L('society_no_money').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, _L('society_no_money').text, _L('society_no_money').type)
|
|
end
|
|
end
|
|
|
|
if not Config.UseQBManagement then
|
|
MySQL.query('UPDATE okokbanking_societies SET is_withdrawing = 0 WHERE society = @society AND society_name = @society_name', {
|
|
['@value'] = amount,
|
|
['@society'] = society,
|
|
['@society_name'] = societyName,
|
|
}, function(changed)
|
|
end)
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:TransferMoneyToSociety")
|
|
AddEventHandler("okokBanking:TransferMoneyToSociety", function(amount, ibanNumber, societyName, society)
|
|
local _source = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local playerMoney = xPlayer.PlayerData.money.bank
|
|
|
|
if amount <= playerMoney then
|
|
if Config.UseQBManagement or Config.UseQBBanking then
|
|
if Config.UseQBBanking then
|
|
exports['qb-banking']:AddMoney(society, amount)
|
|
else
|
|
exports['qb-management']:TransferMoney(society, amount, ibanNumber)
|
|
end
|
|
else
|
|
MySQL.query('UPDATE okokbanking_societies SET value = value + @value WHERE iban = @iban', {
|
|
['@value'] = amount,
|
|
['@iban'] = ibanNumber
|
|
}, function(changed)
|
|
end)
|
|
end
|
|
|
|
xPlayer.Functions.RemoveMoney('bank', amount)
|
|
xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local itemCash = xPlayer.Functions.GetItemByName("cash")
|
|
local playerCashMoney = 0
|
|
if itemCash ~= nil then
|
|
playerCashMoney = itemCash.amount
|
|
end
|
|
TriggerEvent('okokBanking:AddTransferTransactionToSociety', amount, _source, society, societyName)
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, playerCashMoney)
|
|
TriggerClientEvent('okokBanking:updateTransactions', _source, xPlayer.PlayerData.money.bank, playerCashMoney)
|
|
TriggerClientEvent('okokBanking:updateMoney', _source, xPlayer.PlayerData.money.bank, playerCashMoney)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, xPlayer.PlayerData.money.cash)
|
|
TriggerClientEvent('okokBanking:updateTransactions', _source, xPlayer.PlayerData.money.bank, xPlayer.PlayerData.money.cash)
|
|
TriggerClientEvent('okokBanking:updateMoney', _source, xPlayer.PlayerData.money.bank, xPlayer.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('transferred_to').title, interp(_L('transferred_to').text, {s1 = amount, s2 = societyName}), _L('transferred_to').time, _L('transferred_to').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('transferred_to').text, {s1 = amount, s2 = societyName}), _L('transferred_to').type)
|
|
end
|
|
TransferMoneyWebhook({sender_name = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname, receiver_name = societyName..' ('..society..')', value = amount})
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('no_money_bank').title, _L('no_money_bank').text, _L('no_money_bank').time, _L('no_money_bank').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, _L('no_money_bank').text, _L('no_money_bank').type)
|
|
end
|
|
end
|
|
end)
|
|
|
|
function getSocietyInfo(society, iban)
|
|
local done = false
|
|
local societyInfo = nil
|
|
if Config.UseQBManagement or Config.UseQBBanking then
|
|
if Config.UseQBBanking then
|
|
MySQL.query('SELECT * FROM bank_accounts WHERE account_name = @account_name', {
|
|
['@account_name'] = society,
|
|
}, function(result)
|
|
local db = result[1]
|
|
local aa
|
|
if db ~= nil then
|
|
if db.iban ~= nil then
|
|
aa = {
|
|
value = db.account_balance,
|
|
society_name = db.account_name,
|
|
society = db.account_name,
|
|
iban = db.iban
|
|
}
|
|
else
|
|
MySQL.query('UPDATE bank_accounts SET iban = @iban WHERE account_name = @account_name', {
|
|
['@iban'] = string.gsub(iban:upper(), " ", ""),
|
|
['@account_name'] = society,
|
|
}, function(result2)
|
|
local db2 = result2[1]
|
|
if db2 ~= nil then
|
|
aa = {
|
|
value = db2.account_balance,
|
|
society_name = db2.account_name,
|
|
society = db2.account_name,
|
|
iban = db2.iban
|
|
}
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
societyInfo = aa
|
|
done = true
|
|
end)
|
|
else
|
|
MySQL.query('SELECT * FROM management_funds WHERE job_name = @job_name', {
|
|
['@job_name'] = society,
|
|
}, function(result)
|
|
local db = result[1]
|
|
local aa
|
|
if db ~= nil then
|
|
if db.iban ~= nil then
|
|
aa = {
|
|
value = db.amount,
|
|
society_name = db.job_name,
|
|
society = db.job_name,
|
|
iban = db.iban
|
|
}
|
|
else
|
|
MySQL.query('UPDATE management_funds SET iban = @iban WHERE job_name = @job_name', {
|
|
['@iban'] = string.gsub(iban:upper(), " ", ""),
|
|
['@job_name'] = society,
|
|
}, function(result2)
|
|
local db2 = result2[1]
|
|
if db2 ~= nil then
|
|
aa = {
|
|
value = db2.amount,
|
|
society_name = db2.job_name,
|
|
society = db2.job_name,
|
|
iban = db2.iban
|
|
}
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
societyInfo = aa
|
|
done = true
|
|
end)
|
|
end
|
|
else
|
|
MySQL.query('SELECT * FROM okokbanking_societies WHERE society = @society', {
|
|
['@society'] = society
|
|
}, function(result)
|
|
local db = result[1]
|
|
societyInfo = db
|
|
done = true
|
|
end)
|
|
end
|
|
while not done do
|
|
Citizen.Wait(100)
|
|
end
|
|
return societyInfo
|
|
end
|
|
|
|
RegisterServerEvent("okokBanking:TransferMoneyToSocietyFromSociety")
|
|
AddEventHandler("okokBanking:TransferMoneyToSocietyFromSociety", function(amount, ibanNumber, societyNameTarget, societyTarget, society, societyName, societyMoney)
|
|
local _source = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local playerJob = xPlayer.PlayerData.job.name
|
|
|
|
if society ~= playerJob then
|
|
return
|
|
end
|
|
|
|
local itemCash = xPlayer.Functions.GetItemByName("cash")
|
|
local playerCashMoney = 0
|
|
if itemCash ~= nil then
|
|
playerCashMoney = itemCash.amount
|
|
end
|
|
local xTarget = QBCore.Functions.GetPlayerByCitizenId(targetIdentifier)
|
|
local xPlayers = QBCore.Functions.GetPlayers()
|
|
|
|
local societyInfo = getSocietyInfo(society, ibanNumber)
|
|
|
|
if amount <= societyInfo.value then
|
|
if Config.UseQBManagement or Config.UseQBBanking then
|
|
if Config.UseQBBanking then
|
|
exports['qb-banking']:RemoveMoney(society, amount)
|
|
exports['qb-banking']:AddMoney(societyTarget, amount)
|
|
else
|
|
exports['qb-management']:AddMoney(societyTarget, amount)
|
|
exports['qb-management']:RemoveMoney(society, amount)
|
|
end
|
|
else
|
|
MySQL.query('UPDATE okokbanking_societies SET value = value - @value WHERE society = @society AND society_name = @society_name', {
|
|
['@value'] = amount,
|
|
['@society'] = society,
|
|
['@society_name'] = societyName,
|
|
}, function(changed)
|
|
MySQL.query('UPDATE okokbanking_societies SET value = value + @value WHERE society = @society AND society_name = @society_name', {
|
|
['@value'] = amount,
|
|
['@society'] = societyTarget,
|
|
['@society_name'] = societyNameTarget,
|
|
}, function(changed)
|
|
end)
|
|
end)
|
|
end
|
|
|
|
TriggerEvent('okokBanking:AddTransferTransactionFromSociety', amount, society, societyName, societyTarget, societyNameTarget)
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, playerCashMoney)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, xPlayer.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('transferred_to').title, interp(_L('transferred_to').text, {s1 = amount, s2 = societyNameTarget}), _L('transferred_to').time, _L('transferred_to').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('transferred_to').text, {s1 = amount, s2 = societyNameTarget}), _L('transferred_to').type)
|
|
end
|
|
TransferMoneyWebhook({sender_name = societyName..' ('..society..')', receiver_name = societyNameTarget..' ('..societyTarget..')', value = amount})
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('society_no_money').title, _L('society_no_money').text, _L('society_no_money').time, _L('society_no_money').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, _L('society_no_money').text, _L('society_no_money').type)
|
|
end
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:TransferMoneyToPlayerFromSociety")
|
|
AddEventHandler("okokBanking:TransferMoneyToPlayerFromSociety", function(amount, ibanNumber, targetIdentifier, acc, targetName, society, societyName, societyMoney, toMyself)
|
|
local _source = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local itemCash = xPlayer.Functions.GetItemByName("cash")
|
|
local playerCashMoney = 0
|
|
if itemCash ~= nil then
|
|
playerCashMoney = itemCash.amount
|
|
end
|
|
local xTarget = QBCore.Functions.GetPlayerByCitizenId(targetIdentifier)
|
|
local itemCashTarget = xTarget.Functions.GetItemByName("cash")
|
|
local playerCashMoneyTarget = 0
|
|
if itemCashTarget ~= nil then
|
|
playerCashMoneyTarget = itemCashTarget.amount
|
|
end
|
|
local xPlayers = QBCore.Functions.GetPlayers()
|
|
|
|
if amount <= societyMoney then
|
|
if Config.UseQBManagement or Config.UseQBBanking then
|
|
if Config.UseQBBanking then
|
|
exports['qb-banking']:RemoveMoney(society, amount)
|
|
else
|
|
exports['qb-management']:RemoveMoney(society, amount)
|
|
end
|
|
else
|
|
MySQL.query('UPDATE okokbanking_societies SET value = value - @value WHERE society = @society AND society_name = @society_name', {
|
|
['@value'] = amount,
|
|
['@society'] = society,
|
|
['@society_name'] = societyName,
|
|
}, function(changed)
|
|
end)
|
|
end
|
|
if xTarget ~= nil then
|
|
xTarget.Functions.AddMoney('bank', amount)
|
|
if not toMyself then
|
|
for i=1, #xPlayers, 1 do
|
|
local xForPlayer = QBCore.Functions.GetPlayer(xPlayers[i])
|
|
if xForPlayer.PlayerData.citizenid == targetIdentifier then
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactions', xPlayers[i], xTarget.PlayerData.money.bank, playerCashMoneyTarget)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactions', xPlayers[i], xTarget.PlayerData.money.bank, xTarget.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', xPlayers[i], _L('received_from').title, interp(_L('received_from').text, {s1 = amount, s2 = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname}), _L('received_from').time, _L('received_from').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', xPlayers[i], interp(_L('received_from').text, {s1 = amount, s2 = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname}), _L('received_from').type)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
TriggerEvent('okokBanking:AddTransferTransactionFromSocietyToP', amount, society, societyName, targetIdentifier, targetName)
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, playerCashMoney)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, xPlayer.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('transferred_to').title, interp(_L('transferred_to').text, {s1 = amount, s2 = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname}), _L('transferred_to').time, _L('transferred_to').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('transferred_to').text, {s1 = amount, s2 = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname}), _L('transferred_to').type)
|
|
end
|
|
TransferMoneyWebhook({sender_name = societyName..' ('..society..')', receiver_name = xTarget.PlayerData.charinfo.firstname..' '..xTarget.PlayerData.charinfo.lastname, value = amount})
|
|
elseif xTarget == nil then
|
|
local playerAccount = json.decode(acc)
|
|
playerAccount.bank = playerAccount.bank + amount
|
|
playerAccount = json.encode(playerAccount)
|
|
|
|
TriggerEvent('okokBanking:AddTransferTransactionFromSocietyToP', amount, society, societyName, targetIdentifier, targetName)
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, playerCashMoney)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactionsSociety', _source, xPlayer.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('transferred_to').title, interp(_L('transferred_to').text, {s1 = amount, s2 = targetName }), _L('transferred_to').time, _L('transferred_to').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('transferred_to').text, {s1 = amount, s2 = targetName }), _L('transferred_to').type)
|
|
end
|
|
TransferMoneyWebhook({sender_name = societyName..' ('..society..')', receiver_name = targetName..' (Offline User)', value = amount})
|
|
|
|
MySQL.query('UPDATE players SET money = @playerAccount WHERE citizenid = @target', {
|
|
['@playerAccount'] = playerAccount,
|
|
['@target'] = targetIdentifier
|
|
}, function(changed)
|
|
|
|
end)
|
|
end
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('society_no_money').title, _L('society_no_money').text, _L('society_no_money').time, _L('society_no_money').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, _L('society_no_money').text, _L('society_no_money').type)
|
|
end
|
|
end
|
|
end)
|
|
|
|
QBCore.Functions.CreateCallback("okokBanking:GetOverviewTransactions", function(source, cb)
|
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
|
local playerIdentifier = xPlayer.PlayerData.citizenid
|
|
local allDays = {}
|
|
local income = 0
|
|
local outcome = 0
|
|
local totalIncome = 0
|
|
local day1_total, day2_total, day3_total, day4_total, day5_total, day6_total, day7_total = 0, 0, 0, 0, 0, 0, 0
|
|
|
|
MySQL.query('SELECT * FROM okokbanking_transactions WHERE receiver_identifier = @identifier OR sender_identifier = @identifier ORDER BY id DESC', {
|
|
['@identifier'] = playerIdentifier
|
|
}, function(result)
|
|
MySQL.query('SELECT *, DATE(date) = CURDATE() AS "day1", DATE(date) = CURDATE() - INTERVAL 1 DAY AS "day2", DATE(date) = CURDATE() - INTERVAL 2 DAY AS "day3", DATE(date) = CURDATE() - INTERVAL 3 DAY AS "day4", DATE(date) = CURDATE() - INTERVAL 4 DAY AS "day5", DATE(date) = CURDATE() - INTERVAL 5 DAY AS "day6", DATE(date) = CURDATE() - INTERVAL 6 DAY AS "day7" FROM `okokbanking_transactions` WHERE DATE(date) >= CURDATE() - INTERVAL 7 DAY AND receiver_identifier = @identifier OR sender_identifier = @identifier', {
|
|
['@identifier'] = playerIdentifier
|
|
}, function(result2)
|
|
for k, v in pairs(result2) do
|
|
local type = v.type
|
|
local receiver_identifier = v.receiver_identifier
|
|
local sender_identifier = v.sender_identifier
|
|
local value = tonumber(v.value)
|
|
|
|
if v.day1 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day1_total = day1_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day1_total = day1_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day1_total = day1_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day1_total = day1_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day2 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day2_total = day2_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day2_total = day2_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day2_total = day2_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day2_total = day2_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day3 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day3_total = day3_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day3_total = day3_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day3_total = day3_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day3_total = day3_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day4 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day4_total = day4_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day4_total = day4_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day4_total = day4_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day4_total = day4_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day5 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day5_total = day5_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day5_total = day5_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day5_total = day5_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day5_total = day5_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day6 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day6_total = day6_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day6_total = day6_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day6_total = day6_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day6_total = day6_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day7 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day7_total = day7_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day7_total = day7_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day7_total = day7_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day7_total = day7_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
totalIncome = day1_total + day2_total + day3_total + day4_total + day5_total + day6_total + day7_total
|
|
|
|
table.remove(allDays)
|
|
table.insert(allDays, day1_total)
|
|
table.insert(allDays, day2_total)
|
|
table.insert(allDays, day3_total)
|
|
table.insert(allDays, day4_total)
|
|
table.insert(allDays, day5_total)
|
|
table.insert(allDays, day6_total)
|
|
table.insert(allDays, day7_total)
|
|
table.insert(allDays, income)
|
|
table.insert(allDays, outcome)
|
|
table.insert(allDays, totalIncome)
|
|
|
|
cb(result, playerIdentifier, allDays)
|
|
end)
|
|
end)
|
|
end)
|
|
|
|
QBCore.Functions.CreateCallback("okokBanking:GetSocietyTransactions", function(source, cb, society)
|
|
local playerIdentifier = society
|
|
local allDays = {}
|
|
local income = 0
|
|
local outcome = 0
|
|
local totalIncome = 0
|
|
local day1_total, day2_total, day3_total, day4_total, day5_total, day6_total, day7_total = 0, 0, 0, 0, 0, 0, 0
|
|
|
|
MySQL.query('SELECT * FROM okokbanking_transactions WHERE receiver_identifier = @identifier OR sender_identifier = @identifier ORDER BY id DESC', {
|
|
['@identifier'] = society
|
|
}, function(result)
|
|
MySQL.query('SELECT *, DATE(date) = CURDATE() AS "day1", DATE(date) = CURDATE() - INTERVAL 1 DAY AS "day2", DATE(date) = CURDATE() - INTERVAL 2 DAY AS "day3", DATE(date) = CURDATE() - INTERVAL 3 DAY AS "day4", DATE(date) = CURDATE() - INTERVAL 4 DAY AS "day5", DATE(date) = CURDATE() - INTERVAL 5 DAY AS "day6", DATE(date) = CURDATE() - INTERVAL 6 DAY AS "day7" FROM `okokbanking_transactions` WHERE DATE(date) >= CURDATE() - INTERVAL 7 DAY AND receiver_identifier = @identifier OR sender_identifier = @identifier ORDER BY id DESC', {
|
|
['@identifier'] = society
|
|
}, function(result2)
|
|
for k, v in pairs(result2) do
|
|
local type = v.type
|
|
local receiver_identifier = v.receiver_identifier
|
|
local sender_identifier = v.sender_identifier
|
|
local value = tonumber(v.value)
|
|
|
|
if v.day1 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day1_total = day1_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day1_total = day1_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day1_total = day1_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day1_total = day1_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day2 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day2_total = day2_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day2_total = day2_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day2_total = day2_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day2_total = day2_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day3 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day3_total = day3_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day3_total = day3_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day3_total = day3_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day3_total = day3_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day4 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day4_total = day4_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day4_total = day4_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day4_total = day4_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day4_total = day4_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day5 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day5_total = day5_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day5_total = day5_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day5_total = day5_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day5_total = day5_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day6 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day6_total = day6_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day6_total = day6_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day6_total = day6_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day6_total = day6_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
elseif v.day7 == 1 then
|
|
if value ~= nil then
|
|
if type == "deposit" then
|
|
day7_total = day7_total + value
|
|
income = income + value
|
|
elseif type == "withdraw" then
|
|
day7_total = day7_total - value
|
|
outcome = outcome - value
|
|
elseif type == "transfer" and receiver_identifier == playerIdentifier then
|
|
day7_total = day7_total + value
|
|
income = income + value
|
|
elseif type == "transfer" and sender_identifier == playerIdentifier then
|
|
day7_total = day7_total - value
|
|
outcome = outcome - value
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
totalIncome = day1_total + day2_total + day3_total + day4_total + day5_total + day6_total + day7_total
|
|
|
|
table.remove(allDays)
|
|
table.insert(allDays, day1_total)
|
|
table.insert(allDays, day2_total)
|
|
table.insert(allDays, day3_total)
|
|
table.insert(allDays, day4_total)
|
|
table.insert(allDays, day5_total)
|
|
table.insert(allDays, day6_total)
|
|
table.insert(allDays, day7_total)
|
|
table.insert(allDays, income)
|
|
table.insert(allDays, outcome)
|
|
table.insert(allDays, totalIncome)
|
|
|
|
cb(result, playerIdentifier, allDays)
|
|
end)
|
|
end)
|
|
end)
|
|
|
|
|
|
RegisterServerEvent("okokBanking:AddDepositTransaction")
|
|
AddEventHandler("okokBanking:AddDepositTransaction", function(amount, source_)
|
|
local _source = nil
|
|
if source_ ~= nil then
|
|
_source = source_
|
|
else
|
|
_source = source
|
|
end
|
|
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
|
|
MySQL.query('INSERT INTO okokbanking_transactions (receiver_identifier, receiver_name, sender_identifier, sender_name, date, value, type) VALUES (@receiver_identifier, @receiver_name, @sender_identifier, @sender_name, CURRENT_TIMESTAMP(), @value, @type)', {
|
|
['@receiver_identifier'] = 'bank',
|
|
['@receiver_name'] = 'Bank Account',
|
|
['@sender_identifier'] = tostring(xPlayer.PlayerData.citizenid),
|
|
['@sender_name'] = tostring(xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname),
|
|
['@value'] = tonumber(amount),
|
|
['@type'] = 'deposit'
|
|
}, function (result)
|
|
end)
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:AddWithdrawTransaction")
|
|
AddEventHandler("okokBanking:AddWithdrawTransaction", function(amount, source_)
|
|
local _source = nil
|
|
if source_ ~= nil then
|
|
_source = source_
|
|
else
|
|
_source = source
|
|
end
|
|
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
|
|
MySQL.query('INSERT INTO okokbanking_transactions (receiver_identifier, receiver_name, sender_identifier, sender_name, date, value, type) VALUES (@receiver_identifier, @receiver_name, @sender_identifier, @sender_name, CURRENT_TIMESTAMP(), @value, @type)', {
|
|
['@receiver_identifier'] = tostring(xPlayer.PlayerData.citizenid),
|
|
['@receiver_name'] = tostring(xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname),
|
|
['@sender_identifier'] = 'bank',
|
|
['@sender_name'] = 'Bank Account',
|
|
['@value'] = tonumber(amount),
|
|
['@type'] = 'withdraw'
|
|
}, function (result)
|
|
end)
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:AddTransferTransaction")
|
|
AddEventHandler("okokBanking:AddTransferTransaction", function(amount, xTarget, source_, targetName, targetIdentifier)
|
|
local _source = nil
|
|
if source_ ~= nil then
|
|
_source = source_
|
|
else
|
|
_source = source
|
|
end
|
|
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
if targetName == nil then
|
|
MySQL.query('INSERT INTO okokbanking_transactions (receiver_identifier, receiver_name, sender_identifier, sender_name, date, value, type) VALUES (@receiver_identifier, @receiver_name, @sender_identifier, @sender_name, CURRENT_TIMESTAMP(), @value, @type)', {
|
|
['@receiver_identifier'] = tostring(xTarget.PlayerData.citizenid),
|
|
['@receiver_name'] = tostring(xTarget.PlayerData.charinfo.firstname..' '..xTarget.PlayerData.charinfo.lastname),
|
|
['@sender_identifier'] = tostring(xPlayer.PlayerData.citizenid),
|
|
['@sender_name'] = tostring(xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname),
|
|
['@value'] = tonumber(amount),
|
|
['@type'] = 'transfer'
|
|
}, function (result)
|
|
end)
|
|
elseif targetName ~= nil and targetIdentifier ~= nil then
|
|
MySQL.query('INSERT INTO okokbanking_transactions (receiver_identifier, receiver_name, sender_identifier, sender_name, date, value, type) VALUES (@receiver_identifier, @receiver_name, @sender_identifier, @sender_name, CURRENT_TIMESTAMP(), @value, @type)', {
|
|
['@receiver_identifier'] = tostring(targetIdentifier),
|
|
['@receiver_name'] = tostring(targetName),
|
|
['@sender_identifier'] = tostring(xPlayer.PlayerData.citizenid),
|
|
['@sender_name'] = tostring(xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname),
|
|
['@value'] = tonumber(amount),
|
|
['@type'] = 'transfer'
|
|
}, function (result)
|
|
end)
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:AddTransferTransactionToSociety")
|
|
AddEventHandler("okokBanking:AddTransferTransactionToSociety", function(amount, source_, society, societyName)
|
|
local _source = nil
|
|
if source_ ~= nil then
|
|
_source = source_
|
|
else
|
|
_source = source
|
|
end
|
|
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
MySQL.query('INSERT INTO okokbanking_transactions (receiver_identifier, receiver_name, sender_identifier, sender_name, date, value, type) VALUES (@receiver_identifier, @receiver_name, @sender_identifier, @sender_name, CURRENT_TIMESTAMP(), @value, @type)', {
|
|
['@receiver_identifier'] = society,
|
|
['@receiver_name'] = societyName,
|
|
['@sender_identifier'] = tostring(xPlayer.PlayerData.citizenid),
|
|
['@sender_name'] = tostring(xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname),
|
|
['@value'] = tonumber(amount),
|
|
['@type'] = 'transfer'
|
|
}, function (result)
|
|
end)
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:AddTransferTransactionFromSocietyToP")
|
|
AddEventHandler("okokBanking:AddTransferTransactionFromSocietyToP", function(amount, society, societyName, identifier, name)
|
|
|
|
MySQL.query('INSERT INTO okokbanking_transactions (receiver_identifier, receiver_name, sender_identifier, sender_name, date, value, type) VALUES (@receiver_identifier, @receiver_name, @sender_identifier, @sender_name, CURRENT_TIMESTAMP(), @value, @type)', {
|
|
['@receiver_identifier'] = identifier,
|
|
['@receiver_name'] = name,
|
|
['@sender_identifier'] = society,
|
|
['@sender_name'] = societyName,
|
|
['@value'] = tonumber(amount),
|
|
['@type'] = 'transfer'
|
|
}, function (result)
|
|
end)
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:AddTransferTransactionFromSociety")
|
|
AddEventHandler("okokBanking:AddTransferTransactionFromSociety", function(amount, society, societyName, societyTarget, societyNameTarget)
|
|
|
|
MySQL.query('INSERT INTO okokbanking_transactions (receiver_identifier, receiver_name, sender_identifier, sender_name, date, value, type) VALUES (@receiver_identifier, @receiver_name, @sender_identifier, @sender_name, CURRENT_TIMESTAMP(), @value, @type)', {
|
|
['@receiver_identifier'] = societyTarget,
|
|
['@receiver_name'] = societyNameTarget,
|
|
['@sender_identifier'] = society,
|
|
['@sender_name'] = societyName,
|
|
['@value'] = tonumber(amount),
|
|
['@type'] = 'transfer'
|
|
}, function (result)
|
|
end)
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:AddDepositTransactionToSociety")
|
|
AddEventHandler("okokBanking:AddDepositTransactionToSociety", function(amount, source_, society, societyName)
|
|
local _source = nil
|
|
if source_ ~= nil then
|
|
_source = source_
|
|
else
|
|
_source = source
|
|
end
|
|
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
|
|
MySQL.query('INSERT INTO okokbanking_transactions (receiver_identifier, receiver_name, sender_identifier, sender_name, date, value, type) VALUES (@receiver_identifier, @receiver_name, @sender_identifier, @sender_name, CURRENT_TIMESTAMP(), @value, @type)', {
|
|
['@receiver_identifier'] = society,
|
|
['@receiver_name'] = societyName,
|
|
['@sender_identifier'] = tostring(xPlayer.PlayerData.citizenid),
|
|
['@sender_name'] = tostring(xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname),
|
|
['@value'] = tonumber(amount),
|
|
['@type'] = 'deposit'
|
|
}, function (result)
|
|
end)
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:AddWithdrawTransactionToSociety")
|
|
AddEventHandler("okokBanking:AddWithdrawTransactionToSociety", function(amount, source_, society, societyName)
|
|
local _source = nil
|
|
if source_ ~= nil then
|
|
_source = source_
|
|
else
|
|
_source = source
|
|
end
|
|
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
|
|
MySQL.query('INSERT INTO okokbanking_transactions (receiver_identifier, receiver_name, sender_identifier, sender_name, date, value, type) VALUES (@receiver_identifier, @receiver_name, @sender_identifier, @sender_name, CURRENT_TIMESTAMP(), @value, @type)', {
|
|
['@receiver_identifier'] = tostring(xPlayer.PlayerData.citizenid),
|
|
['@receiver_name'] = tostring(xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname),
|
|
['@sender_identifier'] = society,
|
|
['@sender_name'] = societyName,
|
|
['@value'] = tonumber(amount),
|
|
['@type'] = 'withdraw'
|
|
}, function (result)
|
|
end)
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:UpdateIbanDB")
|
|
AddEventHandler("okokBanking:UpdateIbanDB", function(iban, amount)
|
|
local _source = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
|
|
if amount <= xPlayer.PlayerData.money.bank then
|
|
MySQL.query('SELECT charinfo FROM players WHERE citizenid = ?', {
|
|
xPlayer.PlayerData.citizenid
|
|
}, function(result)
|
|
local charinfo = json.decode(result[1].charinfo)
|
|
if not Config.CharInfoUpdate then charinfo = json.decode(result) end
|
|
charinfo.account = iban
|
|
local updated = json.encode(charinfo)
|
|
MySQL.query('UPDATE players SET charinfo = ? WHERE citizenid = ?', {updated, xPlayer.PlayerData.citizenid})
|
|
end)
|
|
if xPlayer.Functions.ChangeIban then
|
|
xPlayer.Functions.ChangeIban(iban)
|
|
else
|
|
TriggerClientEvent('okokNotify:Alert', _source, 'OKOKBANKING', 'Unable to locate or identify the function ChangeIban. Please refer to the documentation for correct usage and placement!', 5000, 'warning')
|
|
return
|
|
end
|
|
xPlayer.Functions.RemoveMoney('bank', amount)
|
|
xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local itemCash = xPlayer.Functions.GetItemByName("cash")
|
|
local playerCashMoney = 0
|
|
if itemCash ~= nil then
|
|
playerCashMoney = itemCash.amount
|
|
end
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateMoney', _source, xPlayer.PlayerData.money.bank, playerCashMoney)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateMoney', _source, xPlayer.PlayerData.money.bank, xPlayer.PlayerData.money.cash)
|
|
end
|
|
TriggerEvent('okokBanking:AddTransferTransactionToSociety', amount, _source, "bank", "Bank (IBAN)")
|
|
TriggerClientEvent('okokBanking:updateIban', _source, iban)
|
|
TriggerClientEvent('okokBanking:updateIbanPinChange', _source)
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('iban_changed').title, interp(_L('iban_changed').text, {s1 = iban}), _L('iban_changed').time, _L('iban_changed').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('iban_changed').text, {s1 = iban}), _L('iban_changed').type)
|
|
end
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('iban_no_money').title, interp(_L('iban_no_money').text, {s1 = amount}), _L('iban_no_money').time, _L('iban_no_money').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('iban_no_money').text, {s1 = amount}), _L('iban_no_money').type)
|
|
end
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:UpdatePINDB")
|
|
AddEventHandler("okokBanking:UpdatePINDB", function(pin, amount)
|
|
local _source = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
|
|
if amount <= xPlayer.PlayerData.money.bank then
|
|
MySQL.query('UPDATE players SET pincode = @pin WHERE citizenid = @identifier', {
|
|
['@pin'] = pin,
|
|
['@identifier'] = xPlayer.PlayerData.citizenid,
|
|
}, function(changed)
|
|
end)
|
|
|
|
xPlayer.Functions.RemoveMoney('bank', amount)
|
|
xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local itemCash = xPlayer.Functions.GetItemByName("cash")
|
|
local playerCashMoney = 0
|
|
if itemCash ~= nil then
|
|
playerCashMoney = itemCash.amount
|
|
end
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateMoney', _source, xPlayer.PlayerData.money.bank, playerCashMoney)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateMoney', _source, xPlayer.PlayerData.money.bank, xPlayer.PlayerData.money.cash)
|
|
end
|
|
TriggerEvent('okokBanking:AddTransferTransactionToSociety', amount, _source, "bank", "Bank (PIN)")
|
|
TriggerClientEvent('okokBanking:updateIbanPinChange', _source)
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('pin_changed').title, interp(_L('pin_changed').text, {s1 = pin}), _L('pin_changed').time, _L('pin_changed').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L("pin_changed").text, {s1 = pin}), _L('pin_changed').type)
|
|
end
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('pin_no_money').title, interp(_L('pin_no_money').text, {s1 = amount}), _L('pin_no_money').time, _L('pin_no_money').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('pin_no_money').text, {s1 = amount}), _L('pin_no_money').type)
|
|
end
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:AddNewTransaction")
|
|
AddEventHandler("okokBanking:AddNewTransaction", function(receiver_name, receiver_identifier, sender_name, sender_identifier, amount, reason)
|
|
MySQL.Async.insert('INSERT INTO okokbanking_transactions (receiver_identifier, receiver_name, sender_identifier, sender_name, date, value, type) VALUES (@receiver_identifier, @receiver_name, @sender_identifier, @sender_name, CURRENT_TIMESTAMP(), @value, @type)', {
|
|
['@receiver_identifier'] = receiver_identifier,
|
|
['@receiver_name'] = receiver_name.." ("..reason..")",
|
|
['@sender_identifier'] = sender_identifier,
|
|
['@sender_name'] = sender_name.." ("..reason..")",
|
|
['@value'] = tonumber(amount),
|
|
['@type'] = 'transfer'
|
|
}, function (result)
|
|
end)
|
|
end)
|
|
|
|
RegisterServerEvent("okokBanking:GiveCC")
|
|
AddEventHandler("okokBanking:GiveCC", function()
|
|
local _source = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(_source)
|
|
local playerMoney = xPlayer.PlayerData.money.bank
|
|
local itemCash = xPlayer.Functions.GetItemByName("cash")
|
|
local playerCashMoney = 0
|
|
if itemCash ~= nil then
|
|
playerCashMoney = itemCash.amount
|
|
end
|
|
|
|
if Config.CreditCardPrice <= playerMoney then
|
|
xPlayer.Functions.RemoveMoney('bank', Config.CreditCardPrice)
|
|
xPlayer.Functions.AddItem(Config.CreditCardItem, 1)
|
|
TriggerEvent('okokBanking:AddNewTransaction', 'Bank', 'bank', tostring(xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname), xPlayer.PlayerData.citizenid, Config.CreditCardPrice, 'Buy CC')
|
|
if Config.UseCashAsItem then
|
|
TriggerClientEvent('okokBanking:updateTransactions', source, xPlayer.PlayerData.money.bank, playerCashMoney)
|
|
else
|
|
TriggerClientEvent('okokBanking:updateTransactions', source, xPlayer.PlayerData.money.bank, xPlayer.PlayerData.money.cash)
|
|
end
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('bought_cc').title, interp(_L('bought_cc').text, {s1 = Config.CreditCardPrice}), _L('bought_cc').time, _L('bought_cc').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, interp(_L('bought_cc').text, {s1 = Config.CreditCardPrice}), _L('bought_cc').type)
|
|
end
|
|
else
|
|
if Config.okokNotify then
|
|
TriggerClientEvent('okokNotify:Alert', _source, _L('no_money_bank').title, _L('no_money_bank').text, _L('no_money_bank').time, _L('no_money_bank').type)
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', _source, _L('no_money_bank').text, _L('no_money_bank').type)
|
|
end
|
|
end
|
|
end)
|
|
|
|
function GroupDigits(value)
|
|
local left,num,right = string.match(value,'^([^%d]*%d)(%d*)(.-)$')
|
|
|
|
return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right
|
|
end
|
|
|
|
-------------------------- WEBHOOK
|
|
|
|
function TransferMoneyWebhook(data)
|
|
local information = {
|
|
{
|
|
["color"] = Config.TransferWebhookColor,
|
|
["author"] = {
|
|
["icon_url"] = Config.IconURL,
|
|
["name"] = Config.ServerName..' - Banking Logs',
|
|
},
|
|
["title"] = 'New Transaction',
|
|
["description"] = '**Sender:** '..data.sender_name..'\n**Receiver:** '..data.receiver_name..'\n**Amount:** '..data.value..'€',
|
|
|
|
["footer"] = {
|
|
["text"] = os.date(Config.DateFormat),
|
|
}
|
|
}
|
|
}
|
|
PerformHttpRequest(Webhook, function(err, text, headers) end, 'POST', json.encode({username = Config.BotName, embeds = information}), {['Content-Type'] = 'application/json'})
|
|
end
|
|
|
|
function WithdrawMoneyWebhook(data)
|
|
local information = {
|
|
{
|
|
["color"] = Config.WithdrawWebhookColor,
|
|
["author"] = {
|
|
["icon_url"] = Config.IconURL,
|
|
["name"] = Config.ServerName..' - Banking Logs',
|
|
},
|
|
["title"] = 'New Withdrawal',
|
|
["description"] = '**Receiver:** '..data.receiver_name..'\n**Amount:** '..data.value..'€',
|
|
|
|
["footer"] = {
|
|
["text"] = os.date(Config.DateFormat),
|
|
}
|
|
}
|
|
}
|
|
PerformHttpRequest(Webhook, function(err, text, headers) end, 'POST', json.encode({username = Config.BotName, embeds = information}), {['Content-Type'] = 'application/json'})
|
|
end
|
|
|
|
function DepositMoneyWebhook(data)
|
|
local information = {
|
|
{
|
|
["color"] = Config.DepositWebhookColor,
|
|
["author"] = {
|
|
["icon_url"] = Config.IconURL,
|
|
["name"] = Config.ServerName..' - Banking Logs',
|
|
},
|
|
["title"] = 'New Deposit',
|
|
["description"] = '**Sender:** '..data.sender_name..'\n**Amount:** '..data.value..'€',
|
|
|
|
["footer"] = {
|
|
["text"] = os.date(Config.DateFormat),
|
|
}
|
|
}
|
|
}
|
|
PerformHttpRequest(Webhook, function(err, text, headers) end, 'POST', json.encode({username = Config.BotName, embeds = information}), {['Content-Type'] = 'application/json'})
|
|
end |