BathHacked/energy-sparks

View on GitHub
app/components/energy_tariffs_component.rb

Summary

Maintainability
A
0 mins
Test Coverage
# Displays a summary of a set of tariffs owned by the same tariff holder
class EnergyTariffsComponent < ViewComponent::Base
  include EnergyTariffsHelper
  delegate :component, :fuel_type_class, :fa_icon, :fuel_type_icon, to: :helpers

  renders_one :header
  renders_one :footer

  def initialize(tariff_holder:, tariff_types:, source: :manually_entered, show_actions: true, show_add_button: true, default_tariffs: false)
    @tariff_holder = tariff_holder
    @tariff_types = tariff_types
    @show_actions = show_actions
    @show_add_button = show_add_button
    @source = source
    @default_tariffs = default_tariffs
  end

  def table_id(meter_type)
    if @default_tariffs
      "default-#{meter_type}-tariffs-table"
    else
      "#{meter_type}-tariffs-table"
    end
  end

  def sorted_tariffs(meter_type)
    if @default_tariffs
      @tariff_holder.energy_tariffs.where(meter_type: meter_type, source: @source, enabled: true).by_start_and_end.by_name.select(&:usable?)
    else
      @tariff_holder.energy_tariffs.where(meter_type: meter_type, source: @source).by_start_and_end.by_name
    end
  end
end