foodcoop-adam/foodsoft

View on GitHub
lib/apple_bar.rb

Summary

Maintainability
A
0 mins
Test Coverage
class AppleBar

  attr_reader :ordergroup

  def initialize(ordergroup)
    @ordergroup = ordergroup
    @group_avg = ordergroup.avg_jobs_per_euro.to_f
    @global_avg = Ordergroup.avg_jobs_per_euro
  end

  # Show group bar in following colors:
  # Green if higher than 100
  # Yellow if lower than 100 an higher than stop_ordering_under option value
  # Red if below stop_ordering_under, the ordergroup isn't allowed to participate in an order anymore
  def group_bar_state
    if apples >= 100
      'success'
    else
      if FoodsoftConfig[:stop_ordering_under].present? and
          apples >= FoodsoftConfig[:stop_ordering_under]
        'warning'
      else
        'danger'
      end
    end
  end

  # Use apples as percentage, but show at least 10 percent
  def group_bar_width
    @ordergroup.apples < 2 ? 2 : @ordergroup.apples
  end

  def mean_order_amount_per_job
    (1/@global_avg).round rescue 0
  end

  def apples
    @apples ||= @ordergroup.apples
  end

  def with_restriction?
    FoodsoftConfig[:stop_ordering_under].present?
  end
end