Sha256: fe45c162f81c1ea2c44011e00e3887c077d1e5c5619232d44e66e16e79855859

Contents?: true

Size: 1.72 KB

Versions: 1

Compression:

Stored size: 1.72 KB

Contents

=begin rdoc
Author::    Chris Hauboldt (mailto:biz@lnstar.com)
Copyright:: 2009 Lone Star Internet Inc.

MailingList simply defines the available lists for subscriptions in the system. See Subscription for more information.

=end
module MailManager
  class MailingList < ActiveRecord::Base

    self.table_name =  "#{MailManager.table_prefix}mailing_lists"
    
    # associations get stupid when ActiveRecord is scoped for some horrible reason
    has_many :subscriptions, :class_name => 'MailManager::Subscription'
    has_and_belongs_to_many :mailings, :class_name => 'MailManager::Mailing',
      :join_table => "#{MailManager.table_prefix}mailing_lists_#{MailManager.table_prefix}mailings"
  
    scope :active, {:conditions => {:status => 'active',:deleted_at => nil}}

    validates :name, presence: true
  
    include StatusHistory
    before_create :set_default_status

    attr_protected :id

    def self.active_email_addresses_contact_ids_subscription_ids_for_mailing_list_ids(mailing_list_ids)
      results = MailManager::MailingList.connection.execute(
        %Q|select c.email_address as email_address, c.id as contact_id, 
        s.id as subscription_id from #{MailManager.table_prefix}contacts c 
        inner join #{MailManager.table_prefix}subscriptions s on c.id=s.contact_id 
        where s.status in ('active') and mailing_list_id in (#{
        mailing_list_ids.join(',')})|
      )
      results = results.map(&:values) if results.first.is_a?(Hash)
      results.inject(Hash.new){ |h,r|
        h.merge!(r[0].to_s.strip.downcase => {
          contact_id: r[1].to_i, subscription_id: r[2].to_i
        })
      }
    end

    
    def active?
      deleted_at.nil?
    end
    
    def inactive?
      !active?
    end
  
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mail_manager-3.2.6 app/models/mail_manager/mailing_list.rb