Sha256: 0dc9d480cbff5dca194f218be70fa05e83c7590a1c03e97e262baec7029b8f5e

Contents?: true

Size: 1.63 KB

Versions: 6

Compression:

Stored size: 1.63 KB

Contents

module Effective
  class EventsMailer < EffectiveResources.parent_mailer_class
    default from: -> { EffectiveResources.mailer_sender }
    layout -> { EffectiveResources.mailer_layout }

    include EffectiveEmailTemplatesMailer if EffectiveEvents.use_effective_email_templates

    def event_registrant_purchased(event_registrant, opts = {})
      @assigns = assigns_for(event_registrant)
      @event_registrant = event_registrant

      mail(to: event_registrant.email, **headers_for(event_registrant, opts))
    end

    protected

    def headers_for(resource, opts = {})
      resource.respond_to?(:log_changes_datatable) ? opts.merge(log: resource) : opts
    end

    def assigns_for(resource)
      if resource.kind_of?(EventRegistrant)
        return event_registrant_assigns(resource).merge(event_assigns(resource.event)).merge(event_ticket_assigns(resource.event_ticket))
      end

      raise('unexpected resource')
    end

    def event_assigns(resource)
      raise('expected an event') unless resource.kind_of?(Event)

      values = {
        name: resource.title,
        date: resource.start_at.strftime('%F %H:%M'),
        url: effective_events.event_url(resource)
      }

      { event: values }
    end

    def event_ticket_assigns(resource)
      raise('expected an event ticket') unless resource.kind_of?(EventTicket)

      values = { name: resource.title }
      { ticket: values }
    end

    def event_registrant_assigns(resource)
      raise('expected an event registrant') unless resource.kind_of?(EventRegistrant)

      values = { name: resource.name, email: resource.email }
      { registrant: values }
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
effective_events-0.2.5 app/mailers/effective/events_mailer.rb
effective_events-0.2.4 app/mailers/effective/events_mailer.rb
effective_events-0.2.3 app/mailers/effective/events_mailer.rb
effective_events-0.2.2 app/mailers/effective/events_mailer.rb
effective_events-0.2.1 app/mailers/effective/events_mailer.rb
effective_events-0.2.0 app/mailers/effective/events_mailer.rb