TeaWithStrangers/tws-on-rails

View on GitHub
app/mailers/user_mailer.rb

Summary

Maintainability
A
0 mins
Test Coverage
class UserMailer < ActionMailer::Base
  include SendGrid
  sendgrid_category :use_subject_lines

  default from: "\"Ankit Shah, Tea With Strangers\" <ankit@teawithstrangers.com>"

  def confirm_city_suggestion(city_id)
    @city = City.find(city_id)
    @user = @city.suggested_by_user

    mail(to: @user.email, subject: "We got your suggestion for Tea With Strangers in #{@city.name}") do |format|
      format.text { render }
      format.html { render }
    end
  end

  def notify_city_suggestor(city_id, admin_action)
    @city = City.find(city_id)
    @user = @city.suggested_by_user
    cancel_delivery if @user.nil?

    @partial = "city_suggestion_#{admin_action}"

    case admin_action
    when :approved
      subject = "Thanks for suggesting #{@city.name}, #{@user.name}!"
    when :rejected
      subject = "About #{@city.name}, #{@user.name}"
    when :merged
      subject = "Thanks for suggesting #{@city.name}, #{@user.name}..."
    end

    mail(to: @user.email, subject: subject) do |format|
      format.text { render }
      format.html { render }
    end
  end

  # TODO this should replace registration
  def new_registration(user)
    @user = user;

    mail(to: @user.email,
         subject: "Thanks for being awesome #{@user.nickname}") do |format|
           format.text
           format.html
         end
  end

  def registration(user, password)
    sendgrid_category "User Registration"

    @user = user; @password = password;

    # We send a different mail if the user has registered for a tea time
    template = @user.home_city.tea_times.future_until(2.weeks.from_now).empty? ?
      'registration_no_tea' : 'registration'

    mail(to: @user.email,
         subject: "Thanks for being awesome, #{@user.name}!") do |format|
           format.text { render template }
           format.html { render template }
         end
  end

  def waitlisted_registration(user)
    @user = user;

    mail(to: @user.email,
         subject: "Thanks for being awesome #{@user.nickname}") do |format|
           format.text
           format.html
         end
  end

  def host_registration(user, password)
    sendgrid_category "Host Registration"

    @user = User.find(user)
    @password = password

    mail(to: @user.email,
         subject: "Welcome to The Family") do |format|
           format.text
           format.html
         end
  end
end