Class: DataImportCell

Inherits:
ApplicationRecord show all
Defined in:
app/models/data_import_cell.rb

Overview

== Schema Information

Table name: data_import_cells
Database name: primary

id :integer not null, primary key
content :text
data_import_column_id :integer
data_import_row_id :integer

Indexes

data_import_cell_indexes (data_import_column_id,data_import_row_id)
data_import_cells_data_import_row_id_idx (data_import_row_id)

Foreign Keys

fk_rails_... (data_import_column_id => data_import_columns.id) ON DELETE => cascade
fk_rails_... (data_import_row_id => data_import_rows.id) ON DELETE => cascade

Instance Attribute Summary collapse

Belongs to collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ApplicationRecord

ransackable_associations, ransackable_attributes, ransackable_scopes, ransortable_attributes, #to_relation

Methods included from Models::EventPublishable

#publish_event

Instance Attribute Details

#contentObject (readonly)



27
# File 'app/models/data_import_cell.rb', line 27

validates :content, presence: true

Class Method Details

.format_name(str) ⇒ Object



31
32
33
# File 'app/models/data_import_cell.rb', line 31

def self.format_name(str)
  str.split(' ').map(&:capitalize).join(' ') if str
end

Instance Method Details

#data_import_columnDataImportColumn



24
# File 'app/models/data_import_cell.rb', line 24

belongs_to :data_import_column

#data_import_rowDataImportRow



25
# File 'app/models/data_import_cell.rb', line 25

belongs_to :data_import_row

#expand_addressObject



35
36
37
# File 'app/models/data_import_cell.rb', line 35

def expand_address
  data_import_column.expand_address(data_import_cell_ids: [id])
end

#target_valueObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'app/models/data_import_cell.rb', line 39

def target_value
  dds = begin
          data_import_column.data_dictionary_set
        rescue StandardError
          nil
        end
  tv = nil
  if dds
    if dds.data_dictionaries.present?
      tv = begin
             dds.data_dictionaries.detect { |dd| dd.input_value == content }.output_value
           rescue StandardError
             nil
           end
      tv ||= begin
               dds.data_dictionaries.detect { |dd| dd.input_value.blank? }.output_value
             rescue StandardError
               nil
             end # the default
    elsif tv.present?
      case dds.destination
      when 'customer.company_name', 'customer.first_name', 'customer.middle_name', 'customer.last_name', 'contact.first_name', 'contact.middle_name', 'contact.last_name'
        tv = self.class.format_name(tv)
      when 'customer.phone', 'customer.fax'
        tv = tv.scan(/[0-9]/).join('')
      when 'customer.email'
        tv = tv.downcase
      end
    end
  end
  tv ||= content
  tv
end