leadService->assignLead($lead, $agentId, $assignedById); } public function bulkAssign(array $leadIds, int $agentId, int $assignedById): array { $results = []; foreach ($leadIds as $leadId) { $results[] = $this->assignToAgent($leadId, $agentId, $assignedById); } return $results; } public function roundRobin(array $leadIds, array $agentIds, int $assignedById): array { $leads = Lead::whereIn('id', $leadIds)->get(); return $this->leadService->roundRobinAssign($leads, $agentIds, $assignedById); } public function assignByCampaign(int $campaignId, array $agentIds, int $assignedById): array { $leads = Lead::where('campaign_id', $campaignId)->where('is_unassigned', true)->get(); return $this->leadService->roundRobinAssign($leads, $agentIds, $assignedById); } public function returnToPool(int $leadId): Lead { $lead = Lead::findOrFail($leadId); $lead->update([ 'assigned_to' => null, 'assigned_by' => null, 'is_unassigned' => true, ]); ActivityLogger::log('lead_returned_to_pool', "Lead {$leadId} returned to unassigned pool", $lead); return $lead->fresh(); } }