Initial commit

This commit is contained in:
2026-02-03 10:38:46 +01:00
commit eb304f4b14
144 changed files with 22605 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
<?php
namespace App\Actions\Events;
use App\Models\Event;
use App\Models\User;
use Illuminate\Support\Str;
class CreateEventAction
{
public function execute(array $data, User $user): Event
{
return \Illuminate\Support\Facades\DB::transaction(function () use ($data, $user) {
$slug = $this->generateUniqueSlug($data['slug'] ?? Str::slug($data['name']));
$data['slug'] = $slug;
$data['user_id'] = $user->id;
$event = new Event($data);
$event->save();
return $event;
});
}
protected function generateUniqueSlug(string $base): string
{
$slug = Str::slug($base);
$original = $slug;
$count = 0;
while (Event::where('slug', $slug)->exists()) {
$count++;
$slug = $original.'-'.$count;
}
return $slug;
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Actions\Events;
use App\Models\Event;
use Illuminate\Support\Str;
class UpdateEventAction
{
public function execute(Event $event, array $data): Event
{
return \Illuminate\Support\Facades\DB::transaction(function () use ($event, $data) {
if (isset($data['slug']) && $data['slug'] !== $event->slug) {
$data['slug'] = $this->generateUniqueSlug($data['slug'], $event->id);
}
$event->update($data);
return $event->fresh();
});
}
protected function generateUniqueSlug(string $base, int $excludeId): string
{
$slug = Str::slug($base);
$original = $slug;
$count = 0;
while (Event::where('slug', $slug)->where('id', '!=', $excludeId)->exists()) {
$count++;
$slug = $original.'-'.$count;
}
return $slug;
}
}