🎉 **Introduce meetup activity management**

- Added `is_active` and `last_event_at` fields to meetups with migration.
- Enhanced UI: Display `Aktiv`/`Inaktiv` badges and last event dates across dashboard, tables, and maps.
- Introduced `/meetups:update-activity` command to manage activity flags and timestamps.
- Validated latitude/longitude to prevent `0,0` inputs in city creation and updates.
- Updated factories and tests to include meetup activity states (`active`, `inactive`).
This commit is contained in:
HolgerHatGarKeineNode
2026-05-17 17:57:16 +02:00
parent bf9654de87
commit 71a4898303
16 changed files with 343 additions and 11 deletions
@@ -87,13 +87,19 @@ class extends Component {
<div class="space-y-3">
@foreach($topMeetups as $meetup)
<a href="{{ route('meetups.landingpage', ['meetup' => $meetup, 'country' => $meetup->city->country->code]) }}"
class="flex items-center justify-between gap-3 p-2 hover:bg-zinc-50 dark:hover:bg-zinc-800 rounded-lg transition-colors block">
class="flex items-center justify-between gap-3 p-2 hover:bg-zinc-50 dark:hover:bg-zinc-800 rounded-lg transition-colors block {{ $meetup->is_active ? '' : 'opacity-60' }}">
<div class="flex items-center gap-3 flex-1">
<flux:avatar
size="sm"
class="{{ $meetup->is_active ? '' : 'grayscale' }}"
src="{{ $meetup->getFirstMedia('logo') ? $meetup->getFirstMediaUrl('logo', 'thumb') : asset('android-chrome-512x512.png') }}"/>
<div class="flex-1">
<div class="font-medium">{{ $meetup->name }}</div>
<div class="font-medium flex items-center gap-2">
<span>{{ $meetup->name }}</span>
@unless($meetup->is_active)
<flux:badge color="zinc" size="sm">{{ __('Inaktiv') }}</flux:badge>
@endunless
</div>
<div class="flex items-center space-x-2">
<div class="text-xs text-zinc-500">{{ $meetup->users_count }} {{ __('User') }}</div>
<img