Why: Both Newsletters and Email Downloads need the same logic: To extract the emails from all the users in the segment that have newsletter flag active, removing all empty email values. How: 1- UserSegments#user_segment_emails holds that repeated logic and is used on both Newsletter & EmailDownload. 2- Rename Newsletter#list_of_recipients to list_of_recipient_emails as it is more descriptive. There is no need to pass entire Users around, only the emails are needed at Mailer#newsletter method. 3- Cleanup Newsletter#list_of_recipient_emails model spec scenario
19 lines
448 B
Ruby
19 lines
448 B
Ruby
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.user_segment_emails(users_segment).join(',')
|
|
end
|
|
end
|