priority.rb 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. module Import
  3. module OTRS
  4. class Priority
  5. include Import::Helper
  6. include Import::OTRS::Helper
  7. MAPPING = {
  8. ChangeTime: :updated_at,
  9. CreateTime: :created_at,
  10. CreateBy: :created_by_id,
  11. ChangeBy: :updated_by_id,
  12. Name: :name,
  13. ID: :id,
  14. Comment: :note,
  15. }.freeze
  16. def initialize(priority)
  17. import(priority)
  18. end
  19. private
  20. def import(priority)
  21. create_or_update(map(priority))
  22. end
  23. def create_or_update(priority)
  24. return if updated?(priority)
  25. create(priority)
  26. end
  27. def updated?(priority)
  28. @local_priority = ::Ticket::Priority.find_by(id: priority[:id])
  29. return false if !@local_priority
  30. log "update Ticket::Priority.find_by(id: #{priority[:id]})"
  31. @local_priority.update!(priority)
  32. true
  33. end
  34. def create(priority)
  35. log "add Ticket::Priority.find_by(id: #{priority[:id]})"
  36. @local_priority = ::Ticket::Priority.new(priority)
  37. @local_priority.id = priority[:id]
  38. @local_priority.save
  39. reset_primary_key_sequence('ticket_priorities')
  40. end
  41. def ui_color(priority)
  42. return 'high-priority' if ['4 high', '5 very high'].include?(priority['Name'])
  43. return 'low-priority' if ['2 low', '1 very low'].include?(priority['Name'])
  44. nil
  45. end
  46. def ui_icon(priority)
  47. return 'important' if ['4 high', '5 very high'].include?(priority['Name'])
  48. return 'low-priority' if ['2 low', '1 very low'].include?(priority['Name'])
  49. nil
  50. end
  51. def map(priority)
  52. {
  53. created_by_id: 1,
  54. updated_by_id: 1,
  55. ui_color: ui_color(priority),
  56. ui_icon: ui_icon(priority),
  57. active: active?(priority),
  58. }
  59. .merge(from_mapping(priority))
  60. end
  61. end
  62. end
  63. end