| Class | AgeGradedBar |
| In: |
app/models/competitions/age_graded_bar.rb
|
| Parent: | Competition |
OBRA OverallBar organized by Masters and Juniors age categories
# File app/models/competitions/age_graded_bar.rb, line 30
30: def categories
31: template_categories = []
32: position = 0
33: 30.step(65, 5) do |age|
34: template_categories << Category.new(:name => "Masters Men #{age}-#{age + 4}", :ages => (age)..(age + 4), :position => position = position.next, :parent => Category.new(:name => 'Masters Men'))
35: end
36: template_categories << Category.new(:name => 'Masters Men 70+', :ages => 70..999, :position => position = position.next, :parent => Category.new(:name => 'Masters Men'))
37:
38: 30.step(55, 5) do |age|
39: template_categories << Category.new(:name => "Masters Women #{age}-#{age + 4}", :ages => (age)..(age + 4), :position => position = position.next, :parent => Category.new(:name => 'Masters Women'))
40: end
41: template_categories << Category.new(:name => 'Masters Women 60+', :ages => 60..999, :position => position = position.next, :parent => Category.new(:name => 'Masters Women'))
42:
43: template_categories << Category.new(:name => "Junior Men 10-12", :ages => 10..12, :position => position = position.next, :parent => Category.new(:name => 'Junior Men'))
44: template_categories << Category.new(:name => "Junior Men 13-14", :ages => 13..14, :position => position = position.next, :parent => Category.new(:name => 'Junior Men'))
45: template_categories << Category.new(:name => "Junior Men 15-16", :ages => 15..16, :position => position = position.next, :parent => Category.new(:name => 'Junior Men'))
46: template_categories << Category.new(:name => "Junior Men 17-18", :ages => 17..18, :position => position = position.next, :parent => Category.new(:name => 'Junior Men'))
47:
48: template_categories << Category.new(:name => "Junior Women 10-12", :ages => 10..12, :position => position = position.next, :parent => Category.new(:name => 'Junior Women'))
49: template_categories << Category.new(:name => "Junior Women 13-14", :ages => 13..14, :position => position = position.next, :parent => Category.new(:name => 'Junior Women'))
50: template_categories << Category.new(:name => "Junior Women 15-16", :ages => 15..16, :position => position = position.next, :parent => Category.new(:name => 'Junior Women'))
51: template_categories << Category.new(:name => "Junior Women 17-18", :ages => 17..18, :position => position = position.next, :parent => Category.new(:name => 'Junior Women'))
52:
53: age_graded_categories = Discipline[:age_graded].bar_categories(true)
54: categories = []
55: for template_category in template_categories
56: if Category.exists?(:name => template_category.parent.name)
57: template_category.parent = Category.find_by_name(template_category.parent.name)
58: else
59: template_category.parent.save!
60: end
61:
62: category = Category.find_by_name(template_category.name)
63: if category.nil?
64: template_category.save!
65: category = template_category
66: elsif category.ages != template_category.ages || category.parent != template_category.parent || category.position != template_category.position
67: category.ages = template_category.ages
68: category.parent = template_category.parent
69: category.save!
70: end
71: raise "#{category.name} not valid" unless category.valid?
72: raise "#{category.name} is new record" if category.new_record?
73: raise "#{category.name} does no exist" unless Category.exists?(category.id)
74: raise "#{category.name} ages equal 0..999" if category.ages == (0..999)
75: unless age_graded_categories.include?(category)
76: age_graded_categories << category
77: end
78: categories << category
79: end
80: categories
81: end
# File app/models/competitions/age_graded_bar.rb, line 23
23: def create_races
24: self.categories.each do |category|
25: self.races.create!(:category => category)
26: end
27: self.discipline = "Age Graded"
28: end
# File app/models/competitions/age_graded_bar.rb, line 90
90: def default_discipline
91: "AgeGraded"
92: end
# File app/models/competitions/age_graded_bar.rb, line 94
94: def friendly_name
95: 'Age Graded BAR'
96: end
# File app/models/competitions/age_graded_bar.rb, line 5 5: def points_for(scoring_result) 6: scoring_result.points 7: end
# File app/models/competitions/age_graded_bar.rb, line 83
83: def set_parent
84: if parent.nil?
85: self.parent = OverallBar.find_or_create_for_year(year)
86: save!
87: end
88: end
# File app/models/competitions/age_graded_bar.rb, line 9
9: def source_results(race)
10: Result.find(:all,
11: :include => [:race, {:person => :team}, :team, {:race => [:event, :category]}],
12: :conditions => [%Q{
13: events.type = 'OverallBar'
14: and bar = true
15: and events.sanctioned_by = "#{RacingAssociation.current.default_sanctioned_by}"
16: and categories.id = #{race.category.parent(true).id}
17: and people.date_of_birth between '#{race.dates_of_birth.begin}' and '#{race.dates_of_birth.end}'
18: and events.date between '#{date.year}-01-01' and '#{date.year}-12-31'}],
19: :order => 'person_id'
20: )
21: end