diff options
Diffstat (limited to 'app/controllers/new_controller.rb')
-rw-r--r-- | app/controllers/new_controller.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/app/controllers/new_controller.rb b/app/controllers/new_controller.rb new file mode 100644 index 000000000..1952ace06 --- /dev/null +++ b/app/controllers/new_controller.rb @@ -0,0 +1,46 @@ +# app/controllers/new_controller.rb: +# Interface for building a new FOI request. +# +# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. +# Email: francis@mysociety.org; WWW: http://www.mysociety.org/ +# +# $Id: new_controller.rb,v 1.1 2007-10-08 14:58:27 francis Exp $ + +class NewController < ApplicationController + def index + # render index.rhtml template + end + + def create + # 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 + + # This automatically saves dependent objects, such as @info_request, in the same transaction + if not @info_request.valid? + render :action => 'index' + elsif check_authentication + @info_request.save + end + + # Save both models +# valid = @info_request.valid? +# valid &&= @outgoing_message.valid? # XXX maybe there is a nicer way of preventing lazy boolean evaluation than this +# if valid +# if check_authentication +# @info_request.save! +# @outgoing_message.save! +# end +# else +# render :action => 'index' +# end + end + +end + + |