aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/admin_raw_email_controller.rb
blob: cfff2d0b62b15f21b9430e7706c84d84d421481e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# app/controllers/admin_raw_email_controller.rb:
# Controller for managing raw emails from the admin interface.
#
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: hello@mysociety.org; WWW: http://www.mysociety.org/

class AdminRawEmailController < AdminController

    def show
        @raw_email = RawEmail.find(params[:id])
        # For the holding pen, try to guess where it should be ...
        @holding_pen = false
        if (@raw_email.incoming_message.info_request == InfoRequest.holding_pen_request && !@raw_email.incoming_message.empty_from_field?)
            @holding_pen = true

            # 1. Use domain of email to try and guess which public body it
            # is associated with, so we can display that.
            email = @raw_email.incoming_message.from_email
            domain = PublicBody.extract_domain_from_email(email)

            if domain.nil?
                @public_bodies = []
            else
                @public_bodies = PublicBody.find(:all, :order => "name",
                    :conditions => [ "lower(request_email) like lower('%'||?||'%')", domain ])
            end

            # 2. Match the email address in the message without matching the hash
            @info_requests =  InfoRequest.guess_by_incoming_email(@raw_email.incoming_message)

            # 3. Give a reason why it's in the holding pen
            last_event = InfoRequestEvent.find_by_incoming_message_id(@raw_email.incoming_message.id)
            @rejected_reason = last_event.params[:rejected_reason] || "unknown reason"
        end
    end

end