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

-- local firstname = nil
-- local lastname = nil
-- local birthday = nil
-- local gender = nil
-- local nationality = nil
-- local info = {}

-- RegisterNetEvent('QBCore:Client:OnPlayerLoaded')
-- AddEventHandler('QBCore:Client:OnPlayerLoaded', function()
--     isLoggedIn = true
--     PlayerData = QBCore.Functions.GetPlayerData()
-- end)


CreateThread(function()
    exports['qb-target']:AddBoxZone("ForgeryEnter", vector3(-333.5, 6228.77, 31.67), 0.2, 1.0, {
        name="ForgeryEnter",
        heading=315,
        debugPoly=false,
        minZ=24.07,
        maxZ=33.07,
      },{
        options = {
                {
                  type = "client",
                  event = "qb-forgery:client:enter",
                  icon = "fa fa-circle",
                  label = "Enter",
                },
             },
        distance = 2.5
        })

        exports['qb-target']:AddBoxZone("ForgeryLeave", vector3(1174.0, -3196.63, -39.01), 0.2, 1.0, {
            name="ForgeryLeave",
            heading=89,
            debugPoly=false,
        },{
            options = {
                    {
                    type = "client",
                    event = "qb-forgery:client:leave",
                    icon = "fa fa-circle",
                    label = "Leave",
                    },
             },
        distance = 2.5
        })

        exports['qb-target']:AddBoxZone("ForgeIDMenu", vector3(1169.52, -3196.85, -39.01), 0.4, 0.5, {
            name="ForgeIDMenu",
            heading=290,
            debugPoly=false,
        },{
            options = {
                    {
                    type = "client",
                    event = "qb-forgery:client:ForgeIDMenu",
                    icon = "fa fa-circle",
                    label = "Forge ID Menu",
                    },
             },
        distance = 2.5
        })
end)

RegisterNetEvent('qb-forgery:client:ForgeIDMenu', function() 
    exports['qb-menu']:openMenu({
        {
            header = "Falsk ID",
            isMenuHeader = true
        },
        {
            header = "Falsk ID",
            txt = ' 50000DKK for at lave et falsk ID',
            params = {
                event = "qb-forgery:client:ForgeIDCard",
            }
        },
        {
            header = "Falsk kørekort",
            txt = ' 50000DKK for at lave et falsk ID',
            params = {
                event = "qb-forgery:client:ForgeDrivers",
            }
        },
        {
            header = "Falsk våben tilladelse",
            txt = ' 50000DKK for at lave et falsk ID',
            params = {
                event = "qb-forgery:client:ForgeWeapon",
            }
        },
        {
            header = "Falsk advokat tilladelse",
            txt = ' 50000DKK for at lave et falsk ID',
            params = {
                event = "qb-forgery:client:ForgeLawyerpass",
            }
        },
    })

end)

RegisterNetEvent('qb-forgery:client:enter', function(source)
    local Ped = PlayerPedId()
    local PlayerCoords = GetEntityCoords(Ped)
    if not IsPedInAnyVehicle(Ped, false) then
        DoScreenFadeOut(1000)
        Wait(1500)
        SetEntityCoords(Ped, 1173.54, -3196.63, -39.01, 100.64)
        DoScreenFadeIn(1000)
    else
        QBCore.Functions.Notify("Du skal lige gå ud af dit køretøj først.")
    end
end)

RegisterNetEvent('qb-forgery:client:leave', function(source)
    local Ped = PlayerPedId()
    local PlayerCoords = GetEntityCoords(Ped)
    if not IsPedInAnyVehicle(Ped, false) then
        DoScreenFadeOut(1000)
        Wait(1500)
        SetEntityCoords(Ped, -333.5, 6228.77, 31.67, 315)
        DoScreenFadeIn(1000)

    else
        QBCore.Functions.Notify("Du skal lige gå ud af dit køretøj først.")
    end
end)

RegisterNetEvent('qb-forgery:client:ForgeIDCard', function(source)
    local dialog = exports['qb-input']:ShowInput({
        header = "Få et falsk ID",
        info = "",
        submitText = "Forge ID",
        inputs = {
            {
                text = "Person nummer",
                name = "citizenid",
                type = "text",
                isRequired = true
            },
            {
                text = "Fornavn",
                name = "firstname",
                type = "text",
                isRequired = true
            },
            {
                text = "Efternavn",
                name = "lastname",
                type = "text",
                isRequired = true
            },
            {
                text = "Fødselsdags dato (YYYY-MM-DD)",
                name = "birthday",
                type = "text",
                isRequired = true
            },
            {
                text = "Nationalitet",
                name = "nationality",
                type = "text",
                isRequired = true
            }
        },
    })

    if dialog ~= nil then
        for k,v in pairs(dialog) do
            local citizenid = (dialog['citizenid'])
            local firstname = (dialog['firstname'])
            local lastname = (dialog['lastname'])
            local birthday = (dialog['birthday'])
            local nationality = (dialog['nationality']) 

            QBCore.Functions.Progressbar('forge_docs', 'Fofalsker ID...', 5000, false, true, { -- Name | Label | Time | useWhileDead | canCancel
                disableMovement = true,
                disableCarMovement = true,
                disableMouse = false,
                disableCombat = true,
            }, {
                animDict = 'anim@gangops@facility@servers@',
                anim = 'hotwire',
                flags = 16,
            }, {}, {}, function() -- Play When Done
                TriggerServerEvent("qb-forgery:server:ForgeIDCard",citizenid, firstname, lastname, birthday, nationality)
            end, function() -- Play When Cancel
                --Stuff goes here
            end)
        end
    end
end, false)

