local QBCore = exports['qb-core']:GetCoreObject()
local timeOut = false

-- Callback

QBCore.Functions.CreateCallback('qb-jewellery:server:getCops', function(source, cb)
	local amount = 0
    for k, v in pairs(QBCore.Functions.GetQBPlayers()) do
        if v.PlayerData.job.name == "police" and v.PlayerData.job.onduty then
            amount = amount + 1
        end
    end
    cb(amount)
end)

-- Events
RegisterNetEvent('qb-jewellery:server:ThermitePtfx', function()
    TriggerClientEvent('qb-jewellery:client:ThermitePtfx', -1)
end)

RegisterNetEvent('qb-jewellery:server:setVitrineState', function(stateType, state, k)
    Config.Locations[k][stateType] = state
    TriggerClientEvent('qb-jewellery:client:setVitrineState', -1, stateType, state, k)
end)

RegisterNetEvent('qb-jewellery:server:vitrineReward', function()
    local src = source
    local Player = QBCore.Functions.GetPlayer(src)
    local otherchance = math.random(1, 4)
    local odd = math.random(1, 4)

    if otherchance == odd then
        local item = math.random(1, #Config.VitrineRewards)
        local amount = math.random(Config.VitrineRewards[item]["amount"]["min"], Config.VitrineRewards[item]["amount"]["max"])
        if Player.Functions.AddItem(Config.VitrineRewards[item]["item"], amount) then
            TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[Config.VitrineRewards[item]["item"]], 'add')
        else
            TriggerClientEvent('QBCore:Notify', src, 'Dine lommer er fyldte', 'error')
        end
    else
        local amount = math.random(2, 4)
        if Player.Functions.AddItem("10kgoldchain", amount) then
            TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items["10kgoldchain"], 'add')
        else
            TriggerClientEvent('QBCore:Notify', src, 'Dine lommer er fyldte..', 'error')
        end
    end
end)

RegisterNetEvent('qb-jewellery:server:Safe', function()
    local chance = math.random(1, 25)
    local Player = QBCore.Functions.GetPlayer(source)
    if chance >= 1 and chance <= 5 then
        QBCore.Functions.Notify('Du fandt intet!', 'error', 7500)
    elseif chance >= 6 and chance <= 7 then
        QBCore.Functions.Notify('Du fandt en pistol!', 'success', 7500)
        Player.Functions.AddItem('weapon_pistol', 1)
        TriggerClientEvent("inventory:client:ItemBox", source, QBCore.Shared.Items["weapon_pistol"], "add")
    elseif chance >= 8 and chance <= 14 then
        QBCore.Functions.Notify('You Found Some Goods', 'success', 7500)
        Player.Functions.AddItem('specialwatch', 1)
        TriggerClientEvent("inventory:client:ItemBox", source, QBCore.Shared.Items["specialwatch"], "add")
        Player.Functions.AddItem('blueusb', 1)
        TriggerClientEvent("inventory:client:ItemBox", source, QBCore.Shared.Items["blueusb"], "add")
    elseif chance >= 15 and chance <= 20 then
        QBCore.Functions.Notify('You Found Cash!', 'success', 7500)
        Player.Functions.AddMoney('cash', 1500)
    elseif chance >= 21 and chance <= 25 then
        QBCore.Functions.Notify('You Found Some Counterfiet Money!', 'success', 7500)
        Player.Functions.AddItem('markedbills', 35)
        TriggerClientEvent("inventory:client:ItemBox", source, QBCore.Shared.Items["markedbills"], "add")
    end
    Player.Functions.RemoveItem('stethascope', 1)
    TriggerClientEvent("inventory:client:ItemBox", source, QBCore.Shared.Items["stethascope"], "remove")
end)

RegisterNetEvent('qb-jewellery:server:thermiteremove', function()
    local Player = QBCore.Functions.GetPlayer(source)
    Player.Functions.RemoveItem('thermite', 1)
    TriggerClientEvent("inventory:client:ItemBox", source, QBCore.Shared.Items["thermite"], "remove")
end)

RegisterNetEvent('qb-jewellery:server:gatecrackremove', function()
    local Player = QBCore.Functions.GetPlayer(source)
    Player.Functions.RemoveItem('gatecrack', 1)
    TriggerClientEvent("inventory:client:ItemBox", source, QBCore.Shared.Items["gatecrack"], "remove")
end)

RegisterNetEvent('qb-jewellery:server:setTimeout', function()
    if not timeOut then
        timeOut = true
        TriggerEvent('qb-scoreboard:server:SetActivityBusy', "jewellery", true)
        Citizen.CreateThread(function()
            Citizen.Wait(Config.Timeout)

            for k, v in pairs(Config.Locations) do
                Config.Locations[k]["isOpened"] = false
                TriggerClientEvent('qb-jewellery:client:setVitrineState', -1, 'isOpened', false, k)
                TriggerClientEvent('qb-jewellery:client:setAlertState', -1, false)
                TriggerEvent('qb-scoreboard:server:SetActivityBusy', "jewellery", false)
            end
            timeOut = false
        end)
    end
end)