| Class | Cat4WomensRaceSeries |
| In: |
app/models/competitions/cat4_womens_race_series.rb
|
| Parent: | Competition |
Count pre-set list of series source_events + manually-entered non-series events
# File app/models/competitions/cat4_womens_race_series.rb, line 76
76: def cat_4_categories
77: [ category ] + category.descendants
78: end
# File app/models/competitions/cat4_womens_race_series.rb, line 80
80: def category
81: @category ||= RacingAssociation.current.cat4_womens_race_series_category || Category.find_or_create_by_name("Women Cat 4")
82: end
# File app/models/competitions/cat4_womens_race_series.rb, line 72
72: def create_races
73: races.create :category => category
74: end
# File app/models/competitions/cat4_womens_race_series.rb, line 3 3: def friendly_name 4: "Cat 4 Womens Race Series" 5: end
# File app/models/competitions/cat4_womens_race_series.rb, line 68
68: def members_only?
69: false
70: end
# File app/models/competitions/cat4_womens_race_series.rb, line 7
7: def point_schedule
8: if RacingAssociation.current.cat4_womens_race_series_points.empty?
9: [ 0, 100, 95, 90, 85, 80, 75, 72, 70, 68, 66, 64, 62, 60, 58, 56 ]
10: else
11: RacingAssociation.current.cat4_womens_race_series_points
12: end
13: end
# File app/models/competitions/cat4_womens_race_series.rb, line 33
33: def points_for(source_result, team_size = nil)
34: if RacingAssociation.current.award_cat4_participation_points?
35: # If it's a finish without a number, it's always 15 points
36: return 15 if source_result.place.blank?
37:
38: event_ids = source_events.collect(&:id)
39: place = source_result.place.to_i
40:
41: if event_ids.include?(source_result.event_id) ||
42: (source_result.event.parent_id &&
43: event_ids.include?(source_result.event.parent_id) &&
44: source_result.event.parent.races.none? { |race| cat_4_categories.include?(race.category) })
45: if place >= point_schedule.size
46: return 25
47: else
48: return point_schedule[source_result.place.to_i] || 0
49: end
50: elsif place > 0
51: return 15
52: end
53: else
54: return 0 if source_result.place.blank?
55: event_ids = source_events.collect(&:id)
56: place = source_result.place.to_i
57:
58: if (event_ids.include?(source_result.event_id) ||
59: (source_result.event.parent_id && event_ids.include?(source_result.event.parent_id) && source_result.event.parent.races.none?)) &&
60: place < point_schedule.size
61: return point_schedule[source_result.place.to_i] || 0
62: end
63: end
64:
65: 0
66: end
# File app/models/competitions/cat4_womens_race_series.rb, line 15
15: def source_results(race)
16: end_date = RacingAssociation.current.cat4_womens_race_series_end_date || Time.zone.now.end_of_year.to_date
17: Result.find_by_sql(
18: [%Q{ SELECT results.*
19: FROM results
20: LEFT JOIN races ON races.id = results.race_id
21: LEFT JOIN categories ON categories.id = races.category_id
22: LEFT JOIN events ON races.event_id = events.id
23: WHERE (place > 0 or place is null or place = '')
24: and categories.id in (#{category_ids_for(race)})
25: and (events.type = "SingleDayEvent" or events.type is null or events.id in (?))
26: and events.ironman is true
27: and events.date between '#{year}-01-01' and '#{end_date.to_s(:db)}'
28: order by person_id
29: }, source_events.collect(&:id) ]
30: )
31: end