aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/request_controller.rb
diff options
context:
space:
mode:
authorfrancis <francis>2008-01-10 01:13:27 +0000
committerfrancis <francis>2008-01-10 01:13:27 +0000
commitcbf8f251f85b13256de045ded55fcc191d980007 (patch)
treeae90b305a337424944bd2aee4be0eaadda886b82 /app/controllers/request_controller.rb
parentd6c6623f26b4c18db7fe80498c2d08c9bfd83e4f (diff)
Let original requester send followup messages.
Diffstat (limited to 'app/controllers/request_controller.rb')
-rw-r--r--app/controllers/request_controller.rb50
1 files changed, 40 insertions, 10 deletions
diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb
index eb4418d60..ad809f716 100644
--- a/app/controllers/request_controller.rb
+++ b/app/controllers/request_controller.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_controller.rb,v 1.35 2008-01-09 19:56:41 francis Exp $
+# $Id: request_controller.rb,v 1.36 2008-01-10 01:13:27 francis Exp $
class RequestController < ApplicationController
@@ -73,7 +73,7 @@ class RequestController < ApplicationController
end
end
- # Show an individual incoming message, and let the user classify it.
+ # Show an individual incoming message
def show_response
@incoming_message = IncomingMessage.find(params[:incoming_message_id])
@info_request = @incoming_message.info_request
@@ -84,7 +84,8 @@ class RequestController < ApplicationController
raise sprintf("Incoming message %d does not belong to request %d", @incoming_message.info_request_id, params[:id])
end
- if params[:incoming_message]
+ if !params[:submitted_classify].nil?
+ # Let the user classify it.
if not authenticated_as_user?(@info_request.user,
:web => "To classify the response to this FOI request",
:email => "Then you can classify the FOI response you have got from " + @info_request.public_body.name + ".",
@@ -94,6 +95,12 @@ class RequestController < ApplicationController
# do nothing - as "authenticated?" has done the redirect to signin page for us
end
+ if !params[:incoming_message]
+ flash[:error] = "Please choose whether or not you got some of the information that you wanted."
+ render :action => 'show_response'
+ return
+ end
+
contains_information = (params[:incoming_message][:contains_information] == 'true' ? true : false)
@incoming_message.contains_information = contains_information
@incoming_message.user_classified = true
@@ -101,14 +108,37 @@ class RequestController < ApplicationController
flash[:notice] = "Thank you for classifying the response."
redirect_to show_request_url(:id => @info_request)
return
- end
- if params[:commit]
- # Case when didn't choose radio option, but did submit form
- flash[:error] = "Please choose whether or not you got some of the information that you wanted."
+ elsif !params[:submitted_followup].nil?
+ # Send a follow up message
+ @outgoing_message = OutgoingMessage.new(params[:outgoing_message].merge({
+ :status => 'ready',
+ :message_type => 'followup'
+ }))
+ @info_request.outgoing_messages << @outgoing_message
+ @outgoing_message.info_request = @info_request
+ @outgoing_message.incoming_message_followup = @incoming_message
+
+ # See if values were valid or not
+ if !@info_request.valid?
+ render :action => 'show_response'
+ elsif authenticated_as_user?(@info_request.user,
+ :web => "To send a follow up message about your FOI request",
+ :email => "Then you can send a follow up message to " + @info_request.public_body.name + ".",
+ :email_subject => "Send a follow up message to " + @info_request.public_body.name + " regarding your FOI request"
+ )
+ # This automatically saves dependent objects, such as @outgoing_message, in the same transaction
+ @info_request.save!
+ @outgoing_message.send_message
+ flash[:notice] = "Your follow up message has been created and sent on its way."
+ redirect_to show_request_url(:id => @info_request)
+ else
+ # do nothing - as "authenticated?" has done the redirect to signin page for us
+ end
+ else
+ @outgoing_message = OutgoingMessage.new(params[:outgoing_message])
+ # render default show_response template
end
end
-
- private
-
+ private
end