# frozen_string_literal: true require_relative "form_to_h" class ConfigureCallsForm using FormToH def initialize(customer) @customer = customer end def render FormTemplate.render("configure_calls", customer: @customer) end def parse(form) params = form.to_h {}.tap do |result| result[:fwd] = parse_fwd(params["fwd"]) if params.key?("fwd") if params.key?("voicemail_transcription") result[:transcription_enabled] = ["1", "true"].include?(params["voicemail_transcription"]) end result[:lidb_name] = params["lidb_name"] if lidb_guard(params["lidb_name"]) end end protected def lidb_guard(lidb_name) !lidb_name.to_s.strip.empty? && !@customer.tndetails.dig(:features, :lidb) end def parse_fwd(fwd_from_form) fwd_from_form.reduce(@customer.fwd) do |fwd, (var, val)| fwd.with(var.to_sym => val) end end end