import { NavItem } from '@/types';
import { CalendarDays, Gamepad2, Home, ShoppingCart, Ticket, TrendingUp, Video, Wallet, Trophy } from 'lucide-react';

export interface MenuSettings {
    voucher: boolean;
    shop: boolean;
    topspender: boolean;
    ingame: boolean;
    streamer?: boolean;
    event?: boolean;
    topup?: boolean;
    ranking?: boolean;
}

export function getFilteredNavItems(
    ipaymuActive: boolean = true,
    duitkuActive: boolean = false,
    tripayActive: boolean = false,
    pakasirActive: boolean = false,
    menuSettings: MenuSettings = {
        voucher: true,
        shop: true,
        topspender: true,
        ingame: true,
        ranking: true,
    },
): NavItem[] {
    const topupItems: NavItem[] = [];

    if (ipaymuActive) {
        topupItems.push({
            title: 'Ipaymu',
            href: '/dashboard/topup/ipaymu',
        });
    }

    if (duitkuActive) {
        topupItems.push({
            title: 'Duitku',
            href: '/dashboard/topup/duitku',
        });
    }

    if (tripayActive) {
        topupItems.push({
            title: 'Tripay',
            href: '/dashboard/topup/tripay',
        });
    }

    if (pakasirActive) {
        topupItems.push({
            title: 'Pakasir',
            href: '/dashboard/topup/pakasir',
        });
    }

    if (menuSettings.topup !== false) {
        topupItems.push({
            title: 'Top Up History',
            href: '/dashboard/topup/history',
        });
    }

    const navItems: NavItem[] = [];

    navItems.push({
        title: 'Dashboard',
        href: '/dashboard',
        icon: Home,
    });

    if (menuSettings.topup !== false) {
        navItems.push({
            title: 'Top Up',
            href: '#',
            icon: Wallet,
            items: topupItems,
        });
    }

    if (menuSettings.voucher) {
        navItems.push({
            title: 'Vouchers',
            href: '/dashboard/voucher',
            icon: Ticket,
        });
    }

    if (menuSettings.shop) {
        navItems.push({
            title: 'Shop',
            href: '/dashboard/shop',
            icon: ShoppingCart,
        });
    }

    if (menuSettings.topspender) {
        navItems.push({
            title: 'Top Spender',
            href: '/dashboard/topspender',
            icon: TrendingUp,
        });
    }

    if (menuSettings.ingame) {
        navItems.push({
            title: 'Ingame Service',
            href: '/dashboard/service',
            icon: Gamepad2,
        });
    }

    if (menuSettings.event) {
        navItems.push({
            title: 'Event',
            href: '/dashboard/event',
            icon: CalendarDays,
        });
    }

    if (menuSettings.streamer) {
        navItems.push({
            title: 'Streamer',
            href: '/dashboard/regist-streamer',
            icon: Video,
        });
    }

    if (menuSettings.ranking !== false) {
        navItems.push({
            title: 'Ranking',
            href: '#',
            icon: Trophy,
            items: [
                {
                    title: 'Player',
                    href: '/dashboard/ranking/player',
                },
                {
                    title: 'PVP',
                    href: '/dashboard/ranking/pvp',
                },
                {
                    title: 'Faction',
                    href: '/dashboard/ranking/faction',
                },
            ],
        });
    }

    return navItems;
}
