'use client'
import { useState, useEffect } from 'react'
import ProtectedRoute from '@/components/ProtectedRoute'
import { useAuth } from '@/contexts/AuthContext'
import { useLanguage } from '@/contexts/LanguageContext'
import LanguageSwitcher from '@/components/LanguageSwitcher'
import Link from 'next/link'
import {
Users,
User,
TrendingUp,
Package,
CheckSquare,
UserCheck,
Megaphone,
LogOut,
Building2,
Settings,
Bell,
Shield
} from 'lucide-react'
import { dashboardAPI } from '@/lib/api'
function DashboardContent() {
const { user, logout, hasPermission } = useAuth()
const { t, language, dir } = useLanguage()
const [stats, setStats] = useState({ contacts: 0, activeTasks: 0, notifications: 0 })
useEffect(() => {
dashboardAPI.getStats()
.then((res) => {
if (res.data?.data) setStats(res.data.data)
})
.catch(() => {})
}, [])
const allModules = [
{
id: 'contacts',
name: 'إدارة جهات الاتصال',
nameEn: 'Contact Management',
icon: Users,
color: 'bg-blue-500',
href: '/contacts',
description: 'إدارة العملاء والموردين وجهات الاتصال',
permission: 'contacts'
},
{
id: 'crm',
name: 'إدارة علاقات العملاء',
nameEn: 'CRM',
icon: TrendingUp,
color: 'bg-green-500',
href: '/crm',
description: 'الفرص التجارية والعروض والصفقات',
permission: 'crm'
},
{
id: 'inventory',
name: 'المخزون والأصول',
nameEn: 'Inventory & Assets',
icon: Package,
color: 'bg-purple-500',
href: '/inventory',
description: 'المنتجات والمخازن والأصول الثابتة',
permission: 'inventory'
},
{
id: 'projects',
name: 'المهام والمشاريع',
nameEn: 'Tasks & Projects',
icon: CheckSquare,
color: 'bg-orange-500',
href: '/projects',
description: 'إدارة المشاريع والمهام والموارد',
permission: 'projects'
},
{
id: 'hr',
name: 'الموارد البشرية',
nameEn: 'Human Resources',
icon: UserCheck,
color: 'bg-teal-500',
href: '/hr',
description: 'الموظفين والإجازات والرواتب',
permission: 'hr'
},
{
id: 'portal',
name: 'البوابة الذاتية',
nameEn: 'My Portal',
icon: User,
color: 'bg-cyan-500',
href: '/portal',
description: 'قروضي، إجازاتي، طلبات الشراء والرواتب',
permission: 'hr'
},
{
id: 'marketing',
name: 'التسويق',
nameEn: 'Marketing',
icon: Megaphone,
color: 'bg-pink-500',
href: '/marketing',
description: 'الحملات التسويقية والعملاء المحتملين',
permission: 'marketing'
},
{
id: 'admin',
name: 'لوحة الإدارة',
nameEn: 'Admin Panel',
icon: Shield,
color: 'bg-red-500',
href: '/admin',
description: 'إدارة المستخدمين والأدوار وسجل العمليات',
permission: 'admin'
}
]
// Filter modules based on user permissions
const availableModules = allModules.filter(module =>
hasPermission(module.permission, 'view')
)
return (
{/* Header */}
Z.CRM
نظام إدارة علاقات العملاء
{/* Language Switcher */}
{/* User Info */}
{user?.username}
{user?.role?.name || 'مستخدم'}
{/* Admin Panel Link - Only for admins */}
{hasPermission('admin', 'view') && (
لوحة الإدارة
)}
{/* Notifications */}
{/* Settings */}
{/* Logout */}
{/* Main Content */}
{/* Welcome Section */}
مرحباً، {user?.username}! 👋
{user?.role?.name} - {availableModules.length} وحدة متاحة
{/* Stats Cards */}
الوحدات المتاحة
{availableModules.length}
المهام النشطة
{stats.activeTasks}
الإشعارات
{stats.notifications}
جهات الاتصال
{stats.contacts}
{/* Available Modules */}
الوحدات المتاحة
{availableModules.length > 0 ? (
{availableModules.map((module) => {
const Icon = module.icon
return (
{module.name}
{module.nameEn}
{module.description}
)
})}
) : (
لا توجد وحدات متاحة لحسابك. الرجاء التواصل مع المسؤول لمنح الصلاحيات المناسبة.
)}
{/* Recent Activity */}
النشاط الأخير
لا يوجد نشاط حديث
)
}
export default function DashboardPage() {
return (
)
}