Skip to content

Commit

Permalink
Merge pull request #1 from UsabiTeam/user_report
Browse files Browse the repository at this point in the history
User reports functionallity in emails download area
  • Loading branch information
AdanAlonso committed Aug 2, 2018
2 parents 9595583 + 3f6c325 commit 61ca0ca
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 1 deletion.
27 changes: 27 additions & 0 deletions app/controllers/custom/admin/emails_download_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class Admin::EmailsDownloadController < Admin::BaseController
def index
end

def generate_csv
users_segment = params[:users_segment]
filename = t("admin.segment_recipient.#{users_segment}")
case users_segment
when 'newsletter_users_list'
csv_file = newsletter_users_list_csv
else
csv_file = users_segment_emails_csv(users_segment)
end
send_data csv_file, filename: "#{filename}.csv"
end

private

def users_segment_emails_csv(users_segment)
UserSegments.user_segment_emails(users_segment).join(',')
end

def newsletter_users_list_csv
UserSegments.to_csv
end

end
18 changes: 17 additions & 1 deletion config/locales/custom/es/admin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ es:
destroy: Eliminar Tema
index:
add_tag: Añade un nuevo tema para iniciativas ciudadanas
title: Temas de iniciativas ciudadanas
title: Temas de iniciativas ciudadanas
mark_as_featured: Proponer tema al crear iniciativa ciudadana
name:
placeholder: Escribe el nombre del tema
Expand Down Expand Up @@ -340,3 +340,19 @@ es:
check: Seleccionar
newsletters:
empty_email: '<usuario borrado>'
newsletters_users: 'Lista de Usuarios'
csv:
id: 'Id Usuario'
email: 'Correo'
state: 'Estado'
phone_and_home: 'Residencia y Movil'
confirmed: 'confirmed'
confirmed_phone: 'sms_verificado'
residence_verified: 'residencia_verificada'
state_residence_and_phone: 'Residencia y movil'
state_residence: 'Residencia'
state_email: 'Email confirmado'
state_created: 'Alta'
n_iniciativas: 'Num. iniciativas'
segment_recipient:
newsletter_users_list: 'Lista de usuarios de Newsletter'
60 changes: 60 additions & 0 deletions lib/custom/user_segments.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
require_dependency Rails.root.join('lib', 'user_segments').to_s
class UserSegments
require 'csv'
SEGMENTS = %w(all_users
administrators
proposal_authors
investment_authors
feasible_and_undecided_investment_authors
selected_investment_authors
winner_investment_authors
not_supported_on_current_budget
newsletter_users_list)

def self.to_csv
CSV.generate(headers: true) do |csv|
csv << headers
UserSegments.all_users.each { |user| csv << csv_values(user) }
end
end

private

def self.headers
[
I18n.t('admin.newsletters.csv.id'),
I18n.t('admin.newsletters.csv.email'),
I18n.t('admin.newsletters.csv.state_created'),
I18n.t('admin.newsletters.csv.state'),
I18n.t('admin.newsletters.csv.confirmed'),
I18n.t('admin.newsletters.csv.phone_and_home'),
I18n.t('admin.newsletters.csv.confirmed_phone'),
I18n.t('admin.newsletters.csv.n_iniciativas')
]
end

def self.csv_values(user)
[
user.id.to_s,
user.email.to_s,
user.created_at.to_s,
user_state(user),
user.confirmed?,
user.residence_verified?,
user.sms_verified?,
user.proposals.count.to_s
]
end

def self.user_state(u)
if u.sms_verified?
I18n.t('admin.newsletters.csv.state_residence_and_phone')
elsif u.residence_verified?
I18n.t('admin.newsletters.csv.state_residence')
elsif u.confirmed?
I18n.t('admin.newsletters.csv.state_email')
elsif u.created_at?
I18n.t('admin.newsletters.csv.state_created')
end
end
end

0 comments on commit 61ca0ca

Please sign in to comment.