@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