Stand: SMTP-Test, Admin-Mail-Tab, Notifiable-Fix, Lazy-Quill
- Fix: Notifiable-Trait zum User-Model hinzugefuegt (behebt notify()-500er) - Installer: SMTP-Verbindungstest mit EsmtpTransport + Ueberspringen-Link - Admin: Neuer E-Mail-Tab mit SMTP-Konfiguration + Verbindungstest - Admin: Lazy Quill-Initialisierung (nur sichtbare Locale wird geladen) - Uebersetzungen: 17 neue Mail-Keys in allen 6 Sprachen Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
78
resources/views/components/event-status-boxes.blade.php
Executable file
78
resources/views/components/event-status-boxes.blade.php
Executable file
@@ -0,0 +1,78 @@
|
||||
@props(['event'])
|
||||
|
||||
@php
|
||||
use App\Enums\ParticipantStatus;
|
||||
use App\Enums\CateringStatus;
|
||||
use App\Enums\EventType;
|
||||
|
||||
$isMeeting = $event->type === EventType::Meeting;
|
||||
$yesCount = $event->participants->where('status', ParticipantStatus::Yes)->count();
|
||||
$noCount = $event->participants->where('status', ParticipantStatus::No)->count();
|
||||
$openCount = $event->participants->where('status', ParticipantStatus::Unknown)->count();
|
||||
|
||||
// withCount-Attribute nutzen wenn vorhanden (Index-Views), sonst Collection filtern (Show-View)
|
||||
$hasCatering = $event->type->hasCatering();
|
||||
$hasTimekeepers = $event->type->hasTimekeepers();
|
||||
$cateringYes = $hasCatering ? ($event->caterings_yes_count ?? $event->caterings->where('status', CateringStatus::Yes)->count()) : 0;
|
||||
$timekeeperYes = $hasTimekeepers ? ($event->timekeepers_yes_count ?? $event->timekeepers->where('status', CateringStatus::Yes)->count()) : 0;
|
||||
|
||||
// Individual minimum status
|
||||
if ($event->min_players !== null) {
|
||||
$playersMet = $yesCount >= $event->min_players;
|
||||
} else {
|
||||
$playersMet = null;
|
||||
}
|
||||
|
||||
$cateringMet = ($hasCatering && $event->min_catering !== null) ? $cateringYes >= $event->min_catering : null;
|
||||
$timekeepersMet = ($hasTimekeepers && $event->min_timekeepers !== null) ? $timekeeperYes >= $event->min_timekeepers : null;
|
||||
|
||||
// Box size classes
|
||||
$boxClass = 'inline-flex items-center justify-center w-9 h-9 rounded text-sm font-bold';
|
||||
$participantsLabel = $isMeeting ? __('admin.nav_users') : __('admin.nav_players');
|
||||
@endphp
|
||||
|
||||
<div class="flex items-start gap-4 sm:gap-6">
|
||||
{{-- Spieler / Benutzer --}}
|
||||
<div class="text-center">
|
||||
<div class="text-[10px] font-semibold text-gray-500 uppercase tracking-wide mb-1">{{ $participantsLabel }}</div>
|
||||
<div class="flex gap-0.5">
|
||||
@if ($playersMet === true)
|
||||
<span class="{{ $boxClass }} bg-green-500 text-white">{{ $yesCount }}</span>
|
||||
<span class="{{ $boxClass }} bg-green-500 text-white">{{ $noCount }}</span>
|
||||
<span class="{{ $boxClass }} bg-green-500 text-white">{{ $openCount }}</span>
|
||||
@else
|
||||
<span class="{{ $boxClass }} bg-green-500 text-white">{{ $yesCount }}</span>
|
||||
<span class="{{ $boxClass }} bg-red-500 text-white">{{ $noCount }}</span>
|
||||
<span class="{{ $boxClass }} bg-gray-300 text-gray-700">{{ $openCount }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if ($hasCatering)
|
||||
{{-- Catering --}}
|
||||
<div class="text-center">
|
||||
<div class="text-[10px] font-semibold text-gray-500 uppercase tracking-wide mb-1">{{ __('events.catering_short') }}</div>
|
||||
@if ($cateringMet === true)
|
||||
<span class="{{ $boxClass }} bg-green-500 text-white">{{ $cateringYes }}</span>
|
||||
@elseif ($cateringMet === false)
|
||||
<span class="{{ $boxClass }} bg-red-500 text-white">{{ $cateringYes }}</span>
|
||||
@else
|
||||
<span class="{{ $boxClass }} bg-gray-200 text-gray-600">{{ $cateringYes }}</span>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($hasTimekeepers)
|
||||
{{-- Zeitnehmer --}}
|
||||
<div class="text-center">
|
||||
<div class="text-[10px] font-semibold text-gray-500 uppercase tracking-wide mb-1">{{ __('events.timekeeper_short') }}</div>
|
||||
@if ($timekeepersMet === true)
|
||||
<span class="{{ $boxClass }} bg-green-500 text-white">{{ $timekeeperYes }}</span>
|
||||
@elseif ($timekeepersMet === false)
|
||||
<span class="{{ $boxClass }} bg-red-500 text-white">{{ $timekeeperYes }}</span>
|
||||
@else
|
||||
<span class="{{ $boxClass }} bg-gray-200 text-gray-600">{{ $timekeeperYes }}</span>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
Reference in New Issue
Block a user