sutty/app/mailers/contact_mailer.rb

39 lines
1 KiB
Ruby

# frozen_string_literal: true
# Formulario de contacto
class ContactMailer < ApplicationMailer
attr_reader :form
# Enviar el formulario de contacto a les usuaries
def notify_usuaries
subject = "[#{site.title}] #{params[:form_name].humanize}"
params[:form_definition] = site.form(params[:form_name])
attachments[params[:form_name] + '.csv'] = generate_csv
mail to: params[:usuaries_emails],
reply_to: params[:form][:from],
subject: subject
end
private
# El CSV es un archivo adjunto con dos filas, una con las etiquetas de
# los campos en la cabecera y otra con los valores.
#
# TODO: Si el sitio tiene muches usuaries esto se genera cada vez.
def generate_csv
csv = ["\xEF\xBB\xBF"]
csv << params[:form].keys.map do |field|
params[:form_definition].t(field)
end.to_csv(col_sep: ';', force_quotes: true)
csv << params[:form].values.to_csv(col_sep: ';', force_quotes: true)
{
mime_type: 'text/csv; charset=utf-8',
content: csv.join
}
end
end