Description:
fix submission report, when submissions belong no non-existing user
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r415:8de9a512ac85 - - 1 file changed: 2 inserted, 0 deleted

@@ -1,70 +1,72
1 1 class ReportController < ApplicationController
2 2 def login_stat
3 3 @logins = Array.new
4 4
5 5 date_and_time = '%Y-%m-%d %H:%M'
6 6 begin
7 7 @since_time = DateTime.strptime(params[:since_datetime],date_and_time)
8 8 rescue
9 9 @since_time = DateTime.new(1000,1,1)
10 10 end
11 11 begin
12 12 @until_time = DateTime.strptime(params[:until_datetime],date_and_time)
13 13 rescue
14 14 @until_time = DateTime.new(3000,1,1)
15 15 end
16 16
17 17 User.all.each do |user|
18 18 @logins << { login: user.login,
19 19 full_name: user.full_name,
20 20 count: Login.where("user_id = ? AND created_at >= ? AND created_at <= ?",
21 21 user.id,@since_time,@until_time)
22 22 .count(:id),
23 23 min: Login.where("user_id = ? AND created_at >= ? AND created_at <= ?",
24 24 user.id,@since_time,@until_time)
25 25 .minimum(:created_at),
26 26 max: Login.where("user_id = ? AND created_at >= ? AND created_at <= ?",
27 27 user.id,@since_time,@until_time)
28 28 .maximum(:created_at)
29 29 }
30 30 end
31 31 end
32 32
33 33 def submission_stat
34 34
35 35 date_and_time = '%Y-%m-%d %H:%M'
36 36 begin
37 37 @since_time = DateTime.strptime(params[:since_datetime],date_and_time)
38 38 rescue
39 39 @since_time = DateTime.new(1000,1,1)
40 40 end
41 41 begin
42 42 @until_time = DateTime.strptime(params[:until_datetime],date_and_time)
43 43 rescue
44 44 @until_time = DateTime.new(3000,1,1)
45 45 end
46 46
47 47 @submissions = {}
48 48
49 49 User.find_each do |user|
50 50 @submissions[user.id] = { login: user.login, full_name: user.full_name, count: 0, sub: { } }
51 51 end
52 52
53 53 Submission.where("submitted_at >= ? AND submitted_at <= ?",@since_time,@until_time).find_each do |s|
54 + if @submissions[s.user_id]
54 55 if not @submissions[s.user_id][:sub].has_key?(s.problem_id)
55 56 a = nil
56 57 begin
57 58 a = Problem.find(s.problem_id)
58 59 rescue
59 60 a = nil
60 61 end
61 62 @submissions[s.user_id][:sub][s.problem_id] =
62 63 { prob_name: (a ? a.full_name : '(NULL)'),
63 64 sub_ids: [s.id] }
64 65 else
65 66 @submissions[s.user_id][:sub][s.problem_id][:sub_ids] << s.id
66 67 end
67 68 @submissions[s.user_id][:count] += 1
68 69 end
69 70 end
70 71 end
72 + end
You need to be logged in to leave comments. Login now