attachments->map(fn ($attachment) => [ 'id' => $attachment->id, 'file_name' => $attachment->file_name, 'file_path' => $attachment->file_path, 'file_size' => $attachment->file_size, 'mime_type' => $attachment->mime_type, ])->toArray(); $replies = $ticket->relationLoaded('replies') ? $ticket->replies->map(fn ($reply) => ReplyData::fromModel($reply))->toArray() : []; return new self( id: $ticket->id, ticketId: $ticket->ticket_id, userId: $ticket->user_id, userName: $ticket->user->name, connectedAppId: $ticket->connected_app_id, appName: $ticket->connectedApp?->name, issueCategory: $ticket->issue_category, description: $ticket->description, statusId: $ticket->status_id, status: TicketStatusEnum::tryFrom($ticket->status->name), notifiedRoleNames: $ticket->notifiedRoles->pluck('name')->toArray(), notifiedUserNames: $ticket->notifiedUsers->pluck('name')->toArray(), createdAt: $ticket->created_at->toDateTimeString(), attachments: $attachments, assignedUserId: $ticket->assigned_user_id, assignedUserName: $ticket->assignedUser?->name, replies: $replies, ); } }