@extends('garage.layouts.app') @section('title', 'Employee Profile') @section('content') @php $attendanceRows = collect($attendanceRows ?? []); $ledgerRows = collect($ledgerRows ?? []); $employeeAllowances = collect($employeeAllowances ?? []); $employeeImageUrl = $employeeImageUrl ?? null; $employeeDocuments = collect($employeeDocuments ?? []); $incrementHistory = collect($incrementHistory ?? []); $noticePeriods = collect($noticePeriods ?? []); $probationRows = collect($probationRows ?? []); $ratingRows = collect($ratingRows ?? []); $fineRules = collect($fineRules ?? []); $adjustmentsAdvance = collect($adjustmentsByType['advance'] ?? []); $adjustmentsDeduction = collect($adjustmentsByType['deduction'] ?? []); $adjustmentsBonus = collect($adjustmentsByType['bonus'] ?? []); $adjustmentsFine = collect($adjustmentsByType['fine'] ?? []); $leaveRows = $attendanceRows->where('status', 'leave'); $ledgerHasLink = !empty($ledgerUrl); $closing = (float)($ledgerTotals['balance'] ?? 0); @endphp @include('shared.folder-tabs-styles')
{{ strtoupper(mb_substr($employee->name ?? '?', 0, 1)) }}
{{ $employee->name }}
{{ $employee->code ?: 'No code' }} · {{ $employee->department_name ?: 'No department' }} · {{ $employee->designation_name ?: 'No designation' }}
Phone
{{ $employee->phone ?: '—' }}
Email
{{ $employee->email ?: '—' }}
Salary
PKR {{ number_format((float)($employee->salary_amount ?? 0), 2) }}
Status
{{ !empty($employee->is_active) ? 'Active' : 'Inactive' }}
Employee Profile
@csrf
@if(!empty($employeeImageUrl)) Employee image @else
No Image
@endif
Phone: {{ $employee->phone ?: '—' }}
Email: {{ $employee->email ?: '—' }}
Category: {{ $employee->category_name ?: '—' }}
Join Date: {{ $employee->join_date ?: '—' }}
Salary Type: {{ ucfirst($employee->salary_type ?? 'monthly') }}
Responsibilities: {{ collect($responsibilities ?? [])->count() }}
Department: {{ $employee->department_name ?: '—' }}
Designation: {{ $employee->designation_name ?: '—' }}
CNIC: {{ $employee->cnic ?: '—' }}
Address: {{ $employee->address ?: '—' }}
Notes: {{ $employee->notes ?: '—' }}

