32 lines
988 B
PHP
32 lines
988 B
PHP
<?php
|
|
|
|
namespace App\Shared\Forms\Services;
|
|
|
|
use App\Domains\Core\Tenant\Models\SocialMedia;
|
|
use App\Domains\Core\Tenant\Models\Tenant;
|
|
use App\Domains\Ticketing\Event\Models\Event;
|
|
use Illuminate\Database\Eloquent\Collection;
|
|
|
|
class EventFormService
|
|
{
|
|
/** @return array{social_media: Collection<int, SocialMedia>} */
|
|
public function get(Tenant $tenant, ?int $eventId = null): array
|
|
{
|
|
$event = $eventId === null ? $tenant->activeEvent
|
|
: Event::query()
|
|
->where('tenant_code', $tenant->codigo)->findOrFail($eventId);
|
|
$urls = $event?->socialMedia()
|
|
->pluck('event_social_media.url', 'social_media.code') ?? collect();
|
|
|
|
return [
|
|
'social_media' => SocialMedia::query()
|
|
->orderBy('id')
|
|
->get()
|
|
->each(fn (SocialMedia $item) => $item->setAttribute(
|
|
'url',
|
|
$urls->get($item->code)
|
|
)),
|
|
];
|
|
}
|
|
}
|