@extends('layouts.app') @section('content')

Vista compacta para operar muchas campanas sin perder envios, opens ni clicks.

@if ($canCreate ?? false) Nueva campana @endif
0 seleccionadas
@forelse ($campaigns as $campaign) @php $rowMetrics = $campaignMetrics[(int) $campaign->id] ?? [ 'total_recipients' => 0, 'sent_count' => 0, 'queued_count' => 0, 'failed_count' => 0, 'skipped_count' => 0, 'unique_opens' => 0, 'total_opens' => 0, 'unique_clicks' => 0, 'total_clicks' => 0, 'open_rate' => 0, 'click_rate' => 0, 'ctor_rate' => 0, 'latest_send' => null, ]; $latestSend = $rowMetrics['latest_send'] ?? null; $status = (string) ($latestSend->status ?? $campaign->status); $totalRecipients = (int) ($rowMetrics['total_recipients'] ?: ($latestSend->total_recipients ?? 0)); $sentCount = (int) ($rowMetrics['sent_count'] ?: ($latestSend->sent_count ?? 0)); $queuedCount = (int) ($rowMetrics['queued_count'] ?: ($latestSend->queued_count ?? 0)); $failedCount = (int) ($rowMetrics['failed_count'] ?: ($latestSend->failed_count ?? 0)); $skippedCount = (int) ($rowMetrics['skipped_count'] ?: ($latestSend->skipped_count ?? 0)); $doneCount = $sentCount + $failedCount + $skippedCount; $progress = $totalRecipients > 0 ? max(0, min(100, (int) floor(($doneCount / $totalRecipients) * 100))) : 0; $timezone = $currentWorkspace?->timezone() ?? \App\Support\CampaignBuilderSupport::defaultTimezone(); $rawCompletedAt = trim((string) ($latestSend->completed_at ?? '')); $rawStartedAt = trim((string) ($latestSend->started_at ?? '')); $rawScheduledAt = trim((string) ($latestSend->scheduled_at ?? $campaign->getRawOriginal('scheduled_at') ?? '')); $sentLabel = match (true) { $rawCompletedAt !== '' => \Illuminate\Support\Carbon::parse($rawCompletedAt, 'UTC')->setTimezone($timezone)->format('Y-m-d H:i'), $campaign->sent_at !== null => $campaign->sent_at->setTimezone($timezone)->format('Y-m-d H:i'), $rawStartedAt !== '' => 'inicio ' . \Illuminate\Support\Carbon::parse($rawStartedAt, 'UTC')->setTimezone($timezone)->format('H:i'), $rawScheduledAt !== '' => \App\Support\CampaignBuilderSupport::scheduleSummary($rawScheduledAt, $timezone), default => '', }; @endphp @empty @endforelse
Campana Destinatarios Envio Opens unicos Clicks unicos Estado
{{ $campaign->name }} {{ $campaign->subject }} @if ($totalRecipients > 0) {{ number_format($sentCount) }} / {{ number_format($totalRecipients) }}
{{ number_format($queuedCount) }} queued | {{ number_format($failedCount) }} fallidos @elseif ((int) $campaign->sends_count > 0) {{ number_format((int) $campaign->sends_count) }} envio(s) @else Sin envio @endif
@if ($sentLabel !== '') {{ $sentLabel }} @else Aun no @endif {{ $rowMetrics['open_rate'] }}% {{ number_format((int) $rowMetrics['unique_opens']) }} unicos / {{ number_format((int) $rowMetrics['total_opens']) }} total {{ $rowMetrics['click_rate'] }}% {{ number_format((int) $rowMetrics['unique_clicks']) }} unicos / {{ number_format((int) $rowMetrics['total_clicks']) }} total {{ $status }} @if ($latestSend) Send #{{ $latestSend->id }} @endif @if ($campaign->status === 'draft') @endif
No hay campanas en esta vista.
@endsection