dynamic_field_factory.rb 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. module Import
  2. module OTRS
  3. module DynamicFieldFactory
  4. extend Import::Factory
  5. extend Import::Helper
  6. # rubocop:disable Style/ModuleFunction
  7. extend self
  8. def skip?(record, *_args)
  9. return true if !importable?(record)
  10. return true if skip_field?(record['Name'])
  11. false
  12. end
  13. def backend_class(record, *_args)
  14. "Import::OTRS::DynamicField::#{record['FieldType']}".constantize
  15. end
  16. def skip_field?(dynamic_field_name)
  17. skip_fields.include?(dynamic_field_name)
  18. end
  19. private
  20. def importable?(dynamic_field)
  21. return false if !supported_object_type?(dynamic_field)
  22. supported_field_type?(dynamic_field)
  23. end
  24. def supported_object_type?(dynamic_field)
  25. return true if dynamic_field['ObjectType'] == 'Ticket'
  26. log "ERROR: Unsupported dynamic field object type '#{dynamic_field['ObjectType']}' for dynamic field '#{dynamic_field['Name']}'"
  27. false
  28. end
  29. def supported_field_type?(dynamic_field)
  30. return true if supported_field_types.include?(dynamic_field['FieldType'])
  31. log "ERROR: Unsupported dynamic field field type '#{dynamic_field['FieldType']}' for dynamic field '#{dynamic_field['Name']}'"
  32. false
  33. end
  34. def supported_field_types
  35. %w(Text TextArea Checkbox DateTime Date Dropdown Multiselect)
  36. end
  37. def skip_fields
  38. %w(ProcessManagementProcessID ProcessManagementActivityID ZammadMigratorChanged ZammadMigratorChangedOld)
  39. end
  40. end
  41. end
  42. end