@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)
@endif
@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
| Phone |
Customer |
Status |
Sent |
Error |
@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
| {{ $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
|
@endforeach
@endif
@endsection