BathHacked/energy-sparks

View on GitHub
app/controllers/mailchimp_signups_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
class MailchimpSignupsController < ApplicationController
  skip_before_action :authenticate_user!

  def new
    @config = mailchimp_signup_params(params)
    @onboarding_complete = params[:onboarding_complete]
    @list = mailchimp_api.list_with_interests
  rescue => e
    flash[:error] = 'Mailchimp API is not configured'
    Rails.logger.error "Mailchimp API is not configured - #{e.message}"
    Rollbar.error(e)
  end

  def index
  end

  def create
    list_id = params[:list_id]
    @config = mailchimp_signup_params(params)
    if @config.valid?
      begin
        mailchimp_api.subscribe(list_id, @config)
        redirect_to mailchimp_signups_path and return
      rescue MailchimpApi::Error => e
        flash[:error] = e.message
      end
    else
      flash[:error] = @config.errors.full_messages.join(', ')
    end

    @list = mailchimp_api.list_with_interests
    render :new
  end

  private

  def mailchimp_api
    @mailchimp_api ||= MailchimpApi.new
  end

  def mailchimp_signup_params(params)
    MailchimpSignupParams.new(
      email_address: params[:email_address],
      tags: params[:tags],
      interests: params[:interests],
      merge_fields: params[:merge_fields]
    )
  end
end