diff --git a/app/models/communication/website/agenda/event/with_cal.rb b/app/models/communication/website/agenda/event/with_cal.rb index 48df9eafb8725ced0cdd0e170253e7e64c00fb17..450d395dc9dff051fc23e4991683a06d99bd52cc 100644 --- a/app/models/communication/website/agenda/event/with_cal.rb +++ b/app/models/communication/website/agenda/event/with_cal.rb @@ -3,37 +3,41 @@ module Communication::Website::Agenda::Event::WithCal def cal @cal ||= AddToCalendar::URLs.new( - start_datetime: from_time, - end_datetime: to_time, + start_datetime: cal_from_time, + end_datetime: cal_to_time, timezone: timezone.name, + all_day: cal_all_day, title: "#{title} #{subtitle}", url: url, - description: summary, - all_day: (from_hour.nil? && to_hour.nil?) + description: summary ) end protected - def from_time + def cal_from_time from_hour.nil? ? from_day.to_time : date_and_time(from_day, from_hour) end - def to_time - if to_day.nil? && to_hour.nil? - # Pas de fin - nil - elsif to_day.nil? && to_hour.present? - # Heure de fin sans jour de fin, donc on se base sur le jour de début - date_and_time(from_day, to_hour) - elsif to_day.present? && to_hour.nil? - # Jour de fin seul - to_day.to_time - elsif to_day.present? && to_hour.nil? - # Jour et heure de fin - date_and_time(to_day, to_hour) - end + def cal_to_time + to_day.nil? ? cal_to_time_with_no_end_day + : cal_to_time_with_end_day + end + + def cal_all_day + from_hour.nil? && to_hour.nil? + end + + # Ce cas n'est plus possible depuis la résolution #1386 + def cal_to_time_with_no_end_day + to_hour.nil? ? nil # Pas de fin + : date_and_time(from_day, to_hour) # Heure de fin sans jour de fin, donc on se base sur le jour de début + end + + def cal_to_time_with_end_day + to_hour.nil? ? to_day.to_time + 1.hour # Jour de fin seul, on ajoute 1 heure pour éviter les événements sans durée + : date_and_time(to_day, to_hour) # Jour et heure de fin end def timezone