1# frozen_string_literal: true
 2
 3require_relative "form_to_h"
 4
 5class ConfigureCallsForm
 6	using FormToH
 7
 8	def initialize(customer)
 9		@customer = customer
10	end
11
12	def render
13		FormTemplate.render("configure_calls", customer: @customer)
14	end
15
16	def parse(form)
17		params = form.to_h
18		{}.tap do |result|
19			result[:fwd] = parse_fwd(params["fwd"]) if params.key?("fwd")
20			if params.key?("voicemail_transcription")
21				result[:transcription_enabled] =
22					["1", "true"].include?(params["voicemail_transcription"])
23			end
24			result[:lidb_name] = params["lidb_name"].strip if lidb_guard(params)
25		end
26	end
27
28protected
29
30	def lidb_guard(params)
31		!params["lidb_name"].to_s.strip.empty? &&
32			!@customer.tndetails.dig(:features, :lidb)
33	end
34
35	def parse_fwd(fwd_from_form)
36		@customer.fwd.with(fwd_from_form.each_with_object({}) { |(var, val), args|
37			args[var.to_sym] =
38				var == "voicemail_enabled" ? ["1", "true"].include?(val) : val&.strip
39		})
40	end
41end