$this->id, 'lead_id' => $this->lead_id, 'lead' => $this->whenLoaded('lead', fn () => $this->lead?->only(['id', 'first_name', 'last_name', 'company', 'phone'])), 'contact_id' => $this->contact_id, 'contact' => $this->whenLoaded('contact', fn () => $this->contact?->only(['id', 'name', 'role'])), 'contact_phone_id' => $this->contact_phone_id, 'contact_phone' => $this->whenLoaded('contactPhone', fn () => $this->contactPhone?->only(['id', 'phone', 'type', 'status'])), 'user_id' => $this->user_id, 'agent' => $this->whenLoaded('user', fn () => $this->user?->only(['id', 'name'])), 'direction' => $this->direction, 'status' => $this->provider_status === 'completed' || $this->result ? 'completed' : 'pending', 'provider_status' => $this->provider_status, 'phone' => $this->phone, 'duration_seconds' => (int) $this->duration, 'result' => $this->result, 'notes' => $this->notes, 'provider_call_id' => $this->provider_call_id, 'recording_url' => $this->recording_url, 'is_manual' => (bool) $this->is_manual, 'started_at' => optional($this->started_at ?? $this->created_at)->toISOString(), 'ended_at' => optional($this->ended_at)->toISOString(), 'created_at' => optional($this->created_at)->toISOString(), 'updated_at' => optional($this->updated_at)->toISOString(), ]; } }