Class: ActiveRoad::RequestConditionnalCostLinker

Inherits:
Object
  • Object
show all
Defined in:
app/models/active_road/request_conditionnal_cost_linker.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(constraints = [], external_constraints = {}) ⇒ RequestConditionnalCostLinker

Returns a new instance of RequestConditionnalCostLinker.



5
6
7
# File 'app/models/active_road/request_conditionnal_cost_linker.rb', line 5

def initialize(constraints = [], external_constraints = {})
  @constraints = constraints
end

Instance Attribute Details

#authorized_constraintsObject

Returns the value of attribute authorized_constraints.



3
4
5
# File 'app/models/active_road/request_conditionnal_cost_linker.rb', line 3

def authorized_constraints
  @authorized_constraints
end

#constraintsObject

Returns the value of attribute constraints.



3
4
5
# File 'app/models/active_road/request_conditionnal_cost_linker.rb', line 3

def constraints
  @constraints
end

#unauthorized_constraintsObject

Returns the value of attribute unauthorized_constraints.



3
4
5
# File 'app/models/active_road/request_conditionnal_cost_linker.rb', line 3

def unauthorized_constraints
  @unauthorized_constraints
end

Instance Method Details

#authorized_constraints_intersection_with?(tags) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'app/models/active_road/request_conditionnal_cost_linker.rb', line 29

def authorized_constraints_intersection_with?(tags)
  (authorized_constraints & tags == false || authorized_constraints & tags == []) ? false : true
end

#conditionnal_costs_linked(conditionnal_costs) ⇒ Object



41
42
43
# File 'app/models/active_road/request_conditionnal_cost_linker.rb', line 41

def conditionnal_costs_linked(conditionnal_costs)
  conditionnal_costs.where(:tags => authorized_constraints)
end

#conditionnal_costs_sum(conditionnal_costs) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
# File 'app/models/active_road/request_conditionnal_cost_linker.rb', line 45

def conditionnal_costs_sum(conditionnal_costs)
  conditionnal_costs_tags = conditionnal_costs.collect(&:tags)  
  if linked?(conditionnal_costs_tags)
    if unauthorized_constraints && unauthorized_constraints_intersection_with?(conditionnal_costs_tags)
      return Float::MAX
    else
      return conditionnal_costs_linked(conditionnal_costs).collect(&:cost).sum 
    end
  else
    0
  end
end

#linked?(conditionnal_costs_tags) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'app/models/active_road/request_conditionnal_cost_linker.rb', line 37

def linked?(conditionnal_costs_tags)
  authorized_constraints_intersection_with?(conditionnal_costs_tags) || unauthorized_constraints_intersection_with?(conditionnal_costs_tags)
end

#unauthorized_constraints_intersection_with?(tags) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'app/models/active_road/request_conditionnal_cost_linker.rb', line 33

def unauthorized_constraints_intersection_with?(tags)
  (unauthorized_constraints & tags == false || unauthorized_constraints & tags == []) ? false : true 
end