lib/haytni_web/emails/invitable_email.ex

defmodule Haytni.InvitableEmail do
  import Haytni.Mail
  import Bamboo.Email
  import Haytni.Gettext

  @doc ~S"""
  Email an invitation

  In the *invitation* templates, *user* is the sender of the invitation, you have full access to it, so you can use any field from its schema so you can
  refer to it by its surname if you like.
  """
  @spec invitation_email(user :: Haytni.user, invitation :: Haytni.InvitablePlugin.invitation, module :: module, config :: Haytni.config) :: Bamboo.Email.t
  def invitation_email(user = %_{}, invitation, module, config) do
    new_email()
    |> to(invitation.sent_to)
    |> assign(:user, user)
    |> assign(:config, config)
    |> assign(:invitation, invitation)
    |> from(module.mailer().from())
    |> subject(dgettext("haytni", "You've been invited"))
    |> put_view(module, "Email.InvitableView")
    |> put_text_template("invitation.text")
    |> put_html_template("invitation.html")
  end
end