import React, { useState } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { HiClock, HiCheckCircle, HiPlus, HiXMark, HiFunnel } from 'react-icons/hi2' import dayjs from 'dayjs' import 'dayjs/locale/tr' import { mockOvertimeRequests } from '../../../mocks/mockIntranetData' import { HrOvertime } from '@/types/hr' dayjs.locale('tr') const OvertimeManagement: React.FC = () => { const [requests, setRequests] = useState(mockOvertimeRequests) const [showCreateModal, setShowCreateModal] = useState(false) const [filterStatus, setFilterStatus] = useState<'all' | 'pending' | 'approved' | 'rejected'>('all') // Mesai istatistikleri (mock) const overtimeStats = { thisMonth: { total: 24, approved: 20, pending: 4, rejected: 0 }, thisYear: { total: 156, approved: 142, pending: 8, rejected: 6 }, averagePerMonth: 13 } const filteredRequests = requests.filter(req => { if (filterStatus === 'all') return true return req.status === filterStatus }) const getStatusColor = (status: string) => { const colors = { pending: 'bg-yellow-100 dark:bg-yellow-900/30 text-yellow-700 dark:text-yellow-300', approved: 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-300', rejected: 'bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-300' } return colors[status as keyof typeof colors] } return (
{/* Header */}

Mesai Yönetimi

Fazla mesai taleplerinizi oluşturun ve takip edin

{/* İstatistikler */}

Bu Ay Toplam

{overtimeStats.thisMonth.total}

saat fazla mesai

Onaylanan

{overtimeStats.thisMonth.approved}

bu ay onaylandı

Bekleyen

{overtimeStats.thisMonth.pending}

onay bekliyor

Yıllık Toplam

📊

{overtimeStats.thisYear.total}

saat bu yıl

{/* Filtreler */}
{/* Mesai Talepleri Listesi */}

Mesai Talepleri

{filteredRequests.length > 0 ? ( filteredRequests.map((request) => (

{dayjs(request.date).format('DD MMMM YYYY dddd')}

{request.status === 'pending' && '⏳ Beklemede'} {request.status === 'approved' && '✅ Onaylandı'} {request.status === 'rejected' && '❌ Reddedildi'}

Başlangıç

{request.startTime}

Bitiş

{request.endTime}

Süre

{request.duration} saat

Talep Tarihi

{dayjs(request.createdAt).format('DD MMM')}

{request.project && (
📁 {request.project}
)}

Açıklama: {request.reason}

{request.approver && (
{request.approver.fullName} tarafından{' '} {dayjs(request.approvalDate).format('DD MMMM YYYY')} tarihinde{' '} {request.status === 'approved' ? 'onaylandı' : 'reddedildi'}
)} {request.notes && (

Not: {request.notes}

)}
)) ) : (

{filterStatus === 'all' ? 'Henüz mesai talebi bulunmuyor' : `${filterStatus === 'pending' ? 'Bekleyen' : filterStatus === 'approved' ? 'Onaylanan' : 'Reddedilen'} mesai talebi bulunmuyor`}

)}
{/* Yeni Mesai Talebi Modal */} {showCreateModal && ( <> setShowCreateModal(false)} />

Yeni Mesai Talebi