Invitados confirmados
{{ $attendingCount }} de {{ $passesIssued }}
Invitaciones enviadas
{{ $sentCount ?? 0 }} de {{ $passesIssued }}
Confirmaron que no asisten
{{ $notAttendingCount }}
Pendientes de confirmar
{{ $pendingCount }}
Invitados sentados
{{ $seatedCount ?? 0 }}
@php $groups = $guests->filter(function($g){ return trim(mb_strtolower((string) $g->last_name)) === 'grupo'; }); $individuals = $guests->reject(function($g){ return trim(mb_strtolower((string) $g->last_name)) === 'grupo'; }); $allConfs = $invitation->guestConfirmations ?? collect(); @endphp
@forelse($groups as $guest) @php $matches = $allConfs->filter(function($c) use ($guest){ $data = json_decode($c->info, true); return is_array($data) && isset($data['pass_code']) && $data['pass_code'] === $guest->pass_code; })->sortByDesc('id'); $conf = $matches->first(); $persons = []; if ($conf && $conf->confirm) { $d = json_decode($conf->info, true); if (is_array($d) && isset($d['persons']) && is_array($d['persons'])) { $persons = $d['persons']; } } // Prefer persisted group_members; fallback to persons from confirmation $members = is_array($guest->group_members) ? $guest->group_members : []; if (empty($members) && count($persons) > 0) { $members = array_map(function($p){ $full = $p['full_name'] ?? trim(($p['first_name'] ?? '').' '.($p['last_name'] ?? '')); $menu = $p['menu'] ?? ( (!empty($p['vegetariano'])) ? 'vegetariano' : null ); return [ 'full_name' => $full, 'age' => $p['age'] ?? 'Adulto', 'gender' => $p['gender'] ?? 'Hombre', 'attendance' => $p['attendance'] ?? null, 'menu' => $menu, 'table' => $p['table'] ?? null, ]; }, $persons); } $absLink = url('/'.$invitation->type->code.'/'.$invitation->slug.'/'.$guest->pass_code); $rawPhone = preg_replace('/\D+/', '', (string) $guest->cellphone); $waLink = $rawPhone ? ('https://wa.me/'.$rawPhone.'?link='.urlencode($absLink)) : null; $groupCount = count($members) > 0 ? count($members) : (int) $guest->number_of_guests; @endphp @if(count($members) > 0) @for($i=0; $i @if($i === 0) @php $sentVal = $guest->sent ? 'yes' : 'no'; @endphp @endif @endfor @else @endif @empty @endforelse
{{ $guest->first_name }} {{ $groupCount }} Asistencia Menú Mesas Enviada
@php $ageV = mb_strtolower((string)($m['age'] ?? ''), 'UTF-8'); $genderV = mb_strtolower((string)($m['gender'] ?? ''), 'UTF-8'); $avatarPath = 'img/user.svg'; if (strpos($ageV, 'beb') === 0 || strpos($ageV, 'bebé') === 0) { $avatarPath = 'img/icons/bebe.png'; } elseif (strpos($ageV, 'niñ') === 0 || strpos($ageV, 'nin') === 0) { // Niño / Niña if (strpos($genderV, 'muj') === 0) { $avatarPath = 'img/icons/niña.png'; } else { $avatarPath = 'img/icons/niño.png'; } } elseif (strpos($ageV, 'adu') === 0) { // Adulto if (strpos($genderV, 'muj') === 0) { $avatarPath = 'img/icons/mujer.webp'; } else { $avatarPath = 'img/icons/hombre.webp'; } } @endphp
Avatar
{{ $m['full_name'] ?? '' }}
@php $groupTableRendered = false; @endphp
Sin integrantes cargados
No hay grupos aún
@forelse($individuals as $guest) @php $absLink = url('/'.$invitation->type->code.'/'.$invitation->slug.'/'.$guest->pass_code); $rawPhone = preg_replace('/\D+/', '', (string) $guest->cellphone); $waLink = $rawPhone ? ('https://wa.me/'.$rawPhone.'?link='.urlencode($absLink)) : null; @endphp @empty @endforelse
Invitados individuales Asistencia Menú Mesas Enviada
@php $ageV = mb_strtolower((string)($guest->age_group ?? ''), 'UTF-8'); $genderV = mb_strtolower((string)($guest->gender ?? ''), 'UTF-8'); $avatarPath = 'img/user.svg'; if (strpos($ageV, 'beb') === 0 || strpos($ageV, 'bebé') === 0) { $avatarPath = 'img/icons/bebe.png'; } elseif (strpos($ageV, 'niñ') === 0 || strpos($ageV, 'nin') === 0) { if (strpos($genderV, 'muj') === 0) { $avatarPath = 'img/icons/niña.png'; } else { $avatarPath = 'img/icons/niño.png'; } } elseif (strpos($ageV, 'adu') === 0) { if (strpos($genderV, 'muj') === 0) { $avatarPath = 'img/icons/mujer.webp'; } else { $avatarPath = 'img/icons/hombre.webp'; } } // Build display name without placeholder hyphens when last name is missing $first = trim((string)($guest->first_name ?? '')); $last = trim((string)($guest->last_name ?? '')); if ($last === '-' || $last === '–' || $last === '—') { $last = ''; } $displayName = trim($first . ' ' . $last); @endphp
Avatar
{{ $displayName }}
@php $att = $guest->attendance; $attVal = $att === null ? '' : ($att ? 'yes' : 'no'); @endphp @php $menu = $guest->menu ?? ''; @endphp @php $tVal = (string)($guest->table ?? ''); $indTableRendered = false; @endphp @php $sentVal = $guest->sent ? 'yes' : 'no'; @endphp
No hay invitados individuales
Tipos de menú
@php $hasMenus = isset($menuCounts) && is_array($menuCounts) && count($menuCounts) > 0; @endphp @if($hasMenus)
    @foreach($menuCounts as $label => $count)
  • {{ $label }} {{ $count }}
  • @endforeach
@else
Sin datos
@endif