Feature-Toggles, Administration, wiederkehrende Events und Event-Serien
- Administration & Rollenmanagement: Neuer Admin-Bereich mit Feature-Toggles und Sichtbarkeitseinstellungen pro Rolle (11 Toggles, 24 Visibility-Settings) - AdministrationController mit eigenem Settings-Tab, aus SettingsController extrahiert - Feature-Toggle-Guards in Controllers (Invitation, File, ListGenerator, Comment) und Views (events/show, events/edit, events/create) - Setting::isFeatureEnabled() und isFeatureVisibleFor() Hilfsmethoden - Wiederkehrende Trainings: Täglich/Wöchentlich/2-Wöchentlich mit Ende per Datum oder Anzahl (max. 52), Vorschau im Formular - Event-Serien: Verknüpfung über event_series_id (UUID), Modal-Dialog beim Speichern und Löschen mit Optionen "nur dieses" / "alle folgenden" - Löschen-Button direkt in der Event-Bearbeitung mit Serien-Dialog - DemoDataSeeder: 4 Trainings als Serie mit gemeinsamer event_series_id - Übersetzungen in allen 6 Sprachen (de, en, pl, ru, ar, tr) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -29,6 +29,7 @@ use App\Models\User;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class DemoDataSeeder extends Seeder
|
||||
{
|
||||
@@ -324,7 +325,8 @@ class DemoDataSeeder extends Seeder
|
||||
]
|
||||
);
|
||||
|
||||
// 1: Training (Zukunft)
|
||||
// 1: Training (Zukunft) — Teil einer Trainingsserie
|
||||
$trainingSeriesId = (string) Str::uuid();
|
||||
$events[] = Event::updateOrCreate(
|
||||
['title' => 'Training nächste Woche', 'team_id' => $team->id, 'start_at' => now()->next('Tuesday')->setTime(17, 0)],
|
||||
[
|
||||
@@ -338,6 +340,7 @@ class DemoDataSeeder extends Seeder
|
||||
'min_players' => 12,
|
||||
'min_catering' => 1,
|
||||
'min_timekeepers' => 1,
|
||||
'event_series_id' => $trainingSeriesId,
|
||||
'description_html' => '<p>Training mit Schwerpunkt Passspiel. Bitte pünktlich kommen!</p>',
|
||||
'created_by' => $admin->id,
|
||||
]
|
||||
@@ -571,6 +574,29 @@ class DemoDataSeeder extends Seeder
|
||||
]
|
||||
);
|
||||
|
||||
// Serien-Folgetermine: 3 weitere Trainings (gleiche event_series_id wie Event 1)
|
||||
for ($i = 1; $i <= 3; $i++) {
|
||||
$tuesday = now()->next('Tuesday')->addWeeks($i);
|
||||
Event::updateOrCreate(
|
||||
['title' => 'Training Dienstag (Serie)', 'team_id' => $team->id, 'start_at' => $tuesday->copy()->setTime(17, 0)],
|
||||
[
|
||||
'type' => EventType::Training,
|
||||
'end_at' => $tuesday->copy()->setTime(18, 30),
|
||||
'status' => EventStatus::Published,
|
||||
'location_name' => $locations[0]->name,
|
||||
'address_text' => $locations[0]->address_text,
|
||||
'location_lat' => $locations[0]->location_lat,
|
||||
'location_lng' => $locations[0]->location_lng,
|
||||
'min_players' => 12,
|
||||
'min_catering' => 1,
|
||||
'min_timekeepers' => 1,
|
||||
'event_series_id' => $trainingSeriesId,
|
||||
'description_html' => '<p>Wöchentliches Training. Bitte <strong>Hallenschuhe</strong> und ausreichend Trinken mitbringen.</p>',
|
||||
'created_by' => $admin->id,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
return $events;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user