- Add registration_banner_url, registration_welcome_text, registration_logo_url columns to events table with migration - Add uploadImage endpoint (POST .../upload-image) with form request validation for banner and logo images (jpg/png/webp, max 5MB) - Include branding fields in EventResource and PublicRegistrationDataController - Build registration settings UI in organizer event settings page with banner/logo upload and welcome text editor - Redesign portal registration page: hero banner with gradient overlay, welcome text card, vertical step navigation (desktop) / horizontal chips (mobile), two-column form fields with density="comfortable" - Update success page with event banner and consistent branding - Seed welcome text for Echt Feesten 2026 - Add 9 PHPUnit tests covering image upload, branding fields in API responses Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
46 lines
1.9 KiB
PHP
46 lines
1.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Resources\Api\V1;
|
|
|
|
use App\Models\Event;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Resources\Json\JsonResource;
|
|
|
|
final class EventResource extends JsonResource
|
|
{
|
|
public function toArray(Request $request): array
|
|
{
|
|
return [
|
|
'id' => $this->id,
|
|
'organisation_id' => $this->organisation_id,
|
|
'parent_event_id' => $this->parent_event_id,
|
|
'name' => $this->name,
|
|
'slug' => $this->slug,
|
|
'start_date' => $this->start_date->toDateString(),
|
|
'end_date' => $this->end_date->toDateString(),
|
|
'timezone' => $this->timezone,
|
|
'status' => $this->status,
|
|
'allowed_transitions' => Event::STATUS_TRANSITIONS[$this->status] ?? [],
|
|
'event_type' => $this->event_type,
|
|
'event_type_label' => $this->event_type_label,
|
|
'sub_event_label' => $this->sub_event_label,
|
|
'is_recurring' => $this->is_recurring,
|
|
'registration_banner_url' => $this->registration_banner_url,
|
|
'registration_welcome_text' => $this->registration_welcome_text,
|
|
'registration_logo_url' => $this->registration_logo_url,
|
|
'is_festival' => $this->resource->isFestival(),
|
|
'is_sub_event' => $this->resource->isSubEvent(),
|
|
'is_flat_event' => $this->resource->isFlatEvent(),
|
|
'has_children' => $this->resource->hasChildren(),
|
|
'created_at' => $this->created_at->toIso8601String(),
|
|
'updated_at' => $this->updated_at->toIso8601String(),
|
|
'children_count' => $this->whenCounted('children'),
|
|
'organisation' => new OrganisationResource($this->whenLoaded('organisation')),
|
|
'parent' => new EventResource($this->whenLoaded('parent')),
|
|
'children' => EventResource::collection($this->whenLoaded('children')),
|
|
];
|
|
}
|
|
}
|