diff --git a/ui/src/views/intranet/modals/SurveyModal.tsx b/ui/src/views/intranet/modals/SurveyModal.tsx
index bf588667..ffc1d692 100644
--- a/ui/src/views/intranet/modals/SurveyModal.tsx
+++ b/ui/src/views/intranet/modals/SurveyModal.tsx
@@ -1,7 +1,7 @@
import React from 'react'
import { motion } from 'framer-motion'
import { FaTimes } from 'react-icons/fa'
-import { Survey } from '../../../mocks/mockIntranet'
+import { Survey } from '@/types/intranet'
interface SurveyModalProps {
survey: Survey
diff --git a/ui/src/views/intranet/widgets/PriorityTasks.tsx b/ui/src/views/intranet/widgets/PriorityTasks.tsx
index c112705f..4b120f21 100644
--- a/ui/src/views/intranet/widgets/PriorityTasks.tsx
+++ b/ui/src/views/intranet/widgets/PriorityTasks.tsx
@@ -1,19 +1,21 @@
import React from 'react'
-import { FaChartBar, FaClock, FaUsers } from 'react-icons/fa'
+import { FaChartBar, FaClock, FaUser } from 'react-icons/fa'
import dayjs from 'dayjs'
-import { mockTasks } from '../../../mocks/mockIntranet'
+import { mockProjectTasks } from '../../../mocks/mockProjectTasks'
+import { PriorityEnum } from '../../../types/common'
+import { TaskStatusEnum } from '../../../types/ps'
const PriorityTasks: React.FC = () => {
- const priorityTasks = mockTasks
- .filter((t) => t.priority === 'high' || t.priority === 'urgent')
+ const priorityTasks = mockProjectTasks
+ .filter((t) => t.priority === PriorityEnum.High || t.priority === PriorityEnum.Urgent)
.slice(0, 3)
- const getPriorityColor = (priority: string) => {
- const colors: Record
= {
- low: 'bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-300',
- medium: 'bg-blue-100 dark:bg-blue-900/30 text-blue-600 dark:text-blue-300',
- high: 'bg-orange-100 dark:bg-orange-900/30 text-orange-600 dark:text-orange-300',
- urgent: 'bg-red-100 dark:bg-red-900/30 text-red-600 dark:text-red-300',
+ const getPriorityColor = (priority: PriorityEnum) => {
+ const colors: Record = {
+ [PriorityEnum.Low]: 'bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-300',
+ [PriorityEnum.Normal]: 'bg-blue-100 dark:bg-blue-900/30 text-blue-600 dark:text-blue-300',
+ [PriorityEnum.High]: 'bg-orange-100 dark:bg-orange-900/30 text-orange-600 dark:text-orange-300',
+ [PriorityEnum.Urgent]: 'bg-red-100 dark:bg-red-900/30 text-red-600 dark:text-red-300',
}
return colors[priority]
}
@@ -33,21 +35,21 @@ const PriorityTasks: React.FC = () => {
- {task.title}
+ {task.name}
- {task.priority === 'urgent' && '🔥 Acil'}
- {task.priority === 'high' && 'Yüksek'}
- {task.priority === 'medium' && 'Orta'}
- {task.priority === 'low' && 'Düşük'}
+ {task.priority === PriorityEnum.Urgent && '🔥 Acil'}
+ {task.priority === PriorityEnum.High && 'Yüksek'}
+ {task.priority === PriorityEnum.Normal && 'Orta'}
+ {task.priority === PriorityEnum.Low && 'Düşük'}
@@ -56,11 +58,11 @@ const PriorityTasks: React.FC = () => {
- {dayjs(task.dueDate).format('DD MMM')}
+ {dayjs(task.endDate).format('DD MMM')}
-
- {task.assignedTo.length} kişi
+
+ {task.assignee?.firstName || 'Atanmadı'}
diff --git a/ui/src/views/intranet/widgets/Visitors.tsx b/ui/src/views/intranet/widgets/Visitors.tsx
new file mode 100644
index 00000000..c51d2188
--- /dev/null
+++ b/ui/src/views/intranet/widgets/Visitors.tsx
@@ -0,0 +1,113 @@
+import React from 'react'
+import { FaUser, FaUserCheck, FaUserClock } from 'react-icons/fa'
+import dayjs from 'dayjs'
+import { mockVisitors } from '../../../mocks/mockIntranet'
+
+const Visitors: React.FC = () => {
+ const todayVisitors = mockVisitors.filter((visitor) =>
+ dayjs(visitor.visitDate).isSame(dayjs(), 'day')
+ )
+
+ const getStatusIcon = (status: string) => {
+ switch (status) {
+ case 'checked-in':
+ return
+ case 'checked-out':
+ return
+ case 'scheduled':
+ return
+ default:
+ return
+ }
+ }
+
+ const getStatusText = (status: string) => {
+ switch (status) {
+ case 'checked-in':
+ return 'Giriş Yaptı'
+ case 'checked-out':
+ return 'Çıkış Yaptı'
+ case 'scheduled':
+ return 'Planlandı'
+ default:
+ return 'Bilinmiyor'
+ }
+ }
+
+ const getStatusColor = (status: string) => {
+ switch (status) {
+ case 'checked-in':
+ return 'bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800'
+ case 'checked-out':
+ return 'bg-gray-50 dark:bg-gray-900/20 border-gray-200 dark:border-gray-700'
+ case 'scheduled':
+ return 'bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800'
+ default:
+ return 'bg-gray-50 dark:bg-gray-900/20 border-gray-200 dark:border-gray-700'
+ }
+ }
+
+ return (
+
+
+
+
+ Bugünkü Ziyaretçiler
+
+
+
+ {todayVisitors.length > 0 ? (
+ todayVisitors.map((visitor) => (
+
+
+

+
+
+
+ {visitor.fullName}
+
+
+ {getStatusIcon(visitor.status)}
+
+
+
+ {visitor.company}
+
+
+ {visitor.purpose}
+
+
+
+ {dayjs(visitor.visitDate).format('HH:mm')}
+
+
+ {getStatusText(visitor.status)}
+
+
+ {visitor.host && (
+
+ Karşılayan: {visitor.host.fullName}
+
+ )}
+
+
+
+ ))
+ ) : (
+
+ Bugün ziyaretçi yok
+
+ )}
+
+
+ )
+}
+
+export default Visitors
\ No newline at end of file