diff --git a/app/mailers/mailer.rb b/app/mailers/mailer.rb
index 188de029b..7e8970c61 100644
--- a/app/mailers/mailer.rb
+++ b/app/mailers/mailer.rb
@@ -91,6 +91,24 @@ class Mailer < ApplicationMailer
end
end
+ def budget_investment_selected(investment)
+ @investment = investment
+ @author = investment.author
+
+ with_user(@author) do
+ mail(to: @author.email, subject: t('mailers.budget_investment_selected.subject', code: @investment.code))
+ end
+ end
+
+ def budget_investment_unselected(investment)
+ @investment = investment
+ @author = investment.author
+
+ with_user(@author) do
+ mail(to: @author.email, subject: t('mailers.budget_investment_unselected.subject', code: @investment.code))
+ end
+ end
+
private
def with_user(user, &block)
diff --git a/app/models/budget.rb b/app/models/budget.rb
index 5b2cdc558..a5932921c 100644
--- a/app/models/budget.rb
+++ b/app/models/budget.rb
@@ -113,6 +113,18 @@ class Budget < ActiveRecord::Base
end
end
+ def email_selected
+ investments.selected.each do |investment|
+ Mailer.budget_investment_selected(investment).deliver_later
+ end
+ end
+
+ def email_unselected
+ investments.unselected.each do |investment|
+ Mailer.budget_investment_unselected(investment).deliver_later
+ end
+ end
+
private
def sanitize_descriptions
diff --git a/app/views/mailer/budget_investment_selected.html.erb b/app/views/mailer/budget_investment_selected.html.erb
index 76d49acba..dce8fcc0d 100644
--- a/app/views/mailer/budget_investment_selected.html.erb
+++ b/app/views/mailer/budget_investment_selected.html.erb
@@ -12,7 +12,7 @@
<%= t("mailers.budget_investment_selected.share",
url: link_to(t("mailers.budget_investment_selected.share_url"),
- namespaced_budget_investment_path(@investment), style: "color: #2895F1; text-decoration: underline;")) %>
+ budget_url(@investment.budget), style: "color: #2895F1; text-decoration: underline;")) %>
diff --git a/app/views/mailer/budget_investment_unselected.html.erb b/app/views/mailer/budget_investment_unselected.html.erb
index 8d796381a..12762effc 100644
--- a/app/views/mailer/budget_investment_unselected.html.erb
+++ b/app/views/mailer/budget_investment_unselected.html.erb
@@ -12,7 +12,7 @@
<%= t("mailers.budget_investment_unselected.participate",
url: link_to(t("mailers.budget_investment_unselected.participate_url"),
- new_budget_investment_url(@investment.budget), style: "color: #2895F1; text-decoration: underline;")) %>
+ budget_url(@investment.budget), style: "color: #2895F1; text-decoration: underline;")) %>
diff --git a/config/locales/mailers.en.yml b/config/locales/mailers.en.yml
index 9d5c74c8e..fa752c42c 100755
--- a/config/locales/mailers.en.yml
+++ b/config/locales/mailers.en.yml
@@ -84,21 +84,21 @@ en:
subject: "Your investment project '%{code}' has been marked as unfeasible"
unfeasible_html: "From the City Council we want to thank you for your participation in the participatory budgets. We regret to inform you that your investment '%{title}' will be excluded from this participatory process for the following reason:"
budget_investment_selected:
- subject: "Tu propuesta de inversión '%{code}' ha sido seleccionada"
- hi: "Estimado usuario,"
- selected_html: "Desde el Ayuntamiento queremos agradecer tu participación en los Presupuestos Participativos. Queremos informarte de que tu proyecto '%{title}' ha sido seleccionado y pasa a la fase de votación final que tiene lugar desde el 15 de mayo hasta el 30 de junio."
- share: "Te invitamos a que %{url} en redes sociales para promocionarlo y conseguir más votos."
- share_url: "compartas tu proyecto de gasto"
- share_button: "Comparte tu proyecto"
- thanks: "Gracias de nuevo por tu participación."
- sincerely: "Atentamente"
- signatory: "DIRECCIÓN GENERAL DE PARTICIPACIÓN CIUDADANA"
+ subject: "Your investment project '%{code}' has been selected"
+ hi: "Dear user,"
+ selected_html: "From the City Council we want to thank you for your participation in the participatory budgets. We would like to inform you that your investment project '%{title}' has been selected for the final voting phase that will happen from May 15th to June 30th."
+ share: "We invite you to %{url} in social networks to promote it and achieve more votes."
+ share_url: "share your investment project"
+ share_button: "Share your investment project"
+ thanks: "Thank you again for participating."
+ sincerely: "Sincererly"
+ signatory: "DEPARTMENT OF PUBLIC PARTICIPATION"
budget_investment_unselected:
- subject: "Tu propuesta de inversión '%{code}' no ha sido seleccionada"
- hi: "Estimado usuario,"
- unselected_html: "Desde el Ayuntamiento queremos agradecer tu participación en los Presupuestos Participativos. Lamentamos informarte de que tu proyecto '%{title}' no ha sido seleccionado para la fase de votación final."
- participate: "De todas formas te invitamos a que %{url} votando otros proyectos desde el 15 de mayo hasta el 30 de junio."
- participate_url: "participes en la votación final"
- thanks: "Gracias de nuevo por tu participación."
- sincerely: "Atentamente"
- signatory: "DIRECCIÓN GENERAL DE PARTICIPACIÓN CIUDADANA"
\ No newline at end of file
+ subject: "Your investment project '%{code}' has not been selected"
+ hi: "Dear user,"
+ unselected_html: "From the City Council we want to thank you for your participation in the participatory budgets. We regret to inform you that your investment project '%{title}' has not been selected for the final voting phase."
+ participate: "You can continue participating in the final voting phase voting for investments projects from May 15th to June 30th."
+ participate_url: "participate in the final voting"
+ thanks: "Thank you again for participating."
+ sincerely: "Sincererly"
+ signatory: "DEPARTMENT OF PUBLIC PARTICIPATION"
\ No newline at end of file
diff --git a/config/locales/mailers.es.yml b/config/locales/mailers.es.yml
index 0e1bbd992..84ec31796 100644
--- a/config/locales/mailers.es.yml
+++ b/config/locales/mailers.es.yml
@@ -75,8 +75,8 @@ es:
unfeasible_html: "Desde el Ayuntamiento queremos agradecer tu participación en los Presupuestos Participativos. Lamentamos informarte de que tu proyecto '%{title}' quedará excluido de este proceso participativo por el siguiente motivo:"
budget_investment_selected:
subject: "Tu propuesta de inversión '%{code}' ha sido seleccionada"
- hi: "Estimado usuario,"
- selected_html: "Desde el Ayuntamiento queremos agradecer tu participación en los Presupuestos Participativos. Queremos informarte de que tu proyecto '%{title}' ha sido seleccionado y pasa a la fase de votación final que tiene lugar desde el 15 de mayo hasta el 30 de junio."
+ hi: "Estimado/a usuario/a"
+ selected_html: "Desde el Ayuntamiento de Madrid agradecemos que hayas participado con tu idea en los Presupuestos Participativos. Te invitamos de que tu proyecto '%{title}' ha sido seleccionado y pasa a la fase de votación final que tiene lugar desde el 15 de mayo hasta el 30 de junio de 2017. Empieza ya a conseguir votos, comparte tu proyecto de gasto en redes sociales. La difusión es fundamental para conseguir que se haga realidad."
share: "Te invitamos a que %{url} en redes sociales para promocionarlo y conseguir más votos."
share_url: "compartas tu proyecto de gasto"
share_button: "Comparte tu proyecto"
@@ -85,9 +85,9 @@ es:
signatory: "DIRECCIÓN GENERAL DE PARTICIPACIÓN CIUDADANA"
budget_investment_unselected:
subject: "Tu propuesta de inversión '%{code}' no ha sido seleccionada"
- hi: "Estimado usuario,"
- unselected_html: "Desde el Ayuntamiento queremos agradecer tu participación en los Presupuestos Participativos. Lamentamos informarte de que tu proyecto '%{title}' no ha sido seleccionado para la fase de votación final."
- participate: "De todas formas te invitamos a que %{url} votando otros proyectos desde el 15 de mayo hasta el 30 de junio."
+ hi: "Estimado/a usuario/a"
+ unselected_html: "Desde el Ayuntamiento de Madrid agradecemos que hayas participado con tu idea en los Presupuestos Participativos. Lamentamos informarte de que tu proyecto '%{title}' no ha sido seleccionado para la fase de votación final."
+ participate: "Puedes continuar participando en la votación final votando proyectos para toda la ciudad y el distrito que elijas desde el 15 de mayo hasta el 30 de junio de 2017."
participate_url: "participes en la votación final"
thanks: "Gracias de nuevo por tu participación."
sincerely: "Atentamente"
diff --git a/lib/tasks/budgets.rake b/lib/tasks/budgets.rake
new file mode 100644
index 000000000..f9810ac1c
--- /dev/null
+++ b/lib/tasks/budgets.rake
@@ -0,0 +1,16 @@
+namespace :budgets do
+ namespace :email do
+
+ desc "Sends emails to authors of selected investments"
+ task selected: :environment do
+ Budget.last.email_selected
+ end
+
+ desc "Sends emails to authors of unselected investments"
+ task unselected: :environment do
+ Budget.last.email_unselected
+ end
+
+ end
+
+end
\ No newline at end of file
diff --git a/spec/features/emails_spec.rb b/spec/features/emails_spec.rb
index b3e52370d..a42715734 100644
--- a/spec/features/emails_spec.rb
+++ b/spec/features/emails_spec.rb
@@ -321,5 +321,51 @@ feature 'Emails' do
expect(email).to have_body_text(investment.unfeasibility_explanation)
end
+ scenario "Selected investment" do
+ author1 = create(:user)
+ author2 = create(:user)
+ author3 = create(:user)
+
+ investment1 = create(:budget_investment, :selected, author: author1, budget: budget)
+ investment2 = create(:budget_investment, :selected, author: author2, budget: budget)
+ investment3 = create(:budget_investment, :unselected, author: author3, budget: budget)
+
+ reset_mailer
+ budget.email_selected
+
+ expect(find_email investment1.author.email).to be
+ expect(find_email investment2.author.email).to be
+ expect(find_email investment3.author.email).to_not be
+
+ email = open_last_email
+ investment = investment2
+ expect(email).to have_subject("Your investment project '#{investment.code}' has been selected")
+ expect(email).to deliver_to(investment.author.email)
+ expect(email).to have_body_text(investment.title)
+ end
+
+ scenario "Unselected investment" do
+ author1 = create(:user)
+ author2 = create(:user)
+ author3 = create(:user)
+
+ investment1 = create(:budget_investment, :unselected, author: author1, budget: budget)
+ investment2 = create(:budget_investment, :unselected, author: author2, budget: budget)
+ investment3 = create(:budget_investment, :selected, author: author3, budget: budget)
+
+ reset_mailer
+ budget.email_unselected
+
+ expect(find_email investment1.author.email).to be
+ expect(find_email investment2.author.email).to be
+ expect(find_email investment3.author.email).to_not be
+
+ email = open_last_email
+ investment = investment2
+ expect(email).to have_subject("Your investment project '#{investment.code}' has not been selected")
+ expect(email).to deliver_to(investment.author.email)
+ expect(email).to have_body_text(investment.title)
+ end
+
end
end