| Class | UpcomingEvents::Base |
| In: |
app/models/upcoming_events/base.rb
|
| Parent: | Array |
| date | [R] | |
| discipline | [R] | |
| disciplines | [R] | |
| weeks | [R] |
Date = start date. Defaults to today
# File app/models/upcoming_events/base.rb, line 12
12: def initialize(date, weeks, discipline)
13: @date = date || Date.today
14: @discipline = discipline
15: @disciplines = disciplines_for(discipline)
16: @weeks = weeks || 2
17: end
Get Discipline by name
# File app/models/upcoming_events/base.rb, line 58
58: def [](discipline_name)
59: disciplines.detect { |discipline| discipline.name == discipline_name }
60: end
Set date to nearest Monday
# File app/models/upcoming_events/base.rb, line 34
34: def cutoff_date
35: case date.wday
36: when 0
37: date + (weeks.to_i * 7)
38: when 1
39: date + (weeks.to_i * 7) - 1
40: when 2
41: date + (weeks.to_i * 7) - 2
42: when 3
43: date + (weeks.to_i * 7) - 3
44: when 4
45: date + (weeks.to_i * 7) - 4
46: when 5
47: date + (weeks.to_i * 7) - 5
48: when 6
49: date + (weeks.to_i * 7) + 1
50: end
51: end
# File app/models/upcoming_events/base.rb, line 29
29: def dates
30: @dates ||= (date.to_date..cutoff_date.to_date)
31: end
By default, we‘ll search "all" disciplines (Road and Mountain Bike include other disciplines), but if discipline is present, we will only search that one
# File app/models/upcoming_events/base.rb, line 21
21: def disciplines_for(discipline)
22: if discipline
23: [Discipline[discipline]]
24: else
25: [Discipline[:road], Discipline[:mountain_bike], Discipline[:bmx], Discipline[:track], Discipline[:cyclocross]].compact
26: end
27: end