aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/admin_incoming_message_controller.rb
diff options
context:
space:
mode:
authorLouise Crow <louise.crow@gmail.com>2013-09-17 17:39:51 +0100
committerLouise Crow <louise.crow@gmail.com>2013-09-17 17:39:51 +0100
commit6fbcb461025dc315d688038d9f0a8e138d00ba33 (patch)
tree628ad3d7bf9cb2310bc2bed2e94b8670532a0dd4 /app/controllers/admin_incoming_message_controller.rb
parentabde5e4a1139c41c6db23ce041fba090674f65ac (diff)
parentf41ec6d1cb167058a808b7820da5345c6da962fd (diff)
Merge branch 'feature/hide-individual-responses' into rails-3-develop
Conflicts: Gemfile app/views/admin_request/edit_outgoing.html.erb config/packages doc/CHANGES.md doc/INSTALL.md spec/models/info_request_spec.rb spec/models/public_body_spec.rb
Diffstat (limited to 'app/controllers/admin_incoming_message_controller.rb')
-rw-r--r--app/controllers/admin_incoming_message_controller.rb80
1 files changed, 80 insertions, 0 deletions
diff --git a/app/controllers/admin_incoming_message_controller.rb b/app/controllers/admin_incoming_message_controller.rb
new file mode 100644
index 000000000..6b50d0e36
--- /dev/null
+++ b/app/controllers/admin_incoming_message_controller.rb
@@ -0,0 +1,80 @@
+class AdminIncomingMessageController < AdminController
+
+ def edit
+ @incoming_message = IncomingMessage.find(params[:id])
+ end
+
+ def update
+ @incoming_message = IncomingMessage.find(params[:id])
+ old_prominence = @incoming_message.prominence
+ old_prominence_reason = @incoming_message.prominence_reason
+ @incoming_message.prominence = params[:incoming_message][:prominence]
+ @incoming_message.prominence_reason = params[:incoming_message][:prominence_reason]
+ if @incoming_message.save
+ @incoming_message.info_request.log_event('edit_incoming',
+ :incoming_message_id => @incoming_message.id,
+ :editor => admin_current_user(),
+ :old_prominence => old_prominence,
+ :prominence => @incoming_message.prominence,
+ :old_prominence_reason => old_prominence_reason,
+ :prominence_reason => @incoming_message.prominence_reason)
+ expire_for_request(@incoming_message.info_request)
+ flash[:notice] = 'Incoming message successfully updated.'
+ redirect_to admin_request_show_url(@incoming_message.info_request)
+ else
+ render :action => 'edit'
+ end
+ end
+
+ def destroy
+ @incoming_message = IncomingMessage.find(params[:incoming_message_id])
+ @info_request = @incoming_message.info_request
+ incoming_message_id = @incoming_message.id
+
+ @incoming_message.fully_destroy
+ @incoming_message.info_request.log_event("destroy_incoming",
+ { :editor => admin_current_user(), :deleted_incoming_message_id => incoming_message_id })
+ # expire cached files
+ expire_for_request(@info_request)
+ flash[:notice] = 'Incoming message successfully destroyed.'
+ redirect_to admin_request_show_url(@info_request)
+ end
+
+ def redeliver
+ incoming_message = IncomingMessage.find(params[:redeliver_incoming_message_id])
+ message_ids = params[:url_title].split(",").each {|x| x.strip}
+ previous_request = incoming_message.info_request
+ destination_request = nil
+ ActiveRecord::Base.transaction do
+ for m in message_ids
+ if m.match(/^[0-9]+$/)
+ destination_request = InfoRequest.find_by_id(m.to_i)
+ else
+ destination_request = InfoRequest.find_by_url_title!(m)
+ end
+ if destination_request.nil?
+ flash[:error] = "Failed to find destination request '" + m + "'"
+ return redirect_to admin_request_show_url(previous_request)
+ end
+
+ raw_email_data = incoming_message.raw_email.data
+ mail = MailHandler.mail_from_raw_email(raw_email_data)
+ destination_request.receive(mail, raw_email_data, true)
+
+ incoming_message_id = incoming_message.id
+ incoming_message.info_request.log_event("redeliver_incoming", {
+ :editor => admin_current_user(),
+ :destination_request => destination_request.id,
+ :deleted_incoming_message_id => incoming_message_id
+ })
+
+ flash[:notice] = "Message has been moved to request(s). Showing the last one:"
+ end
+ # expire cached files
+ expire_for_request(previous_request)
+ incoming_message.fully_destroy
+ end
+ redirect_to admin_request_show_url(destination_request)
+ end
+
+end