Class: Workarea::StatusCalculator

Inherits:
Object
  • Object
show all
Defined in:
app/models/workarea/status_calculator.rb

Overview

TODO: for v4, remove @order, as this can be/is used with other classes.

Defined Under Namespace

Modules: Status

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(calculators, model) ⇒ StatusCalculator

Returns a new instance of StatusCalculator.



22
23
24
25
# File 'app/models/workarea/status_calculator.rb', line 22

def initialize(calculators, model)
  @calculators = calculators
  @order = @model = model
end

Instance Attribute Details

#calculatorsObject (readonly)

Returns the value of attribute calculators.



20
21
22
# File 'app/models/workarea/status_calculator.rb', line 20

def calculators
  @calculators
end

#modelObject (readonly)

Returns the value of attribute model.



20
21
22
# File 'app/models/workarea/status_calculator.rb', line 20

def model
  @model
end

#orderObject (readonly)

Returns the value of attribute order.



20
21
22
# File 'app/models/workarea/status_calculator.rb', line 20

def order
  @order
end

Instance Method Details

#resultObject



27
28
29
30
31
32
# File 'app/models/workarea/status_calculator.rb', line 27

def result
  status = calculators.detect { |c| c.new(@model).in_status? } ||
            calculators.first

  status.name.demodulize.underscore.to_sym
end

#resultsObject



34
35
36
37
38
# File 'app/models/workarea/status_calculator.rb', line 34

def results
  calculators
    .select { |c| c.new(@model).in_status? }
    .map { |status| status.name.demodulize.underscore.to_sym }
end