Class: DimensionService

Inherits:
Object
  • Object
show all
Defined in:
app/services/dimension_service.rb

Instance Method Summary collapse

Constructor Details

#initialize(model) ⇒ DimensionService

Returns a new instance of DimensionService.



3
4
5
# File 'app/services/dimension_service.rb', line 3

def initialize model
  @model = model
end

Instance Method Details

#available_dimensions(default_dimension) ⇒ Object



33
34
35
36
37
38
39
40
# File 'app/services/dimension_service.rb', line 33

def available_dimensions default_dimension
  available_dimensions = []
  I18n::t('static.dimensions').select do |dimension|
    next if dimension[:id] == default_dimension
    available_dimensions << dimension[:id]
  end
  available_dimensions
end

#calculate_boat_attributes(default_dimension) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/services/dimension_service.rb', line 7

def calculate_boat_attributes default_dimension

  attributes = [:boat_length_metrics, :boat_beam_metrics, :boat_draft_metrics, :boat_gross_tonage]

  available_dimensions(default_dimension).each do |available_dimension|

    # puts "#{available_dimension} #{default_dimension}"
    dimension_value = Dimension::COMPARISON[default_dimension.to_sym][available_dimension.to_sym]

    attributes.each do |attribute|
      attribute_dimension         = attribute.to_s + "_#{available_dimension}"
      attribute_default_dimension = attribute.to_s + "_#{default_dimension}"
      default_dimension_value     = @model.attributes[attribute_default_dimension.downcase]

      if default_dimension_value
        calculated_dimension = default_dimension_value * dimension_value
        @model.send("#{attribute_dimension}=", calculated_dimension)
        # puts "#{default_dimension_value} #{default_dimension} is #{calculated_dimension} #{available_dimension}"
      else
        @model.send("#{attribute_dimension}=", nil)
      end
    end
  end

end