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

Methods

Public Instance methods

[Source]

    # File app/models/competitions/cat4_womens_race_series.rb, line 76
76:   def cat_4_categories
77:     [ category ] + category.descendants
78:   end

[Source]

    # 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

[Source]

    # File app/models/competitions/cat4_womens_race_series.rb, line 72
72:   def create_races
73:     races.create :category => category
74:   end

[Source]

   # File app/models/competitions/cat4_womens_race_series.rb, line 3
3:   def friendly_name
4:     "Cat 4 Womens Race Series"
5:   end

[Source]

    # File app/models/competitions/cat4_womens_race_series.rb, line 68
68:   def members_only?
69:     false
70:   end

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Validate]