Commit 8fa3d4d0 authored by mgabdev's avatar mgabdev

Added emails for reminding past PRO members to upgrade again

• Added:
- emails for reminding past PRO members to upgrade again
parent 8f57514b
......@@ -17,6 +17,35 @@ class UserMailer < Devise::Mailer
end
end
def remind_expired_pro(user, date_range)
@date_range = date_range
valid_date_ranges = ['7', '16', '30', '45', '60', '75', '90']
return unless valid_date_ranges.include?(@date_range)
@resource = user
return if @resource.disabled?
subject = "Renew GabPRO Today"
case @date_range
when '16'
subject = "Gab’s Mission"
when '30'
subject = "GabPRO Membership"
when '45'
subject = "Renew GabPRO"
when '60'
subject = "Gab Depends On People Like You"
when '75'
subject = "Free Speech Online Powered By You"
when '90'
subject = "Defend Freedom Online With Us"
end
I18n.with_locale(@resource.locale || I18n.default_locale) do
mail to: @resource.email, subject: subject
end
end
def confirmation_instructions(user, token, **)
@resource = user
@token = token
......
%tr
%td{:align => "center", :style => ""}
%h1{:style => "margin:0;font-weight:bold;font-size:20px;color:#444;text-align:center;"}= "Hello " + @resource.account.username
%tr
%td{:align => "center", :cellspacing => "0", :style => "vertical-align:middle"}
%table
%tbody
%tr
%p{:style => "font-size:16px;color:#444;margin:15px 0;text-align:left;"}
%span Your GabPRO membership expired
- if @date_range == '7'
%span last week.
- elsif @date_range == '16'
%span a few weeks ago.
- elsif @date_range == '30'
%span last month.
- elsif @date_range == '45'
%span about a month ago.
- elsif @date_range == '60'
%span two months ago.
- elsif @date_range == '75'
%span a couple months ago.
- elsif @date_range == '90'
%span a few months ago.
- else
%span recently.
%tr
%td{:align => "center", :cellspacing => "0", :style => "vertical-align:middle"}
%table
%tbody
%tr
%p{ :style => "margin:0 0 15px 0;text-align:left;" }
- if ['7', '30', '60'].include?(@date_range)
%span{ :style => "font-size:16px;color:#444;text-align:left;" } Thank you so much for supporting our mission of defending free speech online. We hope you please consider renewing your membership. Gab is 100% funded by people like you.
- elsif ['16', '45', '75'].include?(@date_range)
%span{ :style => "font-size:16px;color:#444;text-align:left;" } Gab is 100% funded by people like you, not special interests or big corporate advertisers. Your GabPRO membership has been expired, but we hope you'll please consider upgrading to GabPRO again today. We depend on people like you to help us keep building and to cover operational costs. Thank you for being a valued member of the Gab community!
- else
%span{ :style => "font-size:16px;color:#444;text-align:left;" } Your GabPRO subscription has been expired for a while now, but we hope you'll please consider upgrading to GabPRO again today. We depend on people like you to help us keep building and to cover operational costs.
%p{ :style => "margin:0 0 15px 0;text-align:left;" }
%span{ :style => "font-size:16px;color:#444;text-align:left;" } If you have any questions or need help with anything please feel free to reach out anytime: support@gab.com
%p{ :style => "margin:0 0 15px 0;text-align:left;" }
%span{ :style => "font-size:16px;color:#444;text-align:left;" } Go to
= link_to "https://pro.gab.com", "https://pro.gab.com", :style => "color:#30CE7D;font-size:16px;font-weight:600;text-decoration:underline;"
%span{ :style => "font-size:16px;color:#444;text-align:left;" } to renew your membership.
%tr
%td{:align => "center", :cellspacing => "0", :style => "vertical-align:middle;padding-top:10px;padding-bottom:30px;"}
%table{ align: 'center', cellspacing: 0, cellpadding: 0 }
%tbody
%tr
%td{ :style => "background-color:#30CE7D;height:56px;border-radius:9999px;color:#fff;" }
= link_to "Renew GabPRO", "https://pro.gab.com", :style => "height:56px;padding:20px 30px;text-decoration:none;color:#fff;font-size:16px;margin:0;"
<%= "Hello " + @resource.account.username %>
<% if @date_range == '7' %>
Your GabPRO membership expired last week.
<% elsif @date_range == '16' %>
Your GabPRO membership expired last month.
<% else %>
Your GabPRO membership expired last week.
<% end %>
<% if ['7', '30', '60'].include?(@date_range) %>
Thank you so much for supporting our mission of defending free speech online. We hope you please consider renewing your membership. Gab is 100% funded by people like you.
<% elsif ['16', '45', '75'].include?(@date_range) %>
Gab is 100% funded by people like you, not special interests or big corporate advertisers. Your GabPRO membership has been expired, but we hope you'll please consider upgrading to GabPRO again today. We depend on people like you to help us keep building and to cover operational costs. Thank you for being a valued member of the Gab community!
<% else %>
Your GabPRO subscription has been expired for a while now, but we hope you'll please consider upgrading to GabPRO again today. We depend on people like you to help us keep building and to cover operational costs.
<% end %>
If you have any questions or need help with anything please feel free to reach out anytime: support@gab.com
===
Go to PRO.GAB.COM to renew your membership
https://pro.gab.com
\ No newline at end of file
# frozen_string_literal: true
class RemindExpiredAccountProWorker
include Sidekiq::Worker
sidekiq_options queue: 'mailers', retry: 2
attr_reader :user
def perform(acct_id, date_range)
@acct = Account.find(acct_id)
deliver_email(date_range)
end
private
def deliver_email(date_range)
UserMailer.remind_expired_pro(@acct.user, date_range).deliver_now!
@acct.user.touch(:last_emailed_at)
end
end
# frozen_string_literal: true
class Scheduler::RemindExpiredProScheduler
include Sidekiq::Worker
sidekiq_options retry: 1
def perform
expired_accounts(8.days.ago, 7.days.ago).find_each do |acct|
RemindExpiredAccountProWorker.perform_async(acct.id, '7')
end
expired_accounts(17.days.ago, 16.days.ago).find_each do |acct|
RemindExpiredAccountProWorker.perform_async(acct.id, '16')
end
expired_accounts(31.days.ago, 30.days.ago).find_each do |acct|
RemindExpiredAccountProWorker.perform_async(acct.id, '30')
end
expired_accounts(46.days.ago, 45.days.ago).find_each do |acct|
RemindExpiredAccountProWorker.perform_async(acct.id, '45')
end
expired_accounts(61.days.ago, 60.days.ago).find_each do |acct|
RemindExpiredAccountProWorker.perform_async(acct.id, '60')
end
expired_accounts(76.days.ago, 75.days.ago).find_each do |acct|
RemindExpiredAccountProWorker.perform_async(acct.id, '75')
end
expired_accounts(91.days.ago, 90.days.ago).find_each do |acct|
RemindExpiredAccountProWorker.perform_async(acct.id, '90')
end
end
private
def expired_accounts(start_date, end_date)
Account.where('is_pro=FALSE AND pro_expires_at BETWEEN ? AND ?', start_date, end_date)
end
end
......@@ -6,6 +6,9 @@
- [mailers, 2]
- [pull]
:schedule:
remind_expired_pro_scheduler:
cron: '0 8 * * *'
class: Scheduler::RemindExpiredProScheduler
expiring_pro_scheduler:
cron: '0 7 * * *'
class: Scheduler::ExpiringProScheduler
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment