refactor(captain): share FAQ suggestion visibility scope

This commit is contained in:
aakashb95
2026-07-21 18:04:39 +05:30
parent 64d2751c06
commit cf417a2f3e
2 changed files with 27 additions and 7 deletions
@@ -58,13 +58,7 @@ class Api::V1::Accounts::Captain::FaqSuggestionsController < Api::V1::Accounts::
end
def set_suggestions
@suggestions = Current.account.captain_faq_suggestions.includes(:assistant).ordered
return if Current.account_user.administrator?
accessible_suggestion_ids = Captain::FaqObservation
.where(conversation_id: accessible_conversations.select(:id))
.select(:faq_suggestion_id)
@suggestions = @suggestions.where(id: accessible_suggestion_ids)
@suggestions = Captain::FaqSuggestionFinder.new(Current.user, Current.account).perform.includes(:assistant).ordered
end
def set_suggestion
@@ -0,0 +1,26 @@
class Captain::FaqSuggestionFinder
def initialize(current_user, current_account)
@current_user = current_user
@current_account = current_account
end
def perform
suggestions = @current_account.captain_faq_suggestions
return suggestions if account_user&.administrator?
accessible_suggestion_ids = Captain::FaqObservation
.where(conversation_id: accessible_conversations.select(:id))
.select(:faq_suggestion_id)
suggestions.where(id: accessible_suggestion_ids)
end
private
def accessible_conversations
Conversations::PermissionFilterService.new(@current_account.conversations, @current_user, @current_account).perform
end
def account_user
@account_user ||= @current_account.account_users.find_by(user_id: @current_user.id)
end
end