# File app/models/tools/calendar.rb, line 199 def day_events(day, month, year) all_events = month_events_by_day(month, year) all_events[day].present? ? all_events[day] : [] end
Devuelve la lista de eventos del mes y año indicados.
# File app/models/tools/calendar.rb, line 111 def month_events(month, year) start_day = Time.parse("#{month}/01/#{year}") end_day = start_day.end_of_month # self.find(:all, :conditions => ['starts_at >= ? AND starts_at <= ?', start_day, end_day], # :order => "starts_at") self.find(:all, :conditions => ['starts_at <= :end_day AND (ends_at >= :start_day)', {:start_day => start_day, :end_day => end_day}], :order => "starts_at") end
Devuelve una lista con los eventos para cada día del mes y año indicados. Para los eventos que abarcan más de un día hay una entrada para cada día del evento.
# File app/models/tools/calendar.rb, line 123 def month_events_by_day(month, year) events = self.month_events(month, year) events4day = events.group_by {|e| e.first_day(month, year)} events.each do |evt| if !evt.one_day? evt.days(month, year).each do |day| events4day[day] = [] if events4day[day].blank? events4day[day].push(evt) unless events4day[day].include?(evt) end end end events4day end
Prepara la lista de eventos del mes y año indicadas para usarla en el calendario del mes.
# File app/models/tools/calendar.rb, line 138 def month_events_by_day4cal(month, year) events = {} first_day = Date.civil(year, month, 1) last_day = Date.civil(year, month, -1) self.find(:all, :conditions => [ "(starts_at <= :end_of_day) and (ends_at >= :beginning_of_day)", {:beginning_of_day => (first_day-6.days).beginning_of_day, :end_of_day => (last_day + 6.days).end_of_day}], :order => "starts_at").each do |evt| if evt.one_day? events[evt.month] = {} if events[evt.month].blank? events[evt.month][evt.day] = [] if events[evt.month][evt.day].blank? events[evt.month][evt.day].push(evt) unless events[evt.month][evt.day].include?(evt) else # logger.debug ".......................... more than one day event #{evt.pretty_dates}" if (evt.starts_at.month > evt.ends_at.month) if (month >= evt.starts_at.month) prev_year = year next_year= year + 1 else prev_year = year - 1 next_year = year end (evt.starts_at.month .. 12).each do |m| events[m] = {} if events[m].blank? evt.days(m, prev_year).each do |day| events[m][day] = [] if events[m][day].blank? events[m][day].push(evt) unless events[m][day].include?(evt) end end start_month = 1 else prev_year = year - 1 next_year= year start_month = evt.starts_at.month end (start_month .. evt.ends_at.month).each do |m| events[m] = {} if events[m].blank? evt.days(m, next_year).each do |day| events[m][day] = [] if events[m][day].blank? events[m][day].push(evt) unless events[m][day].include?(evt) end end end # logger.debug ".............. events months: #{events.keys.join(",")}" # logger.debug "............. by now for month #{month}" # if events[month] # events[month].each do |day, evts| # logger.debug "day: #{day}" # logger.debug "eventos: #{evts.map {|e| e.pretty_dates}.join('\n')}" # end # end end events end