{{ __('employee_details') }}

@if (session()->has('message'))
{{ session('message') }}
@endif {{-- Tabs Navigation --}}
{{-- Basic Info Tab --}}
{{ __('full_name') }} {{ $employee->name }}
{{ __('email') }} {{ $employee->email }}
{{ __('mobile') }} {{ $employee->mobile }}
{{ __('department') }} {{ $employee->department->name ?? '-' }}
{{ __('position') }} {{ $employee->position->name ?? '-' }}
{{ __('status') }} {{ ucfirst($employee->status) }}
{{-- Documents Tab --}}
@if($employee->documents->isEmpty())

{{ __('no_documents_found') }}

@else
@foreach($employee->documents as $doc) @endforeach
{{ __('label') }} {{ __('department') }} {{ __('file') }} {{ __('uploaded_at') }}
{{ $doc->label }} {{ $doc->department->name ?? '-' }} {{ __('view') }} {{ $doc->created_at->format('Y-m-d') }}
@endif
{{-- Leaves Tab --}}
@if($employee->leaves->isEmpty())

{{ __('no_leaves_found') }}

@else @foreach($employee->leaves as $leave) @endforeach
{{ __('duration') }} {{ __('start_date') }} {{ __('end_date') }} {{ __('return_date') }} {{ __('within_balance') }}
{{ $leave->duration }} {{ $leave->start_date }} {{ $leave->end_date }} {{ $leave->resume_date }} {{ $leave->within_balance ? __('yes') : __('no') }}
@endif
{{-- Violations Tab --}}
@if($employee->violations->isEmpty())

{{ __('no_violations_found') }}

@else @foreach($employee->violations as $violation) @endforeach
{{ __('reason') }} {{ __('date') }} {{ __('penalty') }}
{{ $violation->reason }} {{ $violation->violation_date }} {{ $violation->penalty }}
@endif
{{-- Custodies Tab --}}
@if($employee->custodies->isEmpty())

{{ __('no_custodies_found') }}

@else @foreach($employee->custodies as $custody) @endforeach
{{ __('name') }} {{ __('status') }} {{ __('delivery') }} {{ __('return') }}
{{ $custody->name }} {{ ucfirst($custody->status) }} @if($custody->delivery_attachment) {{ __('view') }} @else - @endif @if($custody->return_attachment) {{ __('view') }} @else - @endif
@endif
{{-- Leave Summary Tab --}}
@php use App\Models\LeaveType; $hireDate = \Carbon\Carbon::parse($employee->start_date); $now = now(); $monthsWorked = $hireDate->diffInMonths($now); $yearsWorked = $hireDate->diffInYears($now); $monthsWorked = $monthsWorked < 1 ? 0 : $monthsWorked; $yearsWorked = $yearsWorked < 1 ? 0 : $yearsWorked; // نحضّر مصفوفة أرصدة لكل نوع إجازة $leaveBalances = []; // اجلب أنواع الإجازات $leaveTypes = LeaveType::query() // فلترة حسب الجنس (إن لم تكن Both) ->where(function ($q) use ($employee) { $q->where('gender_applicable', 'Both') ->orWhere('gender_applicable', $employee->gender); }) ->orderBy('name') ->get(); foreach ($leaveTypes as $type) { // المستعمل من هذا النوع $usedDays = $employee->leaves ->where('leave_type_id', $type->id) ->sum('duration'); // حدود النوع (مع افتراضات معقولة) $annualCap = is_null($type->duration_max_days) ? 21 : (int)$type->duration_max_days; $onceCapDefault = is_null($type->duration_max_days) ? 0 : (int)$type->duration_max_days; $totalEntitlement = 0; $remaining = 0; switch ($type->frequency) { case 'ANNUAL': // استحقاق شهري تراكمي $monthlyEntitlement = $annualCap / 12; $totalEntitlement = round($monthsWorked * $monthlyEntitlement, 2); $remaining = max(0, round($totalEntitlement - $usedDays, 2)); break; case 'AGREEMENT': // يمنح كامل الحد (يمكنك ربطه باتفاق الموظف إن وجد) $totalEntitlement = $onceCapDefault; $remaining = max(0, round($totalEntitlement - $usedDays, 2)); break; case 'ONCE_LIFETIME': // مرة واحدة طوال الخدمة $totalEntitlement = $onceCapDefault; $remaining = max(0, round($totalEntitlement - $usedDays, 2)); break; case 'ONCE_EVENT': // لكل حدث حد ثابت. إن لم تكن تتبع الأحداث منفصلة، // سنخصم المستخدم الحالي من المجموع. $totalEntitlement = $onceCapDefault; $remaining = max(0, round($totalEntitlement - $usedDays, 2)); break; case 'MULTIPLE_EVENT': // لكل حدث حد ثابت—لا نقلل رصيدًا تراكميًا عامًّا // (عدّل هذا إن أردت تتبع عدد الأحداث سنويًا/شهريًا). $totalEntitlement = $onceCapDefault; // لا معنى لـ usedDays كخصم عام لأن الحد يتجدد لكل حدث $remaining = $totalEntitlement; // إظهار الحد المتاح لكل حدث break; default: // احتياط $totalEntitlement = $onceCapDefault; $remaining = max(0, round($totalEntitlement - $usedDays, 2)); } $leaveBalances[] = [ 'leave_type_id' => $type->id, 'name' => $type->name, 'frequency' => $type->frequency, 'pay_rule' => $type->pay_rule, 'gender_applicable' => $type->gender_applicable, 'total_entitlement' => $totalEntitlement, 'used_days' => (float) $usedDays, 'remaining' => $remaining, 'min_days' => $type->duration_min_days, 'max_days' => $type->duration_max_days, ]; } @endphp

{{ __('hire_date') }}: {{ $employee->start_date }}

{{ __('months_worked') }}: {{ $monthsWorked }}

{{ __('years_worked') }}: {{ $yearsWorked }}

{{ __('total_entitlement') }}: {{ $totalEntitlement }} {{ __('days') }}

{{ __('used_days') }}: {{ $usedDays }} {{ __('days') }}

{{ __('remaining') }}: {{ $remaining }} {{ __('days') }}

@foreach($leaveBalances as $row) @endforeach
نوع الإجازة التكرار المستحق المستخدم المتبقي
{{ $row['name'] }} {{ $row['frequency'] }} {{ $row['total_entitlement'] }} {{ $row['used_days'] }} {{ $row['remaining'] }}