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
|
namespace :stats do
desc 'Produce transaction stats'
task :show => :environment do
month_starts = (Date.new(2009, 1)..Date.new(2011, 8)).select { |d| d.day == 1 }
headers = ['Period',
'Requests sent',
'Annotations added',
'Track this request email signups',
'Comments on own requests',
'Follow up messages sent']
puts headers.join("\t")
month_starts.each do |month_start|
month_end = month_start.end_of_month
period = "#{month_start}-#{month_end}"
date_conditions = ['created_at >= ?
AND created_at < ?',
month_start, month_end+1]
request_count = InfoRequest.count(:conditions => date_conditions)
comment_count = Comment.count(:conditions => date_conditions)
track_conditions = ['track_type = ?
AND track_medium = ?
AND created_at >= ?
AND created_at < ?',
'request_updates', 'email_daily', month_start, month_end+1]
email_request_track_count = TrackThing.count(:conditions => track_conditions)
comment_on_own_request_conditions = ['comments.user_id = info_requests.user_id
AND comments.created_at >= ?
AND comments.created_at < ?',
month_start, month_end+1]
comment_on_own_request_count = Comment.count(:conditions => comment_on_own_request_conditions,
:include => :info_request)
followup_conditions = ['message_type = ?
AND created_at >= ?
AND created_at < ?',
'followup', month_start, month_end+1]
follow_up_count = OutgoingMessage.count(:conditions => followup_conditions)
puts [period,
request_count,
comment_count,
email_request_track_count,
comment_on_own_request_count,
follow_up_count].join("\t")
end
end
end
|