@extends('layouts.app') @section('title', 'Campaign: ' . $campaign->name) @section('content') @php $status = $campaign->status ?? 'draft'; $stBg = 'rgba(148,163,184,0.15)'; $stColor = 'var(--text-muted)'; if ($status === 'sent') { $stBg = 'rgba(34,197,94,0.15)'; $stColor = 'var(--success)'; } elseif ($status === 'failed') { $stBg = 'rgba(239,68,68,0.15)'; $stColor = 'var(--danger)'; } elseif ($status === 'sending') { $stBg = 'rgba(16,191,255,0.15)'; $stColor = 'var(--accent)'; } elseif ($status === 'scheduled') { $stBg = 'rgba(245,158,11,0.15)'; $stColor = 'var(--warning)'; } $total = (int) ($campaign->recipients_count ?? 0); $sent = (int) ($campaign->sent_count ?? 0); $failed = (int) ($campaign->failed_count ?? 0); $processed = $sent + $failed; $percent = $total > 0 ? min(100, round(($processed / $total) * 100)) : 0; $canEdit = in_array($status, ['draft', 'scheduled']); $canSend = in_array($status, ['draft', 'scheduled']); $recipients = $campaign->relationLoaded('recipients') ? $campaign->recipients : collect(); $recipientCount = $recipients->count(); @endphp
Back to campaigns

{{ $campaign->name }} {{ $status }}

Campaign details and delivery status.

@if($canEdit) Edit @endif @if($canSend)
@csrf
@endif
@csrf @method('DELETE')
@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif

Campaign Info

Audience
{{ ucfirst(str_replace(['tag:', '_'], ['', ' '], $campaign->audience ?? 'all')) }}
Recipients
{{ number_format($total) }}
Created
{{ $campaign->created_at ? $campaign->created_at->format('M d, Y g:i A') : '—' }}
Scheduled For
{{ $campaign->scheduled_at ? \Carbon\Carbon::parse($campaign->scheduled_at)->format('M d, Y g:i A') : '—' }}
Started
{{ !empty($campaign->started_at) ? \Carbon\Carbon::parse($campaign->started_at)->format('M d, Y g:i A') : '—' }}
Completed
{{ $campaign->completed_at ? \Carbon\Carbon::parse($campaign->completed_at)->format('M d, Y g:i A') : '—' }}

Message

{{ $campaign->message }}
{{ strlen($campaign->message ?? '') }} characters · {{ (int) ceil(max(1, strlen($campaign->message ?? '')) / 160) }} segment(s)
@if(in_array($status, ['sent', 'sending', 'failed']))

Delivery Progress

{{ number_format($processed) }} of {{ number_format($total) }} processed · {{ $percent }}%
Sent
{{ number_format($sent) }}
Failed
{{ number_format($failed) }}
Pending
{{ number_format(max(0, $total - $processed)) }}
@if(in_array($status, ['sent', 'failed'])) @php $lastActivity = $campaign->completed_at ?? $campaign->started_at ?? $campaign->updated_at ?? null; @endphp @if($lastActivity)
Last activity: {{ \Carbon\Carbon::parse($lastActivity)->diffForHumans() }} ({{ \Carbon\Carbon::parse($lastActivity)->format('M d, Y g:i A') }})
@endif @endif
@endif

Recipients

@if($total > 50)
Showing {{ min(50, $recipientCount) }} of {{ number_format($total) }}
@endif
@if($recipientCount === 0)

No recipients to display yet.

@else @foreach($recipients as $r) @php $rStatus = $r->status ?? 'pending'; $rBg = 'rgba(148,163,184,0.15)'; $rColor = 'var(--text-muted)'; if ($rStatus === 'sent') { $rBg = 'rgba(34,197,94,0.15)'; $rColor = 'var(--success)'; } elseif ($rStatus === 'failed') { $rBg = 'rgba(239,68,68,0.15)'; $rColor = 'var(--danger)'; } @endphp @endforeach
Phone Customer Status Sent Error
{{ $r->phone ?? '—' }} {{ $r->customer->name ?? ($r->customer_name ?? '—') }} {{ $rStatus }} {{ !empty($r->sent_at) ? \Carbon\Carbon::parse($r->sent_at)->diffForHumans() : '—' }} @if(!empty($r->error)) {{ \Illuminate\Support\Str::limit($r->error, 60) }} @else — @endif
@endif
@endsection