@extends('layouts.core.backend', [ 'menu' => 'sending_server', ]) @section('title', $server->name . ' — Warmup Statistics') @section('head') @endsection @section('page_header')

local_fire_department {{ $server->name }} Warmup settings Configure
@csrf

@endsection @section('content') @php $strategy = $server->warmupStrategy; $serverGrowthStrategy = $strategy->growth_strategy ?: Acelle\Model\WarmupStrategy::GROWTH_STRATEGY_LINEAR; $serverLimitType = $strategy->limit_type ?: Acelle\Model\WarmupStrategy::LIMIT_TYPE_PER_DAY_CAP; $serverLimitLabel = match ($serverLimitType) { Acelle\Model\WarmupStrategy::LIMIT_TYPE_TARGET_VOLUME => trans('warmup.fields.limit_target_volume'), Acelle\Model\WarmupStrategy::LIMIT_TYPE_STOP_AFTER_DAYS => trans('warmup.fields.limit_stop_after_days'), default => trans('warmup.fields.limit_per_day_cap'), }; $serverLimitValue = match ($serverLimitType) { Acelle\Model\WarmupStrategy::LIMIT_TYPE_TARGET_VOLUME => number_with_delimiter($strategy->activeLimitValue()).' '.trans('messages.emails'), Acelle\Model\WarmupStrategy::LIMIT_TYPE_STOP_AFTER_DAYS => number_with_delimiter($strategy->activeLimitValue()).' '.trans('messages.days'), default => number_with_delimiter($strategy->activeLimitValue()).'/'.$strategy->quota_type, }; $serverGrowthLabel = $serverGrowthStrategy === Acelle\Model\WarmupStrategy::GROWTH_STRATEGY_EXPONENTIAL ? trans('warmup.preview.exponential_factor') : trans('warmup.preview.daily_increment'); $serverGrowthValue = $serverGrowthStrategy === Acelle\Model\WarmupStrategy::GROWTH_STRATEGY_EXPONENTIAL ? 'x'.number_format((float) $strategy->exponential_factor, 2) : '+'.number_with_delimiter($strategy->daily_increment).'/'.$strategy->quota_type; $warmupUsages = \Acelle\Model\SendingServerWarmupUsage::where('sending_server_id', $server->id) ->orderBy('day_number')->get(); $planDetails = $strategy->getPlanDetails(); $usageByDay = $warmupUsages->keyBy('day_number'); $currentDay = $server->warmup_started_at ? max(1, \Carbon\Carbon::parse($server->warmup_started_at)->startOfDay()->diffInDays(now()->startOfDay()) + 1) : null; $totalPlanDays = count($planDetails); $totalSent = $warmupUsages->sum('sent_count'); $totalFailed = $warmupUsages->sum('failed_count'); $todayUsage = $currentDay ? $usageByDay->get($currentDay) : null; $todayPlan = $currentDay ? collect($planDetails)->firstWhere('step', $currentDay) : null; $maxChartDays = max($totalPlanDays, $warmupUsages->max('day_number') ?? 0); $chartDayLabels = []; $chartPlanned = []; $chartActual = []; $planByStep = collect($planDetails)->keyBy('step'); for ($d = 1; $d <= $maxChartDays; $d++) { $chartDayLabels[] = 'Day ' . $d; $planStep = $planByStep->get($d); $chartPlanned[] = $planStep ? (int) $planStep['sendingOfStep'] : null; $usageRow = $usageByDay->get($d); $chartActual[] = $usageRow ? (int) $usageRow->sent_count : null; } @endphp {{-- ── Strategy summary ──────────────────────────────────────────────── --}}
{{ trans('warmup.status.' . $strategy->status) }} {{ trans('warmup.presets.' . $strategy->preset) }}

{{ $strategy->name }}

{{ trans('warmup.preview.start_volume') }}{{ number_with_delimiter($strategy->starting_volume) }}/{{ $strategy->quota_type }}
{{ $serverGrowthLabel }}{{ $serverGrowthValue }}
{{ $serverLimitLabel }}{{ $serverLimitValue }}
{{ trans('warmup.preview.estimated_full_warmup') }}{{ $strategy->estimatedFullWarmupDay() }} days
{{ trans('warmup.preview.risk_level') }}{{ trans('warmup.risk_levels.' . $strategy->riskLevel()) }}
{{-- ── Progress summary pills ──────────────────────────────────── --}}
Started: @if ($server->warmup_started_at) {{ \Carbon\Carbon::parse($server->warmup_started_at)->format('M d, Y') }} @else Not started @endif @if ($currentDay) Day {{ $currentDay }} of {{ $totalPlanDays }} @endif Sent: {{ number_with_delimiter($totalSent) }} @if ($totalFailed > 0) Failed: {{ number_with_delimiter($totalFailed) }} @endif @if ($todayUsage && $todayPlan) Today: {{ number_with_delimiter($todayUsage->sent_count) }} / {{ number_with_delimiter($todayPlan['sendingOfStep']) }} @endif
{{-- ── Chart ──────────────────────────────────────────────────── --}} @if ($maxChartDays > 0)
@else
No sends recorded yet.
@endif
{{-- ── Daily breakdown ────────────────────────────────────────────────── --}} @if ($warmupUsages->isNotEmpty())
Daily breakdown
@foreach ($warmupUsages as $usage) @php $fillPct = $usage->daily_quota > 0 ? min(100, round(($usage->sent_count / $usage->daily_quota) * 100)) : 0; $fillClass = $fillPct >= 90 ? 'bg-success' : ($fillPct >= 50 ? 'bg-primary' : 'bg-warning'); $isToday = $currentDay && $usage->day_number === $currentDay; @endphp @endforeach
Day Date Quota Sent Failed Fill
Day {{ $usage->day_number }} @if ($isToday) Today @endif {{ \Carbon\Carbon::parse($usage->usage_date)->format('M d, Y') }} {{ number_with_delimiter($usage->daily_quota) }} {{ number_with_delimiter($usage->sent_count) }} {{ $usage->failed_count > 0 ? number_with_delimiter($usage->failed_count) : '—' }}
{{ $fillPct }}%
@endif @if ($maxChartDays > 0) @endif @endsection