Newer
Older
dmpopidor / app / mailers / user_mailer.rb
class UserMailer < ActionMailer::Base
  prepend Dmpopidor::Mailers::UserMailer
  include MailerHelper
  helper MailerHelper
  helper FeedbacksHelper

  default from: Rails.configuration.branding[:organisation][:email]

  def welcome_notification(user)
    @user = user
    FastGettext.with_locale FastGettext.default_locale do
      mail(to: @user.email,
           subject: _('Welcome to %{tool_name}') %{ :tool_name => Rails.configuration.branding[:application][:name] })
    end
  end

  def sharing_notification(role, user, inviter:)
    @role = role
    @user = user
    @inviter = inviter

    FastGettext.with_locale current_locale(@user) do
      subject  = d_('dmpopidor', '%{user_name} has shared a Data Management Plan with you in %{tool_name}') % {
        :user_name => @inviter.name(false),
        :tool_name => Rails.configuration.branding[:application][:name]
       }
      mail(to: @role.user.email, subject: subject)
    end
  end

  def permissions_change_notification(role, user)
    @role = role
    @user = user
    if user.active?
      FastGettext.with_locale current_locale(role.user) do
        mail(to: @role.user.email,
             subject: _('Changed permissions on a Data Management Plan in %{tool_name}') %{ :tool_name => Rails.configuration.branding[:application][:name] })
      end
    end
  end

  def plan_access_removed(user, plan, current_user)
    @user = user
    @plan = plan
    @current_user = current_user
    if user.active?
      FastGettext.with_locale current_locale(@user) do
        mail(to: @user.email,
             subject: "#{_('Permissions removed on a DMP in %{tool_name}') %{ :tool_name => Rails.configuration.branding[:application][:name] }}")
      end
    end
  end

  def feedback_notification(recipient, plan, requestor)
    @user = requestor

    if @user.org.present? && recipient.active?
      @org = @user.org
      @plan = plan
      @recipient = recipient

      FastGettext.with_locale current_locale(recipient) do
        mail(to: recipient.email,
             subject: _("%{application_name}: %{user_name} requested feedback on a plan") % {application_name: Rails.configuration.branding[:application][:name], user_name: @user.name(false)})
      end
    end
  end

  def feedback_complete(recipient, plan, requestor)
    @requestor = requestor
    @user      = recipient
    @plan      = plan
    @phase     = plan.phases.first
    if recipient.active?
      FastGettext.with_locale current_locale(recipient) do
        mail(to: recipient.email,
             from: requestor.org.contact_email,
             subject: _("%{application_name}: Expert feedback has been provided for %{plan_title}") % {application_name: Rails.configuration.branding[:application][:name], plan_title: @plan.title})
      end
    end
  end

  def feedback_confirmation(recipient, plan, requestor)
    user = requestor

    if user.org.present? && recipient.active?
      org = user.org
      plan = plan

      # Use the generic feedback confirmation message unless the Org has specified one
      subject = (org.feedback_email_subject.present? ? org.feedback_email_subject : feedback_confirmation_default_subject)
      message = (org.feedback_email_msg.present? ? org.feedback_email_msg : feedback_confirmation_default_message)

      @body = feedback_constant_to_text(message, user, plan, org)

      FastGettext.with_locale FastGettext.default_locale do
        mail(to: recipient.email,
             subject: feedback_constant_to_text(subject, user, plan, org))
      end
    end
  end

  def plan_visibility(user, plan)
    @user = user
    @plan = plan
    if user.active?
      FastGettext.with_locale current_locale(user) do
        mail(to: @user.email,
             subject: _('DMP Visibility Changed: %{plan_title}') %{ :plan_title => @plan.title })
      end
    end
  end

  # commenter - User who wrote the comment
  # plan      - Plan for which the comment is associated to
  # answer - Answer commented on
  # SEE MODULE
  def new_comment(commenter, plan, answer)
    if commenter.is_a?(User) && plan.is_a?(Plan)
      owner = plan.owner
      if owner.present? && owner.active?
        @commenter = commenter
        @plan = plan
        @answer = answer
        FastGettext.with_locale current_locale(owner) do
          mail(to: owner.email, subject:
            _('%{tool_name}: A new comment was added to %{plan_title}') %{ :tool_name => Rails.configuration.branding[:application][:name], :plan_title => plan.title })
        end
      end
    end
  end

  def admin_privileges(user)
    @user = user
    if user.active?
      FastGettext.with_locale current_locale(@user) do
        mail(to: user.email, subject:
          _('Administrator privileges granted in %{tool_name}') %{ :tool_name => Rails.configuration.branding[:application][:name] })
      end
    end
  end

  def anonymization_warning(user)
    @user = user
    @end_date = (@user.last_sign_in_at + 5.years).to_date
    FastGettext.with_locale current_locale(@user) do
      mail(to: @user.email, subject:
        d_('dmpopidor', 'Account expiration in %{tool_name}') %{ :tool_name => Rails.configuration.branding[:application][:name] })
    end
  end

  def anonymization_notice(user)
    @user = user
    FastGettext.with_locale current_locale(@user) do
      mail(to: @user.email, subject:
        d_('dmpopidor', 'Account expired in %{tool_name}') %{ :tool_name => Rails.configuration.branding[:application][:name] })
    end
  end


  private

  def current_locale(user)
    user.get_locale.nil? ? FastGettext.default_locale : user.get_locale
  end
  
end