# 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 { |day|
				total_messages += @messages[day]
				total_minutes += @minutes[day]
				[day, @messages[day], @minutes[day]]
			} + [["Total", total_messages, total_minutes]],
			day: "Day", messages: "Messages", minutes: "Minutes"
		)
	end

protected

	attr_reader :report_for, :messages, :minutes
end
