diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/info_request.rb | 15 | ||||
-rw-r--r-- | app/models/outgoing_message.rb | 3 | ||||
-rw-r--r-- | app/models/request_mailer.rb | 4 |
3 files changed, 18 insertions, 4 deletions
diff --git a/app/models/info_request.rb b/app/models/info_request.rb index 68ace338a..d5c95b8ee 100644 --- a/app/models/info_request.rb +++ b/app/models/info_request.rb @@ -19,7 +19,7 @@ # Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. # Email: francis@mysociety.org; WWW: http://www.mysociety.org/ # -# $Id: info_request.rb,v 1.34 2008-02-06 09:41:44 francis Exp $ +# $Id: info_request.rb,v 1.35 2008-02-06 12:20:37 francis Exp $ require 'digest/sha1' @@ -110,6 +110,19 @@ public RequestMailer.deliver_new_response(self, incoming_message) end + # Change status - event id is of the most recent event at the change + # XXX should probably check event id is last event here + def set_described_state(new_state, event_id) + ActiveRecord::Base.transaction do + self.awaiting_description = false + last_event = InfoRequestEvent.find(event_id) + last_event.described_state = new_state + self.described_state = new_state + last_event.save! + self.save! + end + end + # Work out what the situation of the request is # waiting_response # waiting_response_overdue # XXX calculated, should be cached for display? diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb index 544ca87bc..9d6c7d3d0 100644 --- a/app/models/outgoing_message.rb +++ b/app/models/outgoing_message.rb @@ -21,7 +21,7 @@ # 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.25 2008-02-06 09:41:44 francis Exp $ +# $Id: outgoing_message.rb,v 1.26 2008-02-06 12:20:37 francis Exp $ class OutgoingMessage < ActiveRecord::Base belongs_to :info_request @@ -90,6 +90,7 @@ class OutgoingMessage < ActiveRecord::Base 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 }) + self.info_request.set_described_state('waiting_response', self.info_request.events_needing_description[-1].id) else raise "Message id #{self.id} has type '#{self.message_type}' which send_message can't handle" end diff --git a/app/models/request_mailer.rb b/app/models/request_mailer.rb index 747d8ae46..138cb4ea4 100644 --- a/app/models/request_mailer.rb +++ b/app/models/request_mailer.rb @@ -4,7 +4,7 @@ # Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. # Email: francis@mysociety.org; WWW: http://www.mysociety.org/ # -# $Id: request_mailer.rb,v 1.19 2008-01-21 11:08:16 francis Exp $ +# $Id: request_mailer.rb,v 1.20 2008-02-06 12:20:37 francis Exp $ class RequestMailer < ApplicationMailer def initial_request(info_request, outgoing_message) @@ -35,7 +35,7 @@ class RequestMailer < ApplicationMailer def new_response(info_request, incoming_message) post_redirect = PostRedirect.new( - :uri => show_response_url(:id => info_request.id, :incoming_message_id => incoming_message.id), + :uri => describe_state_url(:id => info_request.id), :user_id => info_request.user.id) post_redirect.save! url = confirm_url(:email_token => post_redirect.email_token) |