import { mainNavItem } from '@admin/types';
import {
    BellRing,
    BetweenVerticalStart,
    CircleUser,
    ClipboardList,
    ContactRound,
    Mails,
    Megaphone,
    MessageCircleMore,
    NotebookText,
} from 'lucide-react';
import { route as routeHelper } from 'ziggy-js';

// Translation helper is globally injected
declare function __(key: string): string;

interface TmoduleStatus {
    HRM: boolean;
    Productivity: boolean;
    ERP: boolean;
    CRM: boolean;
}

// Helper to safely check if a route exists
const hasRoute = (routeName: string): boolean => {
    try {
        routeHelper(routeName);
        return true;
    } catch {
        return false;
    }
};

// Helper to safely get route URL
const safeRoute = (routeName: string, fallback: string = '#'): string => {
    try {
        return routeHelper(routeName);
    } catch {
        return fallback;
    }
};

export const ToolsMenuItems = (enabled: any): mainNavItem[] => {
    const { apps, modules } = enabled;
    const items: mainNavItem[] = [];

    // PRODUCTIVITY
    if (apps.productivity) {
        const productivityItems: mainNavItem[] = [];

        if (modules.task && hasRoute("task.index")) {
            productivityItems.push({
                title: __("Tasks Management"),
                icon: ClipboardList,
                url: safeRoute("task.index"),
                isActive: false,
            });
        }

        if (modules.reminder && hasRoute("reminder.index")) {
            productivityItems.push({
                title: __("Reminders"),
                icon: BellRing,
                url: safeRoute("reminder.index"),
                isActive: false,
            });
        }

        if (modules.note && hasRoute("note.index")) {
            productivityItems.push({
                title: __("Notes"),
                icon: NotebookText,
                url: safeRoute("note.index"),
                isActive: false,
            });
        }

        if (productivityItems.length) {
            items.push({
                title: __("Productivity"),
                icon: BetweenVerticalStart,
                isActive: false,
                items: productivityItems,
            });
        }
    }

    // COMMUNICATION
    if (apps.communication) {
        const communicationItems: mainNavItem[] = [];

        if (modules.live_chat && hasRoute("activity-log.index")) {
            communicationItems.push({
                title: __("Live Chat"),
                icon: MessageCircleMore,
                url: safeRoute("activity-log.index"),
                isActive: false,
            });
        }

        if (modules.email && hasRoute("activity-log.index")) {
            communicationItems.push({
                title: __("Email"),
                icon: Mails,
                url: safeRoute("activity-log.index"),
                isActive: false,
            });
        }

        if (modules.contacts && hasRoute("activity-log.index")) {
            communicationItems.push({
                title: __("Contacts"),
                icon: CircleUser,
                url: safeRoute("activity-log.index"),
                isActive: false,
            });
        }

        if (modules.news_feed && hasRoute("activity-log.index")) {
            communicationItems.push({
                title: __("News Feed"),
                icon: Megaphone,
                url: safeRoute("activity-log.index"),
                isActive: false,
            });
        }

        if (communicationItems.length) {
            items.push({
                title: __("Communication"),
                icon: ContactRound,
                isActive: false,
                items: communicationItems,
            });
        }
    }

    return items;
};

