diff --git a/enterprise/app/controllers/api/v1/accounts/captain/faq_suggestions_controller.rb b/enterprise/app/controllers/api/v1/accounts/captain/faq_suggestions_controller.rb index 0de68d65d..52df72104 100644 --- a/enterprise/app/controllers/api/v1/accounts/captain/faq_suggestions_controller.rb +++ b/enterprise/app/controllers/api/v1/accounts/captain/faq_suggestions_controller.rb @@ -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 diff --git a/enterprise/app/finders/captain/faq_suggestion_finder.rb b/enterprise/app/finders/captain/faq_suggestion_finder.rb new file mode 100644 index 000000000..070ed72fa --- /dev/null +++ b/enterprise/app/finders/captain/faq_suggestion_finder.rb @@ -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