Module: Calendrier::EventExtension

Defined in:
lib/calendrier/controllers/event_extension.rb

Instance Method Summary collapse

Instance Method Details

#sort_events(events) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/calendrier/controllers/event_extension.rb', line 4

def sort_events(events)
  events_by_date = {}

  events.sort_by { |obj| get_event_stamp(obj) }.each do |event|

    begin_date = Time.at(get_event_stamp(event)).to_date
    end_date = Time.at(get_event_stamp(event, :end_time => true)).to_date

    duration_in_days = (end_date - begin_date).to_i + 1

    duration_in_days.times do |index|
      current_date = begin_date + index
      date_arr = [current_date.year.to_s, current_date.month.to_s, current_date.day.to_s]
      exist = begin
        true if events_by_date[current_date.year.to_s][current_date.month.to_s][current_date.day.to_s]
      rescue NoMethodError
        false
      end
      # create recursive hash {"2012"=>{"5"=>{"21"=>[]}}}
      events_by_date = events_rmerge(events_by_date, date_arr.reverse.inject([]) { |a, n| {n=>a} }) unless exist

      unless events_by_date[current_date.year.to_s][current_date.month.to_s][current_date.day.to_s].include? event
        events_by_date[current_date.year.to_s][current_date.month.to_s][current_date.day.to_s] << event
      end
    end
  end

  return events_by_date
end