lib/mindee/product/fr/energy_bill/energy_bill_v1_energy_usages.rb



# frozen_string_literal: true

require_relative 'energy_bill_v1_energy_supplier'
require_relative 'energy_bill_v1_energy_consumer'
require_relative 'energy_bill_v1_subscription'
require_relative 'energy_bill_v1_energy_usage'
require_relative 'energy_bill_v1_taxes_and_contribution'
require_relative 'energy_bill_v1_meter_detail'

module Mindee
  module Product
    module FR
      module EnergyBill
        # Details of energy consumption.
        class EnergyBillV1EnergyUsages < Array
          # Entries.
          # @return [Array<EnergyBillV1EnergyUsage>]
          attr_reader :entries

          # @param prediction [Array]
          # @param page_id [Integer, nil]
          def initialize(prediction, page_id)
            entries = prediction.map do |entry|
              EnergyBill::EnergyBillV1EnergyUsage.new(entry, page_id)
            end
            super(entries)
          end

          # Creates a line of rST table-compliant string separators.
          # @param char [String] Character to use as a separator.
          # @return [String]
          def self.line_items_separator(char)
            out_str = String.new
            out_str << "+#{char * 13}"
            out_str << "+#{char * 38}"
            out_str << "+#{char * 12}"
            out_str << "+#{char * 12}"
            out_str << "+#{char * 10}"
            out_str << "+#{char * 11}"
            out_str << "+#{char * 17}"
            out_str << "+#{char * 12}"
            out_str
          end

          # @return [String]
          def to_s
            return '' if empty?

            lines = map do |entry|
              "\n  #{entry.to_table_line}\n#{self.class.line_items_separator('-')}"
            end.join
            out_str = String.new
            out_str << "\n#{self.class.line_items_separator('-')}\n "
            out_str << ' | Consumption'
            out_str << ' | Description                         '
            out_str << ' | End Date  '
            out_str << ' | Start Date'
            out_str << ' | Tax Rate'
            out_str << ' | Total    '
            out_str << ' | Unit of Measure'
            out_str << ' | Unit Price'
            out_str << " |\n#{self.class.line_items_separator('=')}"
            out_str + lines
          end
        end
      end
    end
  end
end