# frozen_string_literal: true
require_relative "./form_table"
class UsageReport
def initialize(report_for, messages, minutes)
@report_for = report_for
@messages = messages
@minutes = minutes
end
def ==(other)
report_for == other.report_for &&
messages == other.messages &&
minutes == other.minutes
end
def form
form = Blather::Stanza::X.new(:result)
form.title =
form.instructions =
"Usage from #{report_for.first} to #{report_for.last}"
form_table.add_to_form(form)
form
end
def form_table
total_messages = 0
total_minutes = 0
FormTable.new(
@report_for.first.downto(@report_for.last).map do |day|
total_messages += @messages[day]
total_minutes += @minutes[day]
[day, @messages[day], @minutes[day]]
end + [["Total", total_messages, total_minutes]],
day: "Day", messages: "Messages", minutes: "Minutes"
)
end
protected
attr_reader :report_for, :messages, :minutes
end