action); $approvalUserIDs = []; $notifiedUserIDs = []; if (in_array($objectAction, [ObjectAction::APPROVAL_REQUEST, ObjectAction::APPROVED_TO_NEXT_NODE])) { $approvalUserIDs = $this->getApprovedToNextNodeUsers($approval, $action); } if (! in_array($objectAction, [ObjectAction::APPROVAL_REQUEST])) { $notifiedUserIDs = [$approval->created_by]; } return [$approvalUserIDs, $notifiedUserIDs]; } protected function getApprovedToNextNodeUsers(Approval $approval, Action $action) { $approvalFlow = $approval->approvalFlow()->first(); if (! $approvalFlow) { return []; } $nextNode = isset($action->extra_fields['next']) ? $approvalFlow->nodes[$action->extra_fields['next']] : []; return match (ApprovalMode::tryFrom($action->extra_fields['approval_mode'])) { ApprovalMode::ALTERNATIVE_APPROVAL, ApprovalMode::COUNTERSIGNATURE => $nextNode['approval_users'] ?? [], ApprovalMode::SEQUENTIAL_APPROVAL => isset($action->extra_fields['next_sequential_user']) ? [$action->extra_fields['next_sequential_user']] : [], default => [], }; } }