some editing
This commit is contained in:
@@ -8,7 +8,11 @@ class DashboardController {
|
||||
const userId = req.user!.id;
|
||||
|
||||
const [contactsCount, activeTasksCount, unreadNotificationsCount] = await Promise.all([
|
||||
prisma.contact.count(),
|
||||
prisma.contact.count({
|
||||
where: {
|
||||
archivedAt: null,
|
||||
},
|
||||
}),
|
||||
prisma.task.count({
|
||||
where: {
|
||||
status: { notIn: ['COMPLETED', 'CANCELLED'] },
|
||||
|
||||
0
frontend/public/logo.png
Normal file
0
frontend/public/logo.png
Normal file
@@ -10,9 +10,11 @@ import LoadingSpinner from '@/components/LoadingSpinner';
|
||||
const MODULES = [
|
||||
{ id: 'contacts', name: 'إدارة جهات الاتصال', nameEn: 'Contact Management' },
|
||||
{ id: 'crm', name: 'إدارة علاقات العملاء', nameEn: 'CRM' },
|
||||
{ id: 'tenders', name: 'إدارة المناقصات', nameEn: 'Tender Management' },
|
||||
{ id: 'inventory', name: 'المخزون والأصول', nameEn: 'Inventory & Assets' },
|
||||
{ id: 'projects', name: 'المهام والمشاريع', nameEn: 'Tasks & Projects' },
|
||||
{ id: 'hr', name: 'الموارد البشرية', nameEn: 'HR Management' },
|
||||
{ id: 'portal', name: 'البوابة الذاتية', nameEn: 'My Portal' },
|
||||
{ id: 'marketing', name: 'التسويق', nameEn: 'Marketing' },
|
||||
{ id: 'admin', name: 'لوحة الإدارة', nameEn: 'Admin' },
|
||||
];
|
||||
|
||||
@@ -11,9 +11,11 @@ import LoadingSpinner from '@/components/LoadingSpinner';
|
||||
const MODULES = [
|
||||
{ id: 'contacts', name: 'إدارة جهات الاتصال', nameEn: 'Contact Management' },
|
||||
{ id: 'crm', name: 'إدارة علاقات العملاء', nameEn: 'CRM' },
|
||||
{ id: 'tenders', name: 'إدارة المناقصات', nameEn: 'Tender Management' },
|
||||
{ id: 'inventory', name: 'المخزون والأصول', nameEn: 'Inventory & Assets' },
|
||||
{ id: 'projects', name: 'المهام والمشاريع', nameEn: 'Tasks & Projects' },
|
||||
{ id: 'hr', name: 'الموارد البشرية', nameEn: 'HR Management' },
|
||||
{ id: 'portal', name: 'البوابة الذاتية', nameEn: 'My Portal' },
|
||||
{ id: 'marketing', name: 'التسويق', nameEn: 'Marketing' },
|
||||
{ id: 'admin', name: 'لوحة الإدارة', nameEn: 'Admin' },
|
||||
];
|
||||
|
||||
@@ -725,7 +725,7 @@ function CRMContent() {
|
||||
<DollarSign className="h-8 w-8 text-blue-600" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-white rounded-xl shadow-sm p-6 border border-gray-200">
|
||||
<div className="flex items-center justify-between">
|
||||
|
||||
@@ -65,7 +65,7 @@ function DashboardContent() {
|
||||
color: 'bg-indigo-500',
|
||||
href: '/tenders',
|
||||
description: 'تسجيل ومتابعة المناقصات وتحويلها إلى فرص',
|
||||
permission: 'crm'
|
||||
permission: 'tenders'
|
||||
},
|
||||
{
|
||||
id: 'inventory',
|
||||
@@ -105,7 +105,7 @@ function DashboardContent() {
|
||||
color: 'bg-cyan-500',
|
||||
href: '/portal',
|
||||
description: 'قروضي، إجازاتي، طلبات الشراء والرواتب',
|
||||
permission: 'hr'
|
||||
permission: 'portal'
|
||||
},
|
||||
{
|
||||
id: 'marketing',
|
||||
@@ -142,7 +142,11 @@ function DashboardContent() {
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="flex items-center gap-3">
|
||||
<div className="bg-primary-600 p-2 rounded-lg">
|
||||
<Building2 className="h-8 w-8 text-white" />
|
||||
<img
|
||||
src="/logo.png"
|
||||
alt="Company Logo"
|
||||
className="h-8 w-8 object-contain"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold text-gray-900">ATMATA</h1>
|
||||
|
||||
@@ -102,7 +102,7 @@ function TendersContent() {
|
||||
if (!formData.title?.trim()) errors.title = t('common.required')
|
||||
if (!formData.announcementDate) errors.announcementDate = t('common.required')
|
||||
if (!formData.closingDate) errors.closingDate = t('common.required')
|
||||
if (Number(formData.termsValue) < 0) errors.termsValue = t('common.required')
|
||||
//if (Number(formData.termsValue) < 0) errors.termsValue = t('common.required')
|
||||
if (Number(formData.bondValue) < 0) errors.bondValue = t('common.required')
|
||||
setFormErrors(errors)
|
||||
if (Object.keys(errors).length > 0) return
|
||||
@@ -317,7 +317,6 @@ function TendersContent() {
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">{t('tenders.termsValue')} *</label>
|
||||
<input
|
||||
type="number"
|
||||
min={0}
|
||||
value={formData.termsValue || ''}
|
||||
onChange={(e) => setFormData({ ...formData, termsValue: Number(e.target.value) || 0 })}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
|
||||
Reference in New Issue
Block a user