1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- module Gql::Queries
- class AutocompleteSearch::Recipient < AutocompleteSearch::User
- description 'Search for recipients'
- argument :input, Gql::Types::Input::AutocompleteSearch::RecipientInputType, required: true, description: 'The input object for the recipient autocomplete search'
- type [Gql::Types::AutocompleteSearch::RecipientEntryType], null: false
- def post_process(results, input:)
- results.flat_map do |user|
- case input[:contact]
- when 'phone'
- user_phone_contacts(user)
- else
- user_email_contact(user)
- end
- end.map { |user| coerce_to_result(user) }
- end
- def coerce_to_result(contact)
- {
- value: contact[:contact],
- label: contact[:contact],
- heading: contact[:name],
- }
- end
- private
- def user_phone_contacts(user)
- contacts = []
- if user.mobile.present?
- contacts.push({
- name: user.fullname,
- contact: user.mobile,
- })
- end
- if user.phone.present?
- contacts.push({
- name: user.fullname,
- contact: user.phone,
- })
- end
- contacts
- end
- def user_email_contact(user)
- return [] if user.email.empty?
- {
- name: user.fullname,
- contact: user.email,
- }
- end
- end
- end
|