Added EmailsDownload controller and routes
Removed original method to return emails file from Newsletters controller and NewsletterZip class, included `rubyzip` gem that's no longer necessary.
This commit is contained in:
1
Gemfile
1
Gemfile
@@ -41,7 +41,6 @@ gem 'redcarpet', '~> 3.4.0'
|
|||||||
gem 'responders', '~> 2.4.0'
|
gem 'responders', '~> 2.4.0'
|
||||||
gem 'rinku', '~> 2.0.2', require: 'rails_rinku'
|
gem 'rinku', '~> 2.0.2', require: 'rails_rinku'
|
||||||
gem 'rollbar', '~> 2.15.5'
|
gem 'rollbar', '~> 2.15.5'
|
||||||
gem 'rubyzip', '~> 1.2.0'
|
|
||||||
gem 'sass-rails', '~> 5.0', '>= 5.0.4'
|
gem 'sass-rails', '~> 5.0', '>= 5.0.4'
|
||||||
gem 'savon', '~> 2.11.1'
|
gem 'savon', '~> 2.11.1'
|
||||||
gem 'sitemap_generator', '~> 6.0.1'
|
gem 'sitemap_generator', '~> 6.0.1'
|
||||||
|
|||||||
18
app/controllers/admin/emails_download_controller.rb
Normal file
18
app/controllers/admin/emails_download_controller.rb
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
class Admin::EmailsDownloadController < Admin::BaseController
|
||||||
|
def index
|
||||||
|
end
|
||||||
|
|
||||||
|
def generate_csv
|
||||||
|
users_segment = params[:users_segment]
|
||||||
|
filename = t("admin.segment_recipient.#{users_segment}")
|
||||||
|
|
||||||
|
csv_file = users_segment_emails_csv(users_segment)
|
||||||
|
send_data csv_file, filename: "#{filename}.csv"
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def users_segment_emails_csv(users_segment)
|
||||||
|
UserSegments.send(users_segment).pluck(:email).to_csv
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -44,12 +44,6 @@ class Admin::NewslettersController < Admin::BaseController
|
|||||||
redirect_to admin_newsletters_path, notice: t("admin.newsletters.delete_success")
|
redirect_to admin_newsletters_path, notice: t("admin.newsletters.delete_success")
|
||||||
end
|
end
|
||||||
|
|
||||||
def users
|
|
||||||
zip = NewsletterZip.new('emails')
|
|
||||||
zip.create
|
|
||||||
send_file(File.join(zip.path), type: 'application/zip')
|
|
||||||
end
|
|
||||||
|
|
||||||
def deliver
|
def deliver
|
||||||
@newsletter = Newsletter.find(params[:id])
|
@newsletter = Newsletter.find(params[:id])
|
||||||
Mailer.newsletter(@newsletter).deliver_later
|
Mailer.newsletter(@newsletter).deliver_later
|
||||||
|
|||||||
@@ -149,6 +149,10 @@ namespace :admin do
|
|||||||
get :users, on: :collection
|
get :users, on: :collection
|
||||||
end
|
end
|
||||||
|
|
||||||
|
resources :emails_download, only: :index do
|
||||||
|
get :generate_csv, on: :collection
|
||||||
|
end
|
||||||
|
|
||||||
resource :stats, only: :show do
|
resource :stats, only: :show do
|
||||||
get :proposal_notifications, on: :collection
|
get :proposal_notifications, on: :collection
|
||||||
get :direct_messages, on: :collection
|
get :direct_messages, on: :collection
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
require 'zip'
|
|
||||||
class NewsletterZip
|
|
||||||
attr_accessor :filename
|
|
||||||
|
|
||||||
def initialize(filename)
|
|
||||||
@filename = filename
|
|
||||||
end
|
|
||||||
|
|
||||||
def emails
|
|
||||||
User.newsletter.pluck(:email).join("\n")
|
|
||||||
end
|
|
||||||
|
|
||||||
def path
|
|
||||||
Rails.root + "/tmp/#{filename}.zip"
|
|
||||||
end
|
|
||||||
|
|
||||||
def create
|
|
||||||
Zip::File.open(path, Zip::File::CREATE) do |zipfile|
|
|
||||||
zipfile.get_output_stream("#{filename}.txt") do |file|
|
|
||||||
file.write emails
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
Reference in New Issue
Block a user