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