@php
$timelineEvents = [];
// 1. Pending/Registered (from enquiry)
if ($payment->enquiry) {
$timelineEvents[] = [
'type' => 'pending',
'date' => $payment->enquiry->created_at,
'statusClass' => 'pending',
'icon' => 'bx-time',
'label' => 'Enquiry Registered',
'user' => $payment->enquiry->registeredBy,
'details' => ['Enquiry Type' => ucfirst(str_replace('_', ' ', $payment->enquiry->type))]
];
// 2. Assigned (from enquiry)
if ($payment->enquiry->assignedUsers && $payment->enquiry->assignedUsers->count() > 0) {
$assignedUser = $payment->enquiry->assignedUsers->first();
$timelineEvents[] = [
'type' => 'assigned',
'date' => $assignedUser->pivot->created_at ?? $payment->enquiry->created_at,
'statusClass' => 'info',
'icon' => 'bx-user-check',
'label' => 'Enquiry Assigned',
'user' => $assignedUser,
'assignedBy' => $payment->enquiry->assigner,
'details' => []
];
}
}
// 3-6. Payment logs (initiated, approved, rejected, paid)
foreach ($payment->logs as $log) {
if ($log->initiated_by) {
$timelineEvents[] = [
'type' => 'initiated',
'date' => $log->created_at,
'statusClass' => 'info',
'icon' => 'bx-rocket',
'label' => 'Payment Initiated',
'user' => $log->initiator,
'details' => ['Amount' => 'TSh ' . number_format($payment->amount, 2)]
];
}
if ($log->approved_by) {
$timelineEvents[] = [
'type' => 'approved',
'date' => $log->created_at,
'statusClass' => 'success',
'icon' => 'bx-check-double',
'label' => 'Payment Approved',
'user' => $log->approver,
'details' => []
];
}
if ($log->rejected_by) {
$timelineEvents[] = [
'type' => 'rejected',
'date' => $log->created_at,
'statusClass' => 'failed',
'icon' => 'bx-x',
'label' => 'Payment Rejected',
'user' => $log->rejector,
'details' => []
];
}
if ($log->paid_by) {
$timelineEvents[] = [
'type' => 'paid',
'date' => $log->created_at,
'statusClass' => 'success',
'icon' => 'bx-check',
'label' => 'Payment Completed',
'user' => $log->payer,
'details' => []
];
}
}
// Sort by date
usort($timelineEvents, function($a, $b) {
return $a['date'] <=> $b['date'];
});
@endphp
@forelse($timelineEvents as $index => $event)
{{ $event['date']->format('M j, Y \a\t g:i A') }}
@if(isset($event['user']) && $event['user'])
@if($event['type'] === 'pending') Registered By
@elseif($event['type'] === 'assigned') Assigned To
@elseif($event['type'] === 'initiated') Initiated By
@elseif($event['type'] === 'approved') Approved By
@elseif($event['type'] === 'rejected') Rejected By
@elseif($event['type'] === 'paid') Paid By
@else User
@endif
{{ $event['user']->name }}
@if($event['user']->roles->first())
({{ $event['user']->roles->first()->name }})
@endif
@endif
@if(isset($event['assignedBy']) && $event['assignedBy'])
Assigned By
{{ $event['assignedBy']->name }}
@if($event['assignedBy']->roles->first())
({{ $event['assignedBy']->roles->first()->name }})
@endif
@endif
@foreach($event['details'] as $key => $value)
@endforeach
Show Details
Full Timestamp
{{ $event['date']->format('Y-m-d H:i:s T') }}
Event Type
{{ ucfirst($event['type']) }}
@if($event['type'] !== 'pending' && $event['type'] !== 'assigned')
Payment ID
#{{ $payment->id }}
@else
Enquiry ID
#{{ $payment->enquiry_id }}
@endif
@empty
No timeline events found.
@endforelse