1# frozen_string_literal: true
2
3require_relative "./form_table"
4
5class UsageReport
6 def initialize(report_for, messages, minutes)
7 @report_for = report_for
8 @messages = messages
9 @minutes = minutes
10 end
11
12 def ==(other)
13 report_for == other.report_for &&
14 messages == other.messages &&
15 minutes == other.minutes
16 end
17
18 def form
19 form = Blather::Stanza::X.new(:result)
20 form.title =
21 form.instructions =
22 "Usage from #{report_for.first} to #{report_for.last}"
23 form_table.add_to_form(form)
24 form
25 end
26
27 def form_table
28 total_messages = 0
29 total_minutes = 0
30
31 FormTable.new(
32 @report_for.first.downto(@report_for.last).map { |day|
33 total_messages += @messages[day]
34 total_minutes += @minutes[day]
35 [day, @messages[day], @minutes[day]]
36 } + [["Total", total_messages, total_minutes]],
37 day: "Day", messages: "Messages", minutes: "Minutes"
38 )
39 end
40
41protected
42
43 attr_reader :report_for, :messages, :minutes
44end