12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- module Import
- module OTRS
- class Priority
- include Import::Helper
- include Import::OTRS::Helper
- MAPPING = {
- ChangeTime: :updated_at,
- CreateTime: :created_at,
- CreateBy: :created_by_id,
- ChangeBy: :updated_by_id,
- Name: :name,
- ID: :id,
- Comment: :note,
- }.freeze
- def initialize(priority)
- import(priority)
- end
- private
- def import(priority)
- create_or_update(map(priority))
- end
- def create_or_update(priority)
- return if updated?(priority)
- create(priority)
- end
- def updated?(priority)
- @local_priority = ::Ticket::Priority.find_by(id: priority[:id])
- return false if !@local_priority
- log "update Ticket::Priority.find_by(id: #{priority[:id]})"
- @local_priority.update!(priority)
- true
- end
- def create(priority)
- log "add Ticket::Priority.find_by(id: #{priority[:id]})"
- @local_priority = ::Ticket::Priority.new(priority)
- @local_priority.id = priority[:id]
- @local_priority.save
- reset_primary_key_sequence('ticket_priorities')
- end
- def ui_color(priority)
- return 'high-priority' if ['4 high', '5 very high'].include?(priority['Name'])
- return 'low-priority' if ['2 low', '1 very low'].include?(priority['Name'])
- nil
- end
- def ui_icon(priority)
- return 'important' if ['4 high', '5 very high'].include?(priority['Name'])
- return 'low-priority' if ['2 low', '1 very low'].include?(priority['Name'])
- nil
- end
- def map(priority)
- {
- created_by_id: 1,
- updated_by_id: 1,
- ui_color: ui_color(priority),
- ui_icon: ui_icon(priority),
- active: active?(priority),
- }
- .merge(from_mapping(priority))
- end
- end
- end
- end
|