RegisterNetEvent('qb-forgery:client:ForgeDrivers', function(source)
    local dialog = exports['qb-input']:ShowInput({
        header = "Falsk kørekort",
        info = "",
        submitText = "Forge License",
        inputs = {
            {
                text = "Fornavn",
                name = "firstname",
                type = "text",
                isRequired = true
            },
            {
                text = "Efternavn",
                name = "lastname",
                type = "text",
                isRequired = true
            },
            {
                text = "Fødselsdags dato (YYYY-MM-DD)",
                name = "birthday",
                type = "text",
                isRequired = true
            },
            {
                text = "Nationalitet",
                name = "nationality",
                type = "text",
                isRequired = true
            }
        },
    })

    if dialog ~= nil then
        for k,v in pairs(dialog) do
            local citizenid = tostring(QBCore.Shared.RandomStr(3) .. QBCore.Shared.RandomInt(5)):upper()
            local firstname = (dialog['firstname'])
            local lastname = (dialog['lastname'])
            local birthday = (dialog['birthday'])
            
        QBCore.Functions.Progressbar('forge_docs', 'Forfalsker ID...', 5000, false, true, { -- Name | Label | Time | useWhileDead | canCancel
            disableMovement = true,
            disableCarMovement = true,
            disableMouse = false,
            disableCombat = true,
        }, {
            animDict = 'anim@gangops@facility@servers@',
            anim = 'hotwire',
            flags = 16,
        }, {}, {}, function() -- Play When Done
            TriggerServerEvent("qb-forgery:server:ForgeDrivers", firstname, lastname, birthday)
        end, function() -- Play When Cancel
            --Stuff goes here
        end)
        end
    end
end, false)

RegisterNetEvent('qb-forgery:client:ForgeWeapon', function(source)
    local dialog = exports['qb-input']:ShowInput({
        header = "Falsk våben tilladelse",
        submitText = "Forge License",
        info = "",
        inputs = {
            {
                text = "Fornavn",
                name = "firstname",
                type = "text",
                isRequired = true
            },
            {
                text = "Efternavn",
                name = "lastname",
                type = "text",
                isRequired = true
            },
            {
                text = "Fødselsdags dato (YYYY-MM-DD)",
                name = "birthday",
                type = "text",
                isRequired = true
            },
        },
    })

    if dialog ~= nil then
        for k,v in pairs(dialog) do
            local citizenid = tostring(QBCore.Shared.RandomStr(3) .. QBCore.Shared.RandomInt(5)):upper()
            local firstname = (dialog['firstname'])
            local lastname = (dialog['lastname'])
            local birthday = (dialog['birthday'])
            

        QBCore.Functions.Progressbar('forge_docs', 'Forfalsker ID...', 5000, false, true, { -- Name | Label | Time | useWhileDead | canCancel
            disableMovement = true,
            disableCarMovement = true,
            disableMouse = false,
            disableCombat = true,
        }, {
            animDict = 'anim@gangops@facility@servers@',
            anim = 'hotwire',
            flags = 16,
        }, {}, {}, function() -- Play When Done
            TriggerServerEvent("qb-forgery:server:ForgeWeapon", firstname, lastname, birthday)
        end, function() -- Play When Cancel
            --Stuff goes here
        end)
        end
    end
end, false)

RegisterNetEvent('qb-forgery:client:ForgeLawyerpass', function(source)
    local dialog = exports['qb-input']:ShowInput({
        header = "Falsk advokat tilladelse",
        submitText = "Forge License",
        info = "",
        inputs = {
            {
                text = "Person nummer",
                name = "citizenid",
                type = "text",
                isRequired = true
            },
            {
                text = "Fornavn",
                name = "firstname",
                type = "text",
                isRequired = true
            },
            {
                text = "Efternavn",
                name = "lastname",
                type = "text",
                isRequired = true
            },
        },
    })

    if dialog ~= nil then
        for k,v in pairs(dialog) do
            local passid = tostring(QBCore.Shared.RandomInt(8)):upper()
            local firstname = (dialog['firstname'])
            local lastname = (dialog['lastname'])
            local citizenid = (dialog['citizenid'])
        
        QBCore.Functions.Progressbar('forge_docs', 'Forfalsker ID...', 5000, false, true, { -- Name | Label | Time | useWhileDead | canCancel
            disableMovement = true,
            disableCarMovement = true,
            disableMouse = false,
            disableCombat = true,
        }, {
            animDict = 'anim@gangops@facility@servers@',
            anim = 'hotwire',
            flags = 16,
        }, {}, {}, function() -- Play When Done
            TriggerServerEvent("qb-forgery:server:ForgeLawyerpass", passid, firstname, lastname, citizenid)
        end, function() -- Play When Cancel
            --Stuff goes here
        end)
        end
    end
end, false)