init push - laying out the project
This commit is contained in:
44
portal/app/mailers/application_mailer.rb
Normal file
44
portal/app/mailers/application_mailer.rb
Normal file
@ -0,0 +1,44 @@
|
||||
class ApplicationMailer < ActionMailer::Base
|
||||
default from: 'info@helpbuild.co'
|
||||
helper MailerStyleHelper
|
||||
layout 'mailer'
|
||||
|
||||
def try_delivering(_options = {})
|
||||
yield
|
||||
true
|
||||
rescue EOFError,
|
||||
IOError,
|
||||
Errno::ECONNRESET,
|
||||
Errno::ECONNABORTED,
|
||||
Errno::EPIPE,
|
||||
Errno::ETIMEDOUT,
|
||||
Net::SMTPAuthenticationError,
|
||||
Net::SMTPServerBusy,
|
||||
Net::SMTPSyntaxError,
|
||||
Net::SMTPUnknownError,
|
||||
OpenSSL::SSL::SSLError => e
|
||||
ExceptionHub.notify(e)
|
||||
false
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def deliver_mail(email, subject, reply_to = nil, to_name = '')
|
||||
addresses = set_addresses_and_user(email: email, to_name: to_name)
|
||||
reply_to = addresses[:from] if reply_to.nil?
|
||||
try_delivering do
|
||||
I18n.with_locale('en') do
|
||||
mail(reply_to: reply_to, from: addresses[:from], to: addresses[:to], subject: "[Helpbuild] | #{subject}")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def set_addresses_and_user(email: '', from_name: 'Helpbuild', to_name: '', from_email: nil)
|
||||
addresses = {}
|
||||
from_email ||= Rails.configuration.action_mailer[:default_options][:from]
|
||||
addresses[:from] = %(#{from_name} <#{from_email}>)
|
||||
addresses[:reply_to] = %(#{from_name} <#{from_email}>)
|
||||
addresses[:to] = %("#{to_name}" <#{email}>)
|
||||
addresses
|
||||
end
|
||||
end
|
76
portal/app/mailers/project_mailer.rb
Normal file
76
portal/app/mailers/project_mailer.rb
Normal file
@ -0,0 +1,76 @@
|
||||
class ProjectMailer < ApplicationMailer
|
||||
layout 'project_mailer'
|
||||
layout false, only: :send_project_invitation
|
||||
|
||||
def helper_join_request(builders, helper)
|
||||
subject = I18n.t('project_join_request', project: helper.project.title)
|
||||
@project_helper = helper
|
||||
@project = helper.project
|
||||
builders.each do |b|
|
||||
@user = b.user
|
||||
deliver_mail(@user.email, subject, reply_to = nil)
|
||||
end
|
||||
end
|
||||
|
||||
def notify_helper_for_join_request(helper)
|
||||
return if helper.builder?
|
||||
subject = I18n.t('project_join_request_response', project: helper.project.title)
|
||||
|
||||
@user = helper.user
|
||||
@project = helper.project
|
||||
@status = helper.status.titlecase
|
||||
|
||||
deliver_mail(@user.email, subject, reply_to = nil)
|
||||
end
|
||||
|
||||
def ask_request_to_helpers(helper, ask)
|
||||
@user = helper.user
|
||||
@project_helper = helper
|
||||
@ask = ask
|
||||
subject = I18n.t('ask_request_to_helpers', project: helper.project.title)
|
||||
@project = helper.project
|
||||
deliver_mail(helper.user.email, subject, reply_to = nil)
|
||||
end
|
||||
|
||||
def notify_builder_ask_status(ask, status, project_helper)
|
||||
@builder = ask.project_helper.user
|
||||
@ask = ask
|
||||
@status = status
|
||||
@project_helper = project_helper
|
||||
@project = ask.project
|
||||
subject = I18n.t('ask_status_to_builder_subject', project: @project.title, ask: ask.title, status: status)
|
||||
deliver_mail(@builder.email, subject, reply_to = nil)
|
||||
end
|
||||
|
||||
def notify_helper_ask_status(ask, status, project_helper)
|
||||
# @builder = ask.project_helper.user
|
||||
# @ask = ask
|
||||
# @status = status
|
||||
# @project_helper = project_helper
|
||||
# @project = ask.project
|
||||
# subject = I18n.t('ask_status_to_builder_subject', project: @project.title, ask: ask.title, status: status)
|
||||
# deliver_mail(project_helper.user.email, subject, reply_to = nil)
|
||||
end
|
||||
|
||||
def notify_announcement(project_helper, announcement)
|
||||
@user = project_helper.user
|
||||
@announcement = announcement
|
||||
@project = project_helper.project
|
||||
subject = I18n.t('announcement_notification', project: announcement.project.title)
|
||||
deliver_mail(project_helper.user.email, subject, reply_to = nil)
|
||||
end
|
||||
|
||||
def notify_monthly_announcement(project)
|
||||
emails = project.project_builders.map {|pb| pb.user.email }
|
||||
subject = I18n.t('monthly_announcement_check', project: project.title)
|
||||
@project = project
|
||||
|
||||
deliver_mail(emails.join(','), subject, reply_to = nil)
|
||||
end
|
||||
|
||||
def send_project_invitation(email, project)
|
||||
@project = project
|
||||
subject = I18n.t('project_invitation_subject', project: project.title, builder_name: project.user.first_name)
|
||||
deliver_mail(email, subject, reply_to = nil)
|
||||
end
|
||||
end
|
21
portal/app/mailers/user_mailer.rb
Normal file
21
portal/app/mailers/user_mailer.rb
Normal file
@ -0,0 +1,21 @@
|
||||
class UserMailer < ApplicationMailer
|
||||
def welcome_email user
|
||||
@user = user
|
||||
subject = I18n.t('welcome_email_subject')
|
||||
deliver_mail(user.email, subject, reply_to = nil, user.fullname)
|
||||
end
|
||||
|
||||
def notify_token_purchase(user, tokens, amount, balance)
|
||||
@user = user
|
||||
subject = I18n.t('token_purchase_confirmation_subject')
|
||||
@body = I18n.t('token_purchase_confirmation_body', tokens: tokens, amount: amount, balance: balance.to_i)
|
||||
deliver_mail(user.email, subject, reply_to = nil, user.fullname)
|
||||
end
|
||||
|
||||
def notify_hourly_unread_activities(user_id, activities_hash)
|
||||
@user = User.find_by(id: user_id)
|
||||
@activities_hash = activities_hash
|
||||
|
||||
deliver_mail(@user.email, '[Helpbuild] Activity Digest Mail', reply_to = nil, @user.fullname)
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user