group.rb 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. class CoreWorkflow::Attributes::Group < CoreWorkflow::Attributes::Base
  3. def values
  4. if groups.blank?
  5. ['']
  6. else
  7. groups.pluck(:id)
  8. end
  9. end
  10. def customer_ticket_create_group_ids
  11. Setting.get('customer_ticket_create_group_ids')
  12. end
  13. def groups
  14. @groups ||= if agent_view?
  15. groups_agent
  16. elsif customer_view?
  17. groups_customer
  18. else
  19. groups_default
  20. end
  21. end
  22. def agent_view?
  23. @attributes.payload_class == Ticket && @attributes.user.permissions?('ticket.agent')
  24. end
  25. def customer_view?
  26. @attributes.payload_class == Ticket && @attributes.user.permissions?('ticket.customer') && @attributes.payload['screen'] == 'create_middle' && customer_ticket_create_group_ids.present?
  27. end
  28. def groups_agent
  29. if @attributes.payload['screen'] == 'create_middle'
  30. @attributes.user.groups_access(%w[create])
  31. else
  32. @attributes.user.groups_access(%w[create change])
  33. end
  34. end
  35. def groups_customer
  36. Group.where(id: customer_ticket_create_group_ids, active: true)
  37. end
  38. def groups_default
  39. Group.where(active: true)
  40. end
  41. end