aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/outgoing_message.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/outgoing_message.rb')
-rw-r--r--app/models/outgoing_message.rb47
1 files changed, 28 insertions, 19 deletions
diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb
index cd28d7ae0..a8d9425c5 100644
--- a/app/models/outgoing_message.rb
+++ b/app/models/outgoing_message.rb
@@ -1,16 +1,17 @@
# == Schema Information
-# Schema version: 24
+# Schema version: 25
#
# Table name: outgoing_messages
#
-# id :integer not null, primary key
-# info_request_id :integer
-# body :text
-# status :string(255)
-# message_type :string(255)
-# created_at :datetime
-# updated_at :datetime
-# last_sent_at :datetime
+# id :integer not null, primary key
+# info_request_id :integer
+# body :text
+# status :string(255)
+# message_type :string(255)
+# created_at :datetime
+# updated_at :datetime
+# last_sent_at :datetime
+# incoming_message_followup_id :integer
#
# models/outgoing_message.rb:
@@ -20,16 +21,18 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: outgoing_message.rb,v 1.18 2008-01-04 11:19:18 francis Exp $
+# $Id: outgoing_message.rb,v 1.19 2008-01-10 01:13:28 francis Exp $
class OutgoingMessage < ActiveRecord::Base
belongs_to :info_request
validates_presence_of :info_request
- validates_presence_of :body, :message => "^Please enter your letter requesting information."
+ validates_presence_of :body, :message => "^Please enter your letter requesting information"
+
validates_inclusion_of :status, :in => ['ready', 'sent', 'failed']
+ validates_inclusion_of :message_type, :in => ['initial_request', 'followup' ] #, 'complaint']
- validates_inclusion_of :message_type, :in => ['initial_request'] #, 'complaint']
+ belongs_to :incoming_message_followup, :foreign_key => 'incoming_message_followup_id', :class_name => 'IncomingMessage'
# Set default letter
def after_initialize
@@ -52,20 +55,26 @@ class OutgoingMessage < ActiveRecord::Base
# Note: You can test this from script/console with, say:
# InfoRequest.find(1).outgoing_messages[0].send_message
def send_message(log_event_type = 'sent')
- if self.message_type == 'initial_request'
- if self.status == 'ready'
+ if self.status == 'ready'
+ if self.message_type == 'initial_request'
RequestMailer.deliver_initial_request(self.info_request, self)
self.last_sent_at = Time.now
self.status = 'sent'
self.save!
self.info_request.log_event(log_event_type, { :email => self.info_request.recipient_email, :outgoing_message_id => self.id })
- elsif self.status == 'sent'
- raise "Message id #{self.id} has already been sent"
+ elsif self.message_type == 'followup'
+ RequestMailer.deliver_followup(self.info_request, self, self.incoming_message_followup)
+ self.last_sent_at = Time.now
+ self.status = 'sent'
+ self.save!
+ self.info_request.log_event('followup_' + log_event_type, { :email => self.info_request.recipient_email, :outgoing_message_id => self.id })
else
- raise "Message id #{self.id} not in state for send_message"
+ raise "Message id #{self.id} has type '#{self.message_type}' which send_message can't handle"
end
+ elsif self.status == 'sent'
+ raise "Message id #{self.id} has already been sent"
else
- raise "Message id #{self.id} has type '#{self.message_type}' which send_message can't handle"
+ raise "Message id #{self.id} not in state for send_message"
end
end
@@ -75,7 +84,7 @@ class OutgoingMessage < ActiveRecord::Base
self.status = 'ready'
send_message('resent')
else
- raise "Message id #{self.id} has type '#{self.message_type}' status '#{self.status}' "
+ raise "Message id #{self.id} has type '#{self.message_type}' status '#{self.status}' which resend_message can't handle"
end
end