diff --git a/app/views/admin/newsletters/show.html.erb b/app/views/admin/newsletters/show.html.erb index 450b12d16..666a27ce3 100644 --- a/app/views/admin/newsletters/show.html.erb +++ b/app/views/admin/newsletters/show.html.erb @@ -4,56 +4,55 @@ <% recipients_count = @newsletter.valid_segment_recipient? ? @newsletter.list_of_recipient_emails.count : 0 %> -
-
- <%= t("admin.newsletters.show.sent_at") %>
- <% if @newsletter.draft? %> - <%= t("admin.newsletters.index.draft") %> - <% else %> - <%= l @newsletter.sent_at.to_date %> - <% end %> -
-
- <%= t("admin.newsletters.show.from") %>
- <%= @newsletter.from %> -
-
- <%= t("admin.newsletters.show.subject") %>
- <%= @newsletter.subject %> -
-
- <%= t("admin.newsletters.show.segment_recipient") %>
- <%= segment_name(@newsletter.segment_recipient) %> - <%= t("admin.newsletters.show.affected_users", n: recipients_count) %> -
- -
- - <%= t("admin.newsletters.show.sent_emails", count: @newsletter.activities.count) %> - -
+
+
+ <%= t("admin.newsletters.show.sent_at") %>
+ <% if @newsletter.draft? %> + <%= t("admin.newsletters.index.draft") %> + <% else %> + <%= l @newsletter.sent_at.to_date %> + <% end %> +
+
+ <%= t("admin.newsletters.show.from") %>
+ <%= @newsletter.from %> +
+
+ <%= t("admin.newsletters.show.subject") %>
+ <%= @newsletter.subject %> +
+
+ <%= t("admin.newsletters.show.segment_recipient") %>
+ <%= segment_name(@newsletter.segment_recipient) %> + <%= t("admin.newsletters.show.affected_users", n: recipients_count) %>
- <%= t("admin.newsletters.show.body") %> -

- <%= t("admin.newsletters.show.body_help_text") %> -

+ + <%= t("admin.newsletters.show.sent_emails", count: @newsletter.activities.count) %> +
+
-
- <%= render file: "app/views/layouts/_mailer_header.html.erb" %> +
+ <%= t("admin.newsletters.show.body") %> +

+ <%= t("admin.newsletters.show.body_help_text") %> +

+
- - - - <%= render file: "app/views/mailer/newsletter.html.erb" %> - - -
+ + + + + <%= render file: "app/views/mailer/newsletter.html.erb" %> + + +
+ + <%= render file: "app/views/layouts/_mailer_footer.html.erb" %>
<% if @newsletter.draft? && @newsletter.valid_segment_recipient? %> diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index 1d7c110f3..762a7d5ce 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -753,6 +753,7 @@ en: segment_recipient: all_users: All users administrators: Administrators + all_proposal_authors: Proposal authors (including archived and retired) proposal_authors: Proposal authors investment_authors: Investment authors in the current budget feasible_and_undecided_investment_authors: "Authors of some investment in the current budget that does not comply with: [valuation finished unfesasible]" diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index 659e0fcb3..b7d2b99bf 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -752,6 +752,7 @@ es: segment_recipient: all_users: Todos los usuarios administrators: Administradores + all_proposal_authors: Usuarios autores de propuestas (incluyendo archivadas y retiradas) proposal_authors: Usuarios autores de propuestas investment_authors: Usuarios autores de proyectos de gasto en los actuales presupuestos feasible_and_undecided_investment_authors: "Usuarios autores de algún proyecto de gasto en los actuales presupuestos que no cumpla: [evaluación finalizada inviable]" diff --git a/lib/user_segments.rb b/lib/user_segments.rb index 045f558a0..bc5419c78 100644 --- a/lib/user_segments.rb +++ b/lib/user_segments.rb @@ -1,12 +1,13 @@ class UserSegments - SEGMENTS = %w(all_users + SEGMENTS = %w[all_users administrators + all_proposal_authors proposal_authors investment_authors feasible_and_undecided_investment_authors selected_investment_authors winner_investment_authors - not_supported_on_current_budget) + not_supported_on_current_budget] def self.all_users User.active @@ -16,6 +17,10 @@ class UserSegments all_users.administrators end + def self.all_proposal_authors + author_ids(Proposal.pluck(:author_id).uniq) + end + def self.proposal_authors author_ids(Proposal.not_archived.not_retired.pluck(:author_id).uniq) end diff --git a/spec/lib/user_segments_spec.rb b/spec/lib/user_segments_spec.rb index 4d1057ddd..ed52dcfe7 100644 --- a/spec/lib/user_segments_spec.rb +++ b/spec/lib/user_segments_spec.rb @@ -27,6 +27,28 @@ describe UserSegments do end end + describe "#all_proposal_authors" do + it "returns users that have created a proposal even if is archived or retired" do + create(:proposal, author: user1) + create(:proposal, :archived, author: user2) + create(:proposal, retired_at: Time.current, author: user3) + + all_proposal_authors = described_class.all_proposal_authors + expect(all_proposal_authors).to include user1 + expect(all_proposal_authors).to include user2 + expect(all_proposal_authors).to include user3 + end + + it "does not return duplicated users" do + create(:proposal, author: user1) + create(:proposal, :archived, author: user1) + create(:proposal, retired_at: Time.current, author: user1) + + all_proposal_authors = described_class.all_proposal_authors + expect(all_proposal_authors).to contain_exactly(user1) + end + end + describe "#proposal_authors" do it "returns users that have created a proposal" do proposal = create(:proposal, author: user1)