Event addons bookable

This commit is contained in:
2026-08-12 16:45:02 +02:00
parent e95de52768
commit 0ee952212b
25 changed files with 656 additions and 24 deletions
+2
View File
@@ -88,6 +88,7 @@ class Event extends InstancedModel
'tax_exemption_reason',
'tax_exemption_note',
'participation_options',
'addons',
];
@@ -117,6 +118,7 @@ class Event extends InstancedModel
'vat_rate' => 'integer',
'participation_options' => 'array',
'addons' => 'array',
];
public function tenant(): BelongsTo
+6
View File
@@ -110,6 +110,12 @@ class EventParticipant extends InstancedModel
return $this->hasMany(EventParticipantOption::class, 'event_participant_id');
}
/** Gebuchte Zusätze (Event-Addons) dieser Anmeldung. */
public function selectedAddons(): HasMany
{
return $this->hasMany(EventParticipantAddon::class, 'event_participant_id');
}
public function user()
{
return $this->belongsTo(User::class);
+41
View File
@@ -0,0 +1,41 @@
<?php
namespace App\Models;
use App\Casts\AmountCast;
use App\Scopes\InstancedModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class EventParticipantAddon extends InstancedModel
{
protected $table = 'event_participant_addons';
protected $fillable = [
'tenant',
'event_id',
'event_participant_id',
'addon_key',
'title',
'price',
'flat',
'days',
'amount',
];
protected $casts = [
'flat' => 'boolean',
'days' => 'integer',
'price' => AmountCast::class,
'amount' => AmountCast::class,
];
public function event(): BelongsTo
{
return $this->belongsTo(Event::class);
}
public function participant(): BelongsTo
{
return $this->belongsTo(EventParticipant::class, 'event_participant_id');
}
}