| Class | CombinedTimeTrialResults |
| In: |
app/models/combined_time_trial_results.rb
|
| Parent: | Event |
All categories’ results in a time trial by time Adds combined_results if Time Trial Event. Destroy combined_results if they exist, but should not All the calculation happens synchronously, which isn‘t ideal. Logic overlaps heavily with Competition as well.
# File app/models/combined_time_trial_results.rb, line 76
76: def self.allows_combined_results?(event)
77: event.discipline == "Time Trial"
78: end
# File app/models/combined_time_trial_results.rb, line 80
80: def self.create_combined_results(event)
81: event.create_combined_results unless event.combined_results
82: end
# File app/models/combined_time_trial_results.rb, line 45
45: def self.create_or_destroy_for!(event)
46: return event.combined_results unless event.notification_enabled?
47: event.disable_notification!
48:
49: if destroy_combined_results?(event)
50: destroy_combined_results(event)
51: elsif requires_combined_results?(event)
52: create_combined_results(event)
53: destroy_combined_results(event) unless event.combined_results.has_results?
54: end
55:
56: event.enable_notification!
57: event.combined_results
58: end
# File app/models/combined_time_trial_results.rb, line 64
64: def self.destroy_combined_results(event)
65: if event.combined_results
66: event.combined_results.destroy_races
67: event.combined_results(true).destroy
68: event.combined_results = nil
69: end
70: end
# File app/models/combined_time_trial_results.rb, line 60
60: def self.destroy_combined_results?(event)
61: !requires_combined_results?(event) || (event.combined_results(true) && !event.combined_results.has_results?)
62: end
# File app/models/combined_time_trial_results.rb, line 72
72: def self.requires_combined_results?(event)
73: allows_combined_results?(event) && event.auto_combined_results? && event.has_results?(true)
74: end
# File app/models/combined_time_trial_results.rb, line 84
84: def calculate!
85: destroy_races
86: combined_race = races.create!(:category => Category.find_or_create_by_name("Combined"))
87: parent.races.each do |race|
88: race.results.each do |result|
89: if result.place.to_i > 0 && result.time && result.time > 0
90: combined_race.results.create!(
91: :person => result.person,
92: :team => result.team,
93: :time => result.time,
94: :category => race.category
95: )
96: end
97: end
98: end
99: combined_race.results.sort! do |x, y|
100: if x.time
101: if y.time
102: x.time <=> y.time
103: else
104: 1
105: end
106: else
107: -1
108: end
109: end
110: place = 1
111: combined_race.results.each do |result|
112: result.update_attribute(:place, place.to_s)
113: place = place + 1
114: end
115: true
116: end
# File app/models/combined_time_trial_results.rb, line 15
15: def default_discipline
16: "Time Trial"
17: end
# File app/models/combined_time_trial_results.rb, line 23
23: def default_name
24: "Combined"
25: end
# File app/models/combined_time_trial_results.rb, line 31
31: def disable_notification!
32: false
33: end
# File app/models/combined_time_trial_results.rb, line 27
27: def enable_notification!
28: false
29: end
# File app/models/combined_time_trial_results.rb, line 35
35: def set_mandatory_defaults
36: self.bar_points = default_bar_points
37: self.discipline = default_discipline
38: self.ironman = default_ironman
39: self.name = default_name
40: self.auto_combined_results = false
41: self.notification = false
42: true
43: end