Class AgeGradedBar
In: app/models/competitions/age_graded_bar.rb
Parent: Competition

OBRA OverallBar organized by Masters and Juniors age categories

Methods

Public Instance methods

[Source]

    # 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

[Source]

    # 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

[Source]

    # File app/models/competitions/age_graded_bar.rb, line 90
90:   def default_discipline
91:     "AgeGraded"
92:   end

[Source]

    # File app/models/competitions/age_graded_bar.rb, line 94
94:   def friendly_name
95:     'Age Graded BAR'
96:   end

[Source]

   # File app/models/competitions/age_graded_bar.rb, line 5
5:   def points_for(scoring_result)
6:     scoring_result.points
7:   end

[Source]

    # 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

[Source]

    # 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

[Validate]