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