Trainer Portal

Welcome, {{ $trainerName }}

{{ count($members ?? []) }} member{{ count($members ?? []) !== 1 ? 's' : '' }} @if(count($trainerBranches ?? []) > 1)
@elseif($currentBranch ?? null) {{ $currentBranch['name'] }} @endif Trainer
{{-- Assigned members summary --}}
@forelse($members ?? [] as $m) @php $mColor = ['active'=>'text-green-400','expired'=>'text-red-400','frozen'=>'text-blue-400','pending'=>'text-yellow-400'][$m['status'] ?? ''] ?? 'text-gray-400'; @endphp
{{ strtoupper(substr($m['name'] ?? '?', 0, 1)) }}

{{ $m['name'] }}

{{ $m['member_id'] }} · {{ $m['status'] }}

@empty
No members assigned yet.
@endforelse
{{-- Tabs --}}
@foreach([['id'=>'member-attendance','label'=>'Member Attendance'],['id'=>'my-roster','label'=>'My Roster'],['id'=>'my-leaves','label'=>'My Leaves'],['id'=>'payslip','label'=>'Pay Slips']] as $tab) @endforeach
{{-- Member Attendance --}}
@if(empty($memberAttendance))

No data available

No attendance records found in the last 30 days.

@else @php $byDate = []; foreach ($memberAttendance as $log) { $d = $log['checked_in_at'] ? substr($log['checked_in_at'], 0, 10) : 'Unknown'; $byDate[$d][] = $log; } krsort($byDate); @endphp
@foreach($byDate as $date => $logs)
{{ $date !== 'Unknown' ? \Carbon\Carbon::parse($date)->format('d M Y') : 'Unknown' }}
{{ count($logs) }} visit{{ count($logs) !== 1 ? 's' : '' }}
@foreach($logs as $log) @endforeach
Member Check In Check Out Duration Status
{{ $log['member']['name'] ?? '—' }}
{{ $log['member']['member_id'] ?? '' }}
{{ $log['checked_in_at'] ? \Carbon\Carbon::parse($log['checked_in_at'])->format('h:i A') : '—' }} {{ $log['checked_out_at'] ? \Carbon\Carbon::parse($log['checked_out_at'])->format('h:i A') : '—' }} @php $mins = $log['duration_minutes'] ?? null; @endphp @if($mins){{ floor($mins/60) > 0 ? floor($mins/60).'h ' : '' }}{{ $mins%60 }}m@else —@endif @if($log['was_denied'] ?? false) Denied @else Allowed @endif
@endforeach
@endif
{{-- My Roster --}}
@if(empty($ownRoster))

No data available

No roster has been assigned to you this month.

@else
@foreach($ownRoster as $entry) @php $rosterCls = ['scheduled'=>'bg-green-900/40 text-green-300','completed'=>'bg-blue-900/40 text-blue-300','absent'=>'bg-red-900/40 text-red-300','leave'=>'bg-yellow-900/40 text-yellow-300'][$entry['status']] ?? 'bg-gray-800 text-gray-400'; @endphp @endforeach
Date Shift Time Status
{{ $entry['roster_date'] ? \Carbon\Carbon::parse($entry['roster_date'])->format('d M Y') : '—' }} {{ $entry['shift']['name'] ?? '—' }} {{ $entry['shift']['start_time'] ?? '' }} — {{ $entry['shift']['end_time'] ?? '' }} {{ $entry['status'] }}
@endif
{{-- My Leaves --}}
@if(empty($leaves))

No data available

No leave records found in the last 3 months.

@else
@foreach($leaves as $leave) @php $leaveCls = ['approved'=>'text-green-400','rejected'=>'text-red-400','pending'=>'text-yellow-400'][$leave['status']] ?? 'text-gray-400'; @endphp @endforeach
Type From To Days Status Reason
{{ $leave['type'] }} {{ $leave['from_date'] ? \Carbon\Carbon::parse($leave['from_date'])->format('d M Y') : '—' }} {{ $leave['to_date'] ? \Carbon\Carbon::parse($leave['to_date'])->format('d M Y') : '—' }} {{ $leave['days'] }} {{ $leave['status'] }} {{ $leave['reason'] ?? '—' }}
@endif
{{-- Pay Slips --}}
@if(empty($payroll))

No data available

No pay slips have been generated yet.

@else
@foreach($payroll as $slip) @php $prCls = ['paid'=>'bg-green-900/40 text-green-300','pending'=>'bg-yellow-900/40 text-yellow-300','processing'=>'bg-blue-900/40 text-blue-300'][$slip['status']] ?? 'bg-gray-800 text-gray-300'; $monthLabel = \Carbon\Carbon::createFromDate($slip['year'], $slip['month'], 1)->format('F Y'); @endphp

{{ $monthLabel }}

@if($slip['reference'] ?? null)

Ref: {{ $slip['reference'] }}

@endif
{{ $slip['status'] }}
Base Salary ₹{{ number_format($slip['base_salary'] ?? 0, 2) }}
@if(($slip['bonuses'] ?? 0) > 0)
Bonuses + ₹{{ number_format($slip['bonuses'], 2) }}
@endif @if(($slip['deductions'] ?? 0) > 0)
Deductions - ₹{{ number_format($slip['deductions'], 2) }}
@endif
Net Pay ₹{{ number_format($slip['net_salary'] ?? 0, 2) }}
@if($slip['working_days'] ?? null)
{{ $slip['present_days'] ?? 0 }}
Present
{{ $slip['leave_days'] ?? 0 }}
Leave
{{ $slip['lop_days'] ?? 0 }}
LOP
@endif @if($slip['paid_on'] ?? null)
Paid on {{ \Carbon\Carbon::parse($slip['paid_on'])->format('d M Y') }}
@endif
@endforeach
@endif