Document Attachments
@if(collect($employeeDocuments ?? [])->isEmpty())
No documents attached.
@else
@foreach(($employeeDocuments ?? []) as $doc) {{ $doc['name'] }} @endforeach
@endif
Attendance Summary (Last 30 days)
Present {{ (int)($attendanceSummary->present_days ?? 0) }}, Absent {{ (int)($attendanceSummary->absent_days ?? 0) }}, Leave {{ (int)($attendanceSummary->leave_days ?? 0) }}
Recent Attendance
@if($attendanceRows->isEmpty()) @else @foreach($attendanceRows as $a) @endforeach @endif
DateStatusInOutMinutes
No attendance data.
{{ $a->work_date }} {{ ucfirst($a->status) }} {{ !empty($a->first_in) ? \Carbon\Carbon::parse($a->first_in)->format('H:i') : '—' }} {{ !empty($a->last_out) ? \Carbon\Carbon::parse($a->last_out)->format('H:i') : '—' }} {{ (int)($a->work_minutes ?? 0) }}
Ledger Details @if($ledgerHasLink) Open Full Statement @endif
@if($ledgerHasLink)
Dr: {{ number_format((float)($ledgerTotals['dr'] ?? 0), 2) }} Cr: {{ number_format((float)($ledgerTotals['cr'] ?? 0), 2) }} Closing: {{ number_format(abs($closing), 2) }} {{ $closing >= 0 ? 'Dr' : 'Cr' }}
@if($ledgerRows->isEmpty()) @else @foreach($ledgerRows as $r) @php $dr = ($r->transaction_type ?? '') === 'debit' ? (float)($r->amount ?? 0) : 0; $cr = ($r->transaction_type ?? '') === 'credit' ? (float)($r->amount ?? 0) : 0; @endphp @endforeach @endif
DateVoucherTypeDrCrNarration
No ledger transactions found.
{{ $r->voucher_date ?: '—' }} @if(!empty($r->voucher_id)) {{ $r->voucher_no ?: '—' }} @else {{ $r->voucher_no ?: '—' }} @endif {{ $r->voucher_type ?: '—' }} {{ $dr > 0 ? number_format($dr, 2) : '—' }} {{ $cr > 0 ? number_format($cr, 2) : '—' }}
{{ $r->narration ?: '—' }}
@if(!empty($r->against_text))
Against: {{ $r->against_text }}
@endif
@else No linked ledger for this employee. @endif
Advance History
@csrf
@if($adjustmentsAdvance->isEmpty()) @else @foreach($adjustmentsAdvance as $r) @endforeach @endif
DateReasonAmount
No advance records.
{{ $r->adj_date ?: $r->month }}{{ $r->reason ?: '—' }}{{ number_format((float)$r->amount, 2) }}
Deduction History
@csrf
@if($adjustmentsDeduction->isEmpty()) @else @foreach($adjustmentsDeduction as $r) @endforeach @endif
DateReasonAmount
No deduction records.
{{ $r->adj_date ?: $r->month }}{{ $r->reason ?: '—' }}{{ number_format((float)$r->amount, 2) }}
Allowance Records
@csrf
@if($employeeAllowances->isEmpty()) @else @foreach($employeeAllowances as $al) @endforeach @endif
NameTypeMonthAmount
No allowances.
{{ $al->name }}{{ ucfirst($al->allowance_type) }}{{ $al->apply_month ?: '—' }}{{ number_format((float)$al->amount, 2) }}
Bonus History
@csrf
@if($adjustmentsBonus->isEmpty()) @else @foreach($adjustmentsBonus as $r) @endforeach @endif
DateReasonAmount
No bonus records.
{{ $r->adj_date ?: $r->month }}{{ $r->reason ?: '—' }}{{ number_format((float)$r->amount, 2) }}
Fine History
@csrf
@if($adjustmentsFine->isEmpty()) @else @foreach($adjustmentsFine as $r) @endforeach @endif
DateReasonAmount
No fine records.
{{ $r->adj_date ?: $r->month }}{{ $r->reason ?: '—' }}{{ number_format((float)$r->amount, 2) }}
Fine Rules Setup
@csrf
@if($fineRules->isEmpty()) @else @foreach($fineRules as $fr) @endforeach @endif
CategoryThresholdFineNotes
No fine rules configured.
{{ str_replace('_', ' ', ucfirst($fr->category)) }} After {{ (int)$fr->threshold_value }} {{ $fr->threshold_unit }} {{ number_format((float)$fr->fine_amount, 2) }} {{ $fr->notes ?: '—' }}
Notice Period History
@csrf
@if($noticePeriods->isEmpty()) @else @foreach($noticePeriods as $n) @endforeach @endif
StartEndDaysStatusReason
No notice period records.
{{ $n->start_date }}{{ $n->end_date ?: '—' }}{{ (int)$n->notice_days }}{{ ucfirst($n->status) }}{{ $n->reason ?: '—' }}
Probation History
@csrf
@if($probationRows->isEmpty()) @else @foreach($probationRows as $pr) @endforeach @endif
StartEndStatusRemarks
No probation records.
{{ $pr->start_date }}{{ $pr->end_date ?: '—' }}{{ ucfirst($pr->status) }}{{ $pr->remarks ?: '—' }}
Employee Ratings
@csrf
@if($ratingRows->isEmpty()) @else @foreach($ratingRows as $rt) @endforeach @endif
DateRatingScoreRemarks
No rating records.
{{ $rt->rated_on }}{{ $rt->rating }}{{ $rt->score !== null ? number_format((float)$rt->score, 2) : '—' }}{{ $rt->remarks ?: '—' }}
Salary Increment History
@if($incrementHistory->isEmpty()) @else @foreach($incrementHistory as $inc) @php $oldSalary = (float)($inc->old_salary_amount ?? 0); $newSalary = (float)($inc->new_salary_amount ?? 0); $diff = $newSalary - $oldSalary; @endphp @endforeach @endif
Effective DateOld SalaryNew SalaryDifferenceNotesLogged At
No increment history found.
{{ $inc->effective_date ?: '—' }} {{ number_format($oldSalary, 2) }} {{ number_format($newSalary, 2) }} {{ $diff >= 0 ? '+' : '' }}{{ number_format($diff, 2) }} {{ $inc->notes ?: '—' }} {{ $inc->created_at ?: '—' }}
Leave Records
@if($leaveRows->isEmpty()) @else @foreach($leaveRows as $lv) @endforeach @endif
DateStatusNotes
No leave records.
{{ $lv->work_date }}Leave{{ $lv->notes ?: '—' }}
@endsection @push('scripts') @endpush