diff options
Diffstat (limited to 'app/graphql/resolvers/crm/contacts_resolver.rb')
-rw-r--r-- | app/graphql/resolvers/crm/contacts_resolver.rb | 21 |
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 |