Skip to content
This repository has been archived by the owner on Nov 15, 2024. It is now read-only.

Commit

Permalink
not working perfectly
Browse files Browse the repository at this point in the history
  • Loading branch information
augnustin committed Dec 22, 2023
1 parent 0d97656 commit eff53f4
Show file tree
Hide file tree
Showing 5 changed files with 120 additions and 3 deletions.
6 changes: 5 additions & 1 deletion config/config.exs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ config :vae,
],
messages: [
registration_closed: "Les inscriptions sont fermées sur Avril. Vous pouvez encore consulter votre espace personnel jusqu'au 31 Janvier 2024.\n\nPour un nouveau projet de diplôme en VAE, rendez-vous sur [France VAE](https://vae.gouv.fr).",
support_closed: "Le support n'est malheureusement plus disponible pour répondre à vos questions.\n\nRendez-vous sur [France VAE](https://vae.gouv.fr)."
support_closed: "L'assistance aux utilisateurs n'est plus disponible. Nous avons été heureux d'accompagner vos projets depuis 2017.\n\nPour toutes questions relatives à la VAE ou tous nouveaux projets de VAE rendez vous sur le site [France VAE](https://vae.gouv.fr).\n\nMerci de votre compréhension."
]

config :vae, VaeWeb.Endpoint,
Expand Down Expand Up @@ -117,6 +117,10 @@ config :vae, Vae.Scheduler,
security_reset_password_task: [
schedule: "0 4 1 * *", # 4AM on the first of month
task: &Vae.User.reset_old_users_password/0
],
send_goodbye_delegate_email: [
schedule: "0 7 1 * *", # 7AM on the first of month
task: &VaeWeb.DelegateEmail.send_all_delegates/0
]
], else: []

Expand Down
71 changes: 70 additions & 1 deletion lib/vae_web/emails/delegate_email.ex
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
defmodule VaeWeb.DelegateEmail do
import Ecto
# import Ecto.Changeset
import Ecto.Query

alias VaeWeb.Mailer

alias Vae.{Certification, User, Repo, URI}
alias Vae.{Certification, Certifier, Delegate, User, UserApplication, Repo, URI}
alias VaeWeb.Router.Helpers, as: Routes

@afpa_cc System.get_env("AFPA_CC_ADDRESS")
@date_format "%d/%m/%Y"

def applications_raise(delegate, options \\ %{}, endpoint \\ URI.endpoint()) do
delegate = Repo.preload(delegate, recent_applications: [:certification, :user])
Expand Down Expand Up @@ -46,4 +51,68 @@ defmodule VaeWeb.DelegateEmail do
}
)
end

def goodbye(delegate, _endpoint \\ URI.endpoint()) do
delegate = Repo.preload(delegate, :certifiers)

start_date =
from(a in assoc(delegate, :applications), order_by: fragment("?::date ASC", a.inserted_at), limit: 1) |> Repo.one() |> Map.get(:inserted_at) || ~D[2019-04-16]

submitted_application_count = delegate |> assoc(:applications) |> where([a], not is_nil(a.submitted_at)) |> Repo.aggregate(:count, :id)

popular_certifications = from(
c in Certification,
left_join: u in UserApplication, where: u.delegate_id == ^delegate.id and u.certification_id == c.id and not is_nil(u.submitted_at),
group_by: c.id,
order_by: [desc: count(u.id)],
limit: 5
)
|> Repo.all()

popular_certifications_list = Enum.map(popular_certifications, fn %Certification{} = certification ->
"- #{Certification.name(certification)} : #{Vae.String.inflect(delegate_certification_application_count(delegate, certification), "candidature")}\n"
end) |> Enum.join("\n")

certifiers_application_count = Enum.map(delegate.certifiers, fn certifier ->
"#{Vae.String.inflect(certifier_application_count(certifier), "candidature")} pour le certificateur #{certifier.name}"
end) |> Enum.join(", ")

Mailer.build_email(
"delegate/goodbye.html",
:avril,
delegate,
%{
delegate_name: delegate.name,
start_date: start_date,
submitted_application_count: submitted_application_count,
popular_certifications_list: popular_certifications_list,
certifiers_application_count: certifiers_application_count,
date_format: @date_format,
footer_note: :delegate,
}
)

end

def delegate_certification_application_count(delegate, certification) do
from(
u in UserApplication,
where: u.delegate_id == ^delegate.id and u.certification_id == ^certification.id and not is_nil(u.submitted_at)
) |> Repo.aggregate(:count, :id)
end

def certifier_application_count(certifier) do
certifier |> assoc(:applications) |> where([a], not is_nil(a.submitted_at)) |> Repo.aggregate(:count, :id)
end

def send_all_delegates() do
from(d in Delegate, where: d.is_active, limit: 10)
|> Repo.all()
|> Enum.map(fn delegate ->
IO.inspect(delegate)
|> VaeWeb.DelegateEmail.goodbye()
|> VaeWeb.Mailer.send()
end)
end

end
10 changes: 9 additions & 1 deletion lib/vae_web/emails/vae_mailer.ex
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ defmodule VaeWeb.Mailer do

countdown = Timex.diff(Application.get_env(:vae, :deadlines)[:avril_close], Date.utc_today(), :days)
subject_with_countdown = if countdown < 31, do: "[J-#{countdown}] #{subject}", else: subject
# md_content = Earmark.as_html!(processed_content)
# md_content = Earmark.as_html!(processed_content) |> IO.inspect()
email
|> subject(subject_with_countdown)
|> Map.put(:text_body, remove_subject(processed_content))
Expand Down Expand Up @@ -194,6 +194,7 @@ defmodule VaeWeb.Mailer do

defp call_to_action_inline_style(html_content) do
html_content
|> remarkdown_processed_content()
|> replace_button_style(:primary)
|> replace_button_style(:secondary)
|> add_blockquote_background()
Expand All @@ -203,6 +204,13 @@ defmodule VaeWeb.Mailer do
String.replace(html_content, "<blockquote>", "<blockquote style=\"background-color: #f5f9fb; margin: 0; padding: 1em 2em;\">")
end

def remarkdown_processed_content(html_content) do
Regex.replace(~r/~~(.+?)~~/m, html_content, fn _, match ->
IO.inspect(match)
Earmark.as_html!(match)
end)
end

def replace_button_style(html_content, type) do
{tag, color, bg_color} = case type do
:primary -> {"strong", "#c7eeff", "#18495e"}
Expand Down
5 changes: 5 additions & 0 deletions lib/vae_web/models/certifier.ex
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ defmodule Vae.Certifier do
where: [is_active: true]
)

has_many(
:applications,
through: [:delegates, :applications]
)

timestamps()
end

Expand Down
31 changes: 31 additions & 0 deletions priv/emails/delegate/goodbye.html.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
[SUJET]: # (N’attendez pas le mois d'avril pour contribuer au nouveau service public de la VAE ! L'équipe d’Avril vous souhaite une bonne année 2024)

<%= if @submitted_application_count > 0 do %>
Depuis le <%= Timex.format!(@start_date, @date_format, :strftime) %>, Avril est fière d'avoir orienté <%= @submitted_application_count %> candidatures à la VAE vers vos services. Ce sont vos diplômes qui ont eu du succès :

~~
<%= @popular_certifications_list %>
~~

Cela représente <%= @certifiers_application_count %>

Il vous reste un mois pour traiter les dernières candidatures.
<% else %>
Depuis le 16/04/2019, Avril est fière d'avoir orienté <%= @certifiers_application_count %>

Pour savoir quelles sont les 10 diplômes les plus demandés en VAE :

_[Consulter les stats sur la VAE](https://avril.pole-emploi.fr/stats)_
<% end %>

Dès janvier, le nouveau service public de la VAE va donner un nouveau souffle à ce dispositif. Encore plus de femmes et d’hommes souhaiteront obtenir vos diplômes par la VAE.

Contribuez à la VAE rénovée en devenant Architecte Accompagnateur de parcours.

**[En savoir plus sur l'architecte accompagnateur de parcours en VAE](https://vae.gouv.fr/espace-professionnel/)**

Au moment d’arrêter le site Avril, nous vous adressons mille Mercis pour avoir aidé et accompagné ces validations d’acquis 🤝🏼.

Que 2024 vous apporte tout le bonheur que vous souhaitez et surtout beaucoup, beaucoup de belles VAE !

L'équipe d’Avril

0 comments on commit eff53f4

Please sign in to comment.