1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- module Import
- class Zendesk
- module ObjectAttribute
- class Base
- def initialize(object, name, attribute)
- initialize_data_option(attribute)
- init_callback(attribute)
- add(object, name, attribute)
- end
- private
- def init_callback(_attribute); end
- def add(object, name, attribute)
- ObjectManager::Attribute.add( attribute_config(object, name, attribute) )
- ObjectManager::Attribute.migration_execute(false)
- rescue
- # rubocop:disable Style/SpecialGlobalVars
- raise $!, "Problem with ObjectManager Attribute '#{name}': #{$!}", $!.backtrace
- # rubocop:enable Style/SpecialGlobalVars
- end
- def attribute_config(object, name, attribute)
- {
- object: object.to_s,
- name: name,
- display: attribute.title,
- data_type: data_type(attribute),
- data_option: @data_option,
- editable: !attribute.removable,
- active: attribute.active,
- screens: screens(attribute),
- position: attribute.position,
- created_by_id: 1,
- updated_by_id: 1,
- }
- end
- def screens(attribute)
- config = {
- view: {
- '-all-' => {
- shown: true,
- },
- }
- }
- return config if !attribute.visible_in_portal && attribute.required_in_portal
- {
- edit: {
- Customer: {
- shown: attribute.visible_in_portal,
- null: !attribute.required_in_portal,
- },
- }.merge(config)
- }
- end
- def initialize_data_option(attribute)
- @data_option = {
- null: !attribute.required,
- note: attribute.description,
- }
- end
- def data_type(attribute)
- attribute.type
- end
- end
- end
- end
- end
|