Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/graphql/resolvers/crm/contacts_resolver.rb')
-rw-r--r--app/graphql/resolvers/crm/contacts_resolver.rb21
1 files changed, 19 insertions, 2 deletions
diff --git a/app/graphql/resolvers/crm/contacts_resolver.rb b/app/graphql/resolvers/crm/contacts_resolver.rb
index 58d0e2ce13d..a93942cf93b 100644
--- a/app/graphql/resolvers/crm/contacts_resolver.rb
+++ b/app/graphql/resolvers/crm/contacts_resolver.rb
@@ -10,6 +10,11 @@ module Resolvers
type Types::CustomerRelations::ContactType, null: true
+ argument :sort, Types::CustomerRelations::ContactSortEnum,
+ description: 'Criteria to sort contacts by.',
+ required: false,
+ default_value: { field: 'last_name', direction: :asc }
+
argument :search, GraphQL::Types::String,
required: false,
description: 'Search term to find contacts with.'
@@ -24,13 +29,25 @@ module Resolvers
def resolve(**args)
args[:ids] = resolve_ids(args.delete(:ids))
-
- ::Crm::ContactsFinder.new(current_user, { group: group }.merge(args)).execute
+ args.delete(:state) if args[:state] == :all
+
+ contacts = ::Crm::ContactsFinder.new(current_user, { group: group }.merge(args)).execute
+ if needs_offset?(args)
+ offset_pagination(contacts)
+ else
+ contacts
+ end
end
def group
object.respond_to?(:sync) ? object.sync : object
end
+
+ private
+
+ def needs_offset?(args)
+ args.key?(:sort) && args[:sort][:field] == 'organization'
+ end
end
end
end