aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorLouise Crow <louise.crow@gmail.com>2013-10-24 16:00:10 +0100
committerLouise Crow <louise.crow@gmail.com>2013-12-04 09:32:42 +0000
commitcf11b959899d54cf3c7f4e018f11c2c89c83d4af (patch)
tree0508899f4581155e77940fb099d1a3c0bc3dc042 /app
parentaf739bfb229c66655c86d588ad37920f3584973f (diff)
Simple code for the happy path
Create the batch and associate new requests with it, send the outgoing messages, and redirect to a page for the new batch.
Diffstat (limited to 'app')
-rw-r--r--app/controllers/info_request_batch_controller.rb7
-rw-r--r--app/controllers/request_controller.rb40
-rw-r--r--app/models/info_request.rb14
3 files changed, 42 insertions, 19 deletions
diff --git a/app/controllers/info_request_batch_controller.rb b/app/controllers/info_request_batch_controller.rb
new file mode 100644
index 000000000..1e1030b53
--- /dev/null
+++ b/app/controllers/info_request_batch_controller.rb
@@ -0,0 +1,7 @@
+class InfoRequestBatchController < ApplicationController
+
+ def show
+ @info_request_batch = InfoRequestBatch.find(params[:id])
+ end
+
+end
diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb
index 821fcb74a..eac142fac 100644
--- a/app/controllers/request_controller.rb
+++ b/app/controllers/request_controller.rb
@@ -205,16 +205,11 @@ class RequestController < ApplicationController
return render_new_compose(batch=true)
end
- @info_request = InfoRequest.new(params[:info_request])
+ @info_request = InfoRequest.create_from_attributes(params[:info_request],
+ params[:outgoing_message],
+ authenticated_user)
+ @outgoing_message = @info_request.outgoing_messages.first
@info_request.is_batch_request_template = true
- @outgoing_message = OutgoingMessage.new(params[:outgoing_message].merge({
- :status => 'ready',
- :message_type => 'initial_request',
- :what_doing => 'normal_sort'
- }))
- @info_request.outgoing_messages << @outgoing_message
- @outgoing_message.info_request = @info_request
- @info_request.user = authenticated_user
if !@info_request.valid?
# We don't want the error "Outgoing messages is invalid", as in this
# case the list of errors will also contain a more specific error
@@ -229,10 +224,21 @@ class RequestController < ApplicationController
return render_new_preview
end
- # TODO: create info requests and associated outgoing messages from this
- # template request, and send those that can be sent, giving messages about bodies
+ # TODO: give messages about bodies
# that are no longer requestable
-
+ @info_request_batch = InfoRequestBatch.create!(:title => params[:info_request][:title],
+ :user => authenticated_user)
+ @public_bodies = PublicBody.where({:id => params[:public_body_ids]}).all
+ @public_bodies.each do |public_body|
+ info_request = InfoRequest.create_from_attributes(params[:info_request],
+ params[:outgoing_message],
+ authenticated_user)
+ info_request.public_body_id = public_body.id
+ info_request.info_request_batch = @info_request_batch
+ info_request.save!
+ info_request.outgoing_messages.first.send_message
+ end
+ redirect_to info_request_batch_path(@info_request_batch)
end
# Page new form posts to
@@ -289,13 +295,9 @@ class RequestController < ApplicationController
@existing_request = InfoRequest.find_by_existing_request(params[:info_request][:title], params[:info_request][:public_body_id], params[:outgoing_message][:body])
# Create both FOI request and the first request message
- @info_request = InfoRequest.new(params[:info_request])
- @outgoing_message = OutgoingMessage.new(params[:outgoing_message].merge({
- :status => 'ready',
- :message_type => 'initial_request'
- }))
- @info_request.outgoing_messages << @outgoing_message
- @outgoing_message.info_request = @info_request
+ @info_request = InfoRequest.create_from_attributes(params[:info_request],
+ params[:outgoing_message])
+ @outgoing_message = @info_request.outgoing_messages.first
# Maybe we lost the address while they're writing it
if !@info_request.public_body.is_requestable?
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index 3c3afe0ea..b990f4b41 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -936,6 +936,20 @@ public
self.idhash = InfoRequest.hash_from_id(self.id)
end
+ def InfoRequest.create_from_attributes(info_request_atts, outgoing_message_atts, user=nil)
+ info_request = new(info_request_atts)
+ default_message_params = {
+ :status => 'ready',
+ :message_type => 'initial_request',
+ :what_doing => 'normal_sort'
+ }
+ outgoing_message = OutgoingMessage.new(outgoing_message_atts.merge(default_message_params))
+ info_request.outgoing_messages << outgoing_message
+ outgoing_message.info_request = info_request
+ info_request.user = user
+ info_request
+ end
+
def InfoRequest.hash_from_id(id)
return Digest::SHA1.hexdigest(id.to_s + AlaveteliConfiguration::incoming_email_secret)[0,8]
end