diff options
author | Louise Crow <louise.crow@gmail.com> | 2013-10-24 16:00:10 +0100 |
---|---|---|
committer | Louise Crow <louise.crow@gmail.com> | 2013-12-04 09:32:42 +0000 |
commit | cf11b959899d54cf3c7f4e018f11c2c89c83d4af (patch) | |
tree | 0508899f4581155e77940fb099d1a3c0bc3dc042 /app | |
parent | af739bfb229c66655c86d588ad37920f3584973f (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.rb | 7 | ||||
-rw-r--r-- | app/controllers/request_controller.rb | 40 | ||||
-rw-r--r-- | app/models/info_request.rb | 14 |
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 |