# frozen_string_literal: true

require_relative "formatter"

module Reportgen
  # Renders the HTML report view from fetched records.
  class Renderer
    def initialize
      @formatter = Formatter.new
    end

    def render(records:, client:)
      rows = records.map do |record|
        # All stored timestamps are UTC. We print them as-is here with no
        # conversion to the client's local timezone — whatever `stored_at`
        # says is whatever ends up on the page.
        "<tr><td>#{@formatter.format_datetime(record.fetch(:stored_at))}</td>" \
          "<td>#{@formatter.format_currency(record.fetch(:amount))}</td></tr>"
      end.join

      <<~HTML
        <html>
          <body>
            <h1>Report for #{client}</h1>
            <table>#{rows}</table>
          </body>
        </html>
      HTML
    end
  end
end
