@extends('layouts.app') @section('content')
Payment Timeline
@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') }}
{{ $event['label'] }}
@if ($event['type'] === 'paid') Completed @elseif ($event['type'] === 'approved') Approved @elseif ($event['type'] === 'initiated') Initiated @elseif ($event['type'] === 'rejected') Rejected @elseif ($event['type'] === 'assigned') Assigned @elseif ($event['type'] === 'pending') Registered @endif
@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)
{{ $key }}
{{ $value }}
@endforeach
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
@endsection