@extends('admin.layouts.app') @section('title', __('admin.notification_logs_admin.event_title') . ' — ' . __('admin.brand.name')) @section('page_title', __('admin.notification_logs_admin.event_title')) @php use App\Models\NotificationLog; $dash = '—'; $locale = app()->getLocale(); $nameField = $locale === 'ar' ? 'name_ar' : 'name_en'; // The aggregated header is built off the first row — every row in the // event shares the same recipient / action / admin / triggering event. $head = $rows->first(); $newOptName = optional($head->newOption)->{$nameField} ?: optional($head->newOption)->name_en; $oldOptName = optional($head->oldOption)->{$nameField} ?: optional($head->oldOption)->name_en; $recipientUrl = null; if ($head->recipient_type === \App\Models\Investor::class && $head->recipient_id) { $recipientUrl = route('admin.investors.show', $head->recipient_id); } elseif ($head->recipient_type === \App\Models\Startup::class && $head->recipient_id) { $recipientUrl = route('admin.startups.show', $head->recipient_id); } $channelMeta = [ NotificationLog::CHANNEL_EMAIL => ['icon' => '✉️', 'fg' => '#1d4ed8', 'bg' => '#dbeafe', 'label' => __('admin.notification_logs_admin.channels.email')], NotificationLog::CHANNEL_SMS => ['icon' => '💬', 'fg' => '#7c2d12', 'bg' => '#fed7aa', 'label' => __('admin.notification_logs_admin.channels.sms')], NotificationLog::CHANNEL_WHATSAPP => ['icon' => '🟢', 'fg' => '#166534', 'bg' => '#bbf7d0', 'label' => __('admin.notification_logs_admin.channels.whatsapp')], NotificationLog::CHANNEL_PUSH => ['icon' => '↑', 'fg' => '#0369a1', 'bg' => '#e0f2fe', 'label' => __('admin.notification_logs_admin.channels.push')], NotificationLog::CHANNEL_NOTIFICATION => ['icon' => '🔔', 'fg' => '#4338ca', 'bg' => '#e0e7ff', 'label' => __('admin.notification_logs_admin.channels.notification')], ]; $statusMeta = [ NotificationLog::STATUS_PENDING => ['fg' => '#92400e', 'bg' => '#fef3c7', 'label' => __('admin.notification_logs_admin.statuses.pending'), 'glyph' => '⏳'], NotificationLog::STATUS_SENT => ['fg' => '#065f46', 'bg' => '#d1fae5', 'label' => __('admin.notification_logs_admin.statuses.sent'), 'glyph' => '✓'], NotificationLog::STATUS_FAILED => ['fg' => '#991b1b', 'bg' => '#fee2e2', 'label' => __('admin.notification_logs_admin.statuses.failed'), 'glyph' => '✗'], ]; @endphp @section('content') {{ __('admin.notification_logs_admin.back_to_list') }}
{{-- ────── Summary card: action + recipient + counters ────── --}}
🔁 {{ $head->triggered_event ?: $dash }} @if ($head->label_key) · {{ $head->label_key }} @endif

@if ($newOptName) {{ $newOptName }} @else {{ $head->new_value ?: $dash }} @endif

@if ($oldOptName || $head->old_value)

{{ $oldOptName ?: $head->old_value ?: $dash }} → {{ $newOptName ?: $head->new_value ?: $dash }}

@endif

👤 @if ($head->recipient && $recipientUrl) {{ $head->recipient->name ?? '#'.$head->recipient_id }} @else {{ optional($head->recipient)->name ?? '#'.$head->recipient_id }} @endif ({{ class_basename($head->recipient_type) }}#{{ $head->recipient_id }}) · 🕒 {{ optional($summary['occurred_at'])->format('Y-m-d H:i:s') }} @if ($head->admin) · 🛡️ {{ $head->admin->name }} @endif

{{ $summary['channel_count'] }}
{{ __('admin.notification_logs_admin.fields.channels') }}
{{ $summary['sent_count'] }}
{{ __('admin.notification_logs_admin.counters.sent') }}
{{ $summary['failed_count'] }}
{{ __('admin.notification_logs_admin.counters.failed') }}
@if ($summary['pending_count'] > 0)
{{ $summary['pending_count'] }}
{{ __('admin.notification_logs_admin.counters.pending') }}
@endif
{{ __('admin.notification_logs_admin.fields.event_id') }}: {{ $eventId }}
{{-- ────── Per-channel breakdown ────── --}}

📡 {{ __('admin.notification_logs_admin.fields.channel_results') }} {{ __('admin.notification_logs_admin.channel_results_subtitle', ['count' => $summary['channel_count']]) }}

@foreach ($rows as $row) @php $cm = $channelMeta[$row->channel] ?? ['icon' => '•', 'fg' => '#475569', 'bg' => '#f1f5f9', 'label' => $row->channel]; $sm = $statusMeta[$row->status] ?? ['fg' => '#475569', 'bg' => '#f1f5f9', 'label' => $row->status, 'glyph' => '•']; @endphp
{{ $cm['icon'] }} {{ $cm['label'] }} {{ $sm['glyph'] }} {{ $sm['label'] }} @if ($row->sent_at) {{ $row->sent_at->format('Y-m-d H:i:s') }} · {{ $row->sent_at->diffForHumans() }} @endif
{{ __('admin.notification_logs_admin.fields.address') }}
{{ $row->address ?: $dash }}
@if ($row->status === NotificationLog::STATUS_FAILED && ($row->error || $row->error_code))
@if ($row->error_code) {{ $row->error_code }} @endif @if ($row->error)
{{ $row->error }}
@endif
@endif @if (! empty($row->payload))
📦 {{ __('admin.notification_logs_admin.fields.payload') }}
{{ json_encode($row->payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) }}
@endif @if (! empty($row->response))
📡 {{ __('admin.notification_logs_admin.fields.response') }}
{{ json_encode($row->response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) }}
@endif
@endforeach
@push('styles') @endpush @endsection