module MailControl::LoggedEmail::ClassMethods

Public Instance Methods

mailing(name, &block) click to toggle source

Defines a new LoggedEmail2 type and registers a definition

@param [ String ] name The name of the mailing

@example Define a new mailing

mailing(:enquiry) do
  actor :user, :cache => [:full_name]
  act_object :enquiry, :cache => [:subject]
  act_target :listing, :cache => [:title]
end

@return [Definition] Returns the registered definition

# File lib/mail-control/logged_email.rb, line 55
def mailing(name, &block)
  definition = MailControl::DefinitionDSL.new(name)
  definition.instance_eval(&block)
  MailControl::Definition.register(definition)
end
poll_for_changes() { |verb, changes_for_target| ... } click to toggle source
# File lib/mail-control/logged_email.rb, line 18
def poll_for_changes()
  #if block_given?

  ::LoggedEmail.where('state = ? AND send_after <= ?', 'initial', Time.now).select(:act_target_id).uniq.each do |cur_target|
    target_id =  cur_target['act_target_id']

    ::LoggedEmail.where('state = ? AND act_target_id = ? AND send_after <= ?', 'initial', target_id, Time.now).select(:verb).uniq.each do |verb|

      changes_for_target =  ::LoggedEmail.where(:act_target_id => target_id, :state => 'initial', :verb => verb['verb'].to_s)

      yield  verb, changes_for_target

      changes_for_target.each do |cft|
        cft.update_attributes(:state => 'complete')
      end



    end


  end
end
send_email(verb, data) click to toggle source

Publishes an mailing using an mailing name and data

@param [ String ] verb The verb of the mailing @param [ Hash ] data The data to initialize the mailing with.

@return [MailControl::LoggedEmail2] An LoggedEmail instance with data

# File lib/mail-control/logged_email.rb, line 67
def send_email(verb, data)
  new.send_email({:verb => verb}.merge(data))
end