@extends('admin.layouts.app') @php $title = $entry['title'] ?? ''; $tone = $entry['badge_tone'] ?? 'muted'; $tonePalette = match ($tone) { 'ok' => ['fg' => '#15803d', 'bg' => '#dcfce7', 'border' => '#86efac', 'dot' => '#22c55e'], 'warn' => ['fg' => '#a16207', 'bg' => '#fef9c3', 'border' => '#fde047', 'dot' => '#eab308'], 'err' => ['fg' => '#b91c1c', 'bg' => '#fee2e2', 'border' => '#fca5a5', 'dot' => '#ef4444'], default => ['fg' => '#475569', 'bg' => '#f1f5f9', 'border' => '#e2e8f0', 'dot' => '#94a3b8'], }; $kindPalette = match ($kind) { 'notification' => ['fg' => '#0369a1', 'bg' => '#e0f2fe'], 'audit' => ['fg' => '#6d28d9', 'bg' => '#ede9fe'], default => ['fg' => '#047857', 'bg' => '#d1fae5'], }; $kindLabel = match ($kind) { 'notification' => __('admin.investors_admin.activity.tabs.notifications'), 'audit' => __('admin.investors_admin.activity.tabs.audits'), default => __('admin.investors_admin.activity.tabs.activity'), }; $iconRef = match ($kind) { 'notification' => '#icon-mail', 'audit' => '#icon-shield', default => '#icon-edit', }; @endphp @section('title', __('admin.investors_admin.activity.detail_title') . ' · ' . $investor->name_en) @section('page_title', __('admin.investors_admin.activity.detail_title')) @push('styles') @endpush @section('content')
{{-- ─── Header hero ─────────────────────────────────────────────── --}}
{{ __('admin.investors_admin.activity.back_to_investor', ['name' => $investor->name_en ?: $investor->name_ar]) }}
{{ $kindLabel }}

{{ $title }}

@if (filled($entry['badge'])) {{ $entry['badge'] }} @endif @if (filled($entry['subtitle'])) {{ $entry['subtitle'] }} @endif
{{-- Actor + timestamp ──────────────── --}}
{{ __('admin.investors_admin.activity.actor_label') }} {{ $entry['actor'] ?? __('admin.investors_admin.activity.actor_system') }} @if ($raw instanceof \App\Models\ActivityLog && $raw->admin?->email) {{ $raw->admin->email }} @elseif ($raw instanceof \App\Models\NotificationLog && $raw->admin?->email) {{ $raw->admin->email }} @endif
@if ($entry['happened_at'])
{{ __('admin.investors_admin.activity.fields.when') }} {{ $entry['happened_at']->format('Y-m-d · H:i:s') }} {{ $entry['happened_at']->diffForHumans() }}
@endif
{{-- ─── Per-kind detail sections ────────────────────────────────── --}} @if ($kind === 'activity') {{-- ─── Activity-log details ─────────────────────────────── --}} @if (filled($raw->description ?? null))

{{ __('admin.investors_admin.activity.section.description') }}

{{ $raw->description }}
@endif @if (is_array($raw->meta ?? null) && ! empty($raw->meta))

{{ __('admin.investors_admin.activity.section.payload') }}

{{ json_encode($raw->meta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) }}
@endif

{{ __('admin.investors_admin.activity.section.context') }}

{{ __('admin.investors_admin.activity.fields.ip') }} {{ $raw->ip_address ?: __('admin.investors_admin.activity.empty_value') }}
{{ __('admin.investors_admin.activity.fields.user_agent') }} {{ $raw->user_agent ?: __('admin.investors_admin.activity.empty_value') }}
{{ __('admin.investors_admin.activity.fields.log_id') }} #{{ $raw->id }}
@elseif ($kind === 'notification') {{-- ─── Notification details ─────────────────────────────── --}}

{{ __('admin.investors_admin.activity.section.delivery') }}

{{ __('admin.investors_admin.activity.fields.channel') }} {{ __('admin.investors_admin.activity.channels.' . $raw->channel) }}
{{ __('admin.investors_admin.activity.fields.status') }} {{ __('admin.investors_admin.activity.statuses.' . $raw->status) }}
{{ __('admin.investors_admin.activity.fields.address') }} {{ $raw->address ?: __('admin.investors_admin.activity.empty_value') }}
{{ __('admin.investors_admin.activity.fields.triggered_event') }} {{ $raw->triggered_event ?: __('admin.investors_admin.activity.empty_value') }}
@if (filled($raw->label_key))
{{ __('admin.investors_admin.activity.fields.label') }} {{ $raw->label_key }}
@endif @if (filled($raw->provider_message_id))
{{ __('admin.investors_admin.activity.fields.provider_id') }} {{ $raw->provider_message_id }}
@endif @if ($raw->sent_at)
{{ __('admin.investors_admin.activity.fields.sent_at') }} {{ $raw->sent_at->format('Y-m-d · H:i:s') }}
@endif
{{ __('admin.investors_admin.activity.fields.log_id') }} #{{ $raw->id }}
@if (filled($raw->old_value) || filled($raw->new_value) || $raw->oldOption || $raw->newOption)

{{ __('admin.investors_admin.activity.section.transition') }}

{{ __('admin.investors_admin.activity.fields.from') }} {{ $raw->oldOption?->name_en ?? $raw->old_value ?? __('admin.investors_admin.activity.empty_value') }}
{{ __('admin.investors_admin.activity.fields.to') }} {{ $raw->newOption?->name_en ?? $raw->new_value ?? __('admin.investors_admin.activity.empty_value') }}
@endif @if (filled($raw->error) || filled($raw->error_code))

{{ __('admin.investors_admin.activity.section.error') }}

@if (filled($raw->error_code))
{{ __('admin.investors_admin.activity.fields.error_code') }} {{ $raw->error_code }}
@endif
{{ $raw->error }}
@endif @if (is_array($raw->payload) && ! empty($raw->payload))

{{ __('admin.investors_admin.activity.section.payload') }}

{{ json_encode($raw->payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) }}
@endif @if (is_array($raw->response) && ! empty($raw->response))

{{ __('admin.investors_admin.activity.section.response') }}

{{ json_encode($raw->response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) }}
@endif @else {{-- ─── Audit (signup forensic) details ─────────────────── --}}

{{ __('admin.investors_admin.activity.section.audit') }}

{{ __('admin.investors_admin.activity.fields.outcome') }} {{ $raw->outcome ?: __('admin.investors_admin.activity.empty_value') }}
{{ __('admin.investors_admin.activity.fields.flow') }} {{ $raw->flow ?: __('admin.investors_admin.activity.empty_value') }}
@if ($raw->duration_ms ?? null)
{{ __('admin.investors_admin.activity.fields.duration') }} {{ $raw->duration_ms }} ms
@endif
{{ __('admin.investors_admin.activity.fields.request_id') }} {{ $raw->request_id ?: __('admin.investors_admin.activity.empty_value') }}
{{ __('admin.investors_admin.activity.fields.ip') }} {{ $raw->ip_address ?: __('admin.investors_admin.activity.empty_value') }}
@foreach ([ 'payload_validated' => 'admin.investors_admin.activity.section.payload_validated', 'payload_normalized' => 'admin.investors_admin.activity.section.payload_normalized', 'errors' => 'admin.investors_admin.activity.section.errors', 'files' => 'admin.investors_admin.activity.section.files', ] as $col => $titleKey) @php $blob = $raw->{$col} ?? null; if (is_string($blob)) $blob = json_decode($blob, true); @endphp @if (is_array($blob) && ! empty($blob))

{{ __($titleKey) }}

{{ json_encode($blob, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) }}
@endif @endforeach @endif
@endsection