app/mailers/mailbot.rb
# frozen_string_literal: true
class Mailbot < ApplicationMailer
helper ApplicationHelper
helper ConferenceHelper
default bcc: Rails.configuration.mailbot[:bcc_address],
template_name: 'email_template',
content_type: 'text/html',
to: -> { @user.email },
from: -> { @conference.contact.email }
def registration_mail(conference, user)
@user = user
@conference = conference
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user,
@conference.email_settings.registration_body)
mail(subject: @conference.email_settings.registration_subject)
end
def ticket_confirmation_mail(ticket_purchase)
@ticket_purchase = ticket_purchase
@user = ticket_purchase.user
@conference = ticket_purchase.conference
PhysicalTicket.last(ticket_purchase.quantity).each do |physical_ticket|
pdf = TicketPdf.new(@conference, @user, physical_ticket, @conference.ticket_layout.to_sym,
"ticket_for_#{@conference.short_title}_#{physical_ticket.id}")
attachments["ticket_for_#{@conference.short_title}_#{physical_ticket.id}.pdf"] = pdf.render
end
email_subject = "#{@conference.title} | Ticket Confirmation and PDF!"
email_template = 'ticket_confirmation_template'
if @ticket_purchase.ticket.email_subject.present?
email_subject = @ticket_purchase.render_email_data(@ticket_purchase.ticket.email_subject)
end
if @ticket_purchase.ticket.email_body.present?
@rendered_email_body = @ticket_purchase.render_email_data(@ticket_purchase.ticket.email_body)
email_template = 'custom_ticket_confirmation_template'
end
mail(subject: email_subject, template_name: email_template)
end
def acceptance_mail(event)
@user = event.submitter
@conference = event.program.conference
@speakers = event.speakers.map(&:email)
@email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.accepted_body)
mail(subject: @conference.email_settings.accepted_subject, cc: @speakers)
end
def submitted_proposal_mail(event)
@user = event.submitter
@speakers = event.speakers.map(&:email)
@conference = event.program.conference
@email_body = @conference.email_settings.generate_event_mail(event,
@conference.email_settings.submitted_proposal_body)
mail(subject: @conference.email_settings.submitted_proposal_subject, cc: @speakers)
end
def rejection_mail(event)
@user = event.submitter
@speakers = event.speakers.map(&:email)
@conference = event.program.conference
@email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.rejected_body)
mail(subject: @conference.email_settings.rejected_subject, cc: @speakers)
end
def confirm_reminder_mail(event, user: nil)
@user = user || event.submitter
@conference = event.program.conference
@email_body = @conference.email_settings.generate_event_mail(event,
@conference.email_settings.confirmed_without_registration_body)
mail(subject: @conference.email_settings.confirmed_without_registration_subject)
end
def conference_date_update_mail(conference, user)
@user = user
@conference = conference
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user,
@conference.email_settings.conference_dates_updated_body)
mail(subject: @conference.email_settings.conference_dates_updated_subject)
end
def conference_registration_date_update_mail(conference, user)
@user = user
@conference = conference
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user,
@conference.email_settings.conference_registration_dates_updated_body)
mail(subject: @conference.email_settings.conference_registration_dates_updated_subject)
end
def conference_venue_update_mail(conference, user)
@user = user
@conference = conference
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user,
@conference.email_settings.venue_updated_body)
mail(subject: @conference.email_settings.venue_updated_subject)
end
def conference_schedule_update_mail(conference, user)
@user = user
@conference = conference
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user,
@conference.email_settings.program_schedule_public_body)
mail(bcc: nil,
subject: @conference.email_settings.program_schedule_public_subject)
end
def conference_cfp_update_mail(conference, user)
@user = user
@conference = conference
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user,
@conference.email_settings.cfp_dates_updated_body)
mail(bcc: nil,
subject: @conference.email_settings.cfp_dates_updated_subject)
end
def conference_booths_acceptance_mail(booth)
@user = booth.submitter
@conference = booth.conference
@email_body = @conference.email_settings.generate_booth_mail(booth,
@conference.email_settings.booths_acceptance_body)
mail(bcc: nil,
subject: @conference.email_settings.booths_acceptance_subject)
end
def conference_booths_rejection_mail(booth)
@user = booth.submitter
@conference = booth.conference
@email_body = @conference.email_settings.generate_booth_mail(booth,
@conference.email_settings.booths_rejection_body)
mail(bcc: nil,
subject: @conference.email_settings.booths_rejection_subject)
end
def event_comment_mail(comment, user)
@comment = comment
@event = @comment.commentable
@conference = @event.program.conference
@user = user
mail(bcc: nil,
template_name: 'comment_template',
subject: "New comment has been posted for #{@event.title}")
end
end