| Class | OregonJuniorCyclocrossSeries |
| In: |
app/models/competitions/oregon_junior_cyclocross_series.rb
|
| Parent: | Competition |
By default, does nothing. Useful to apply rule like:
# File app/models/competitions/oregon_junior_cyclocross_series.rb, line 35
35: def after_create_competition_results_for(race)
36: race.results.each do |result|
37: # Don't bother sorting scores unless we need to drop some
38: if result.scores.size > 6
39: result.scores.sort! { |x, y| y.points <=> x.points }
40: lowest_scores = result.scores[6, 2]
41: lowest_scores.each do |lowest_score|
42: result.scores.destroy(lowest_score)
43: end
44: # Rails destroys Score in database, but doesn't update the current association
45: result.scores(true)
46: end
47:
48: if preliminary?(result)
49: result.preliminary = true
50: end
51: end
52: end
# File app/models/competitions/oregon_junior_cyclocross_series.rb, line 54
54: def create_races
55: [ "Boys 10-12", "Girls 10-12", "Boys 13-14", "Girls 13-14", "Boys 15-16", "Girls 15-16", "Boys 17-18", "Girls 17-18" ].each do |category|
56: races.create! :category => Category.find_or_create_by_name(category)
57: end
58: end
# File app/models/competitions/oregon_junior_cyclocross_series.rb, line 2 2: def friendly_name 3: "Oregon Junior Cyclocross Series" 4: end
# File app/models/competitions/oregon_junior_cyclocross_series.rb, line 28
28: def members_only?
29: false
30: end
# File app/models/competitions/oregon_junior_cyclocross_series.rb, line 60
60: def minimum_events
61: 4
62: end
# File app/models/competitions/oregon_junior_cyclocross_series.rb, line 24
24: def point_schedule
25: [ 0, 30, 28, 26, 24, 22, 20, 18, 17, 16, 15, 14, 13, 12, 11, 10 ]
26: end
# File app/models/competitions/oregon_junior_cyclocross_series.rb, line 85
85: def preliminary?(result)
86: minimum_events && parent.children_with_results.size > minimum_events && !parent.completed? && !raced_minimum_events?(result.person, result.race)
87: end
# File app/models/competitions/oregon_junior_cyclocross_series.rb, line 64
64: def raced_minimum_events?(person, race)
65: return true if minimum_events.nil?
66: return false if parent.children.empty? || person.nil?
67:
68: event_ids = parent.children.collect(&:id).join(", ")
69: category_ids = category_ids_for(race)
70:
71: count = Result.count_by_sql(
72: %Q{ SELECT count(*) FROM results
73: JOIN races ON races.id = results.race_id
74: JOIN categories ON categories.id = races.category_id
75: JOIN events ON races.event_id = events.id
76: WHERE categories.id in (#{category_ids})
77: and events.id in (#{event_ids})
78: and results.person_id = #{person.id}
79: }
80: )
81: count >= minimum_events
82: end
# File app/models/competitions/oregon_junior_cyclocross_series.rb, line 6
6: def source_results(race)
7: return [] if source_events.empty?
8:
9: Result.find_by_sql(
10: %Q{ SELECT results.* FROM results
11: LEFT JOIN races ON races.id = results.race_id
12: LEFT JOIN categories ON categories.id = races.category_id
13: LEFT JOIN events ON races.event_id = events.id
14: WHERE events.id in (#{source_events.map(&:id)})
15: and (place > 0 or place is null or place = '')
16: and categories.id in (#{category_ids_for(race)})
17: and events.type = "SingleDayEvent"
18: and events.date between '#{year}-01-01' and '#{year}-12-31'
19: order by person_id
20: }
21: )
22: end