init push - laying out the project

This commit is contained in:
Mike Sutton
2022-11-12 02:27:46 +01:00
commit 14e163a1a5
183 changed files with 20069 additions and 0 deletions

View 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

View 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

View 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