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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# == Schema Information
#
# Table name: public_body_change_requests
#
# id :integer not null, primary key
# user_email :string(255)
# user_name :string(255)
# user_id :integer
# public_body_name :text
# public_body_id :integer
# public_body_email :string(255)
# source_url :text
# notes :text
# is_open :boolean default(TRUE), not null
# created_at :datetime not null
# updated_at :datetime not null
#
class PublicBodyChangeRequest < ActiveRecord::Base
belongs_to :user
belongs_to :public_body
validates_presence_of :public_body_name, :message => N_("Please enter the name of the authority"),
:unless => proc{ |change_request| change_request.public_body }
validates_presence_of :user_name, :message => N_("Please enter your name"),
:unless => proc{ |change_request| change_request.user }
validates_presence_of :user_email, :message => N_("Please enter your email address"),
:unless => proc{ |change_request| change_request.user }
validate :user_email_format, :unless => proc{ |change_request| change_request.user_email.blank? }
validate :body_email_format, :unless => proc{ |change_request| change_request.public_body_email.blank? }
scope :new_body_requests, :conditions => ['public_body_id IS NULL'], :order => 'created_at'
scope :body_update_requests, :conditions => ['public_body_id IS NOT NULL'], :order => 'created_at'
scope :open, :conditions => ['is_open = ?', true]
def self.from_params(params, user)
change_request = new
change_request.update_from_params(params, user)
end
def update_from_params(params, user)
if user
self.user_id = user.id
else
self.user_name = params[:user_name]
self.user_email = params[:user_email]
end
self.public_body_name = params[:public_body_name]
self.public_body_id = params[:public_body_id]
self.public_body_email = params[:public_body_email]
self.source_url = params[:source_url]
self.notes = params[:notes]
self
end
def get_user_name
user ? user.name : user_name
end
def get_user_email
user ? user.email : user_email
end
def get_public_body_name
public_body ? public_body.name : public_body_name
end
def send_message
if public_body
ContactMailer.update_public_body_email(self).deliver
else
ContactMailer.add_public_body(self).deliver
end
end
def thanks_notice
if self.public_body
_("Your request to update the address for #{get_public_body_name} has been sent. Thank you for getting in touch! We'll get back to you soon.")
else
_("Your request to add an authority has been sent. Thank you for getting in touch! We'll get back to you soon.")
end
end
private
def body_email_format
unless MySociety::Validate.is_valid_email(self.public_body_email)
errors.add(:public_body_email, _("The authority email doesn't look like a valid address"))
end
end
def user_email_format
unless MySociety::Validate.is_valid_email(self.user_email)
errors.add(:user_email, _("Your email doesn't look like a valid address"))
end
end
end
|