email_campaign.rb 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. class EmailCampaign < ActiveRecord::Base
  2. belongs_to :topic_category
  3. has_one :action_page
  4. def email_your_rep_text(default)
  5. target_bioguide_text_or_default alt_text_email_your_rep, default
  6. end
  7. def look_up_your_rep_text(default)
  8. target_bioguide_text_or_default alt_text_look_up_your_rep, default
  9. end
  10. def look_up_helper_text(default)
  11. target_bioguide_text_or_default alt_text_look_up_helper, default
  12. end
  13. def customize_message_helper_text(default)
  14. target_bioguide_text_or_default alt_text_customize_message_helper, default
  15. end
  16. def extra_fields_explain_text(default)
  17. target_bioguide_text_or_default alt_text_extra_fields_explain, default
  18. end
  19. include ERB::Util
  20. def service_uri(service)
  21. mailto_addresses = email_addresses.split(/\s*,\s*/).map do |email|
  22. u(email.gsub(" ", "")).gsub("%40", "@")
  23. end.join(",")
  24. {
  25. default: "mailto:#{mailto_addresses}?#{query(body: message, subject: subject)}",
  26. gmail: "https://mail.google.com/mail/?view=cm&fs=1&#{{ to: email_addresses, body: message, su: subject }.to_query}",
  27. hotmail: "https://outlook.live.com/default.aspx?rru=compose&#{{ to: email_addresses, body: message, subject: subject }.to_query}#page=Compose"
  28. }.with_indifferent_access.fetch(service)
  29. end
  30. private
  31. # like Hash#to_query except we percent encode spaces
  32. def query(hash)
  33. hash.collect do |key, value|
  34. "#{u(key)}=#{u(value)}"
  35. end.compact * "&"
  36. end
  37. def target_bioguide_text_or_default(custom_text, default)
  38. if !target_bioguide_id or custom_text.blank?
  39. default
  40. else
  41. custom_text
  42. end
  43. end
  44. end