diff options
| -rw-r--r-- | app/models/event.rb | 6 | ||||
| -rw-r--r-- | app/models/occurrence.rb | 1 | ||||
| -rw-r--r-- | db/seeds/chapters.rb | 4 |
3 files changed, 6 insertions, 5 deletions
diff --git a/app/models/event.rb b/app/models/event.rb index e2e71c9..b8651a8 100644 --- a/app/models/event.rb +++ b/app/models/event.rb | |||
| @@ -2,12 +2,12 @@ class Event < ApplicationRecord | |||
| 2 | include RruleHumanizer | 2 | include RruleHumanizer |
| 3 | 3 | ||
| 4 | belongs_to :node, optional: true | 4 | belongs_to :node, optional: true |
| 5 | has_many :occurrences | 5 | has_many :occurrences, dependent: :destroy |
| 6 | acts_as_taggable_on :tags | 6 | acts_as_taggable_on :tags |
| 7 | 7 | ||
| 8 | validates :title, presence: true, unless: -> { node_id.present? } | 8 | validates :title, presence: true, unless: -> { node_id.present? } |
| 9 | 9 | ||
| 10 | after_save :generate_occurences | 10 | after_save :generate_occurrences |
| 11 | 11 | ||
| 12 | def occurrences_in_range start_time, end_time | 12 | def occurrences_in_range start_time, end_time |
| 13 | self.occurrences.where( | 13 | self.occurrences.where( |
| @@ -21,7 +21,7 @@ class Event < ApplicationRecord | |||
| 21 | end | 21 | end |
| 22 | 22 | ||
| 23 | private | 23 | private |
| 24 | def generate_occurences | 24 | def generate_occurrences |
| 25 | Occurrence.generate self | 25 | Occurrence.generate self |
| 26 | end | 26 | end |
| 27 | end | 27 | end |
diff --git a/app/models/occurrence.rb b/app/models/occurrence.rb index 41ef4cb..c6a2380 100644 --- a/app/models/occurrence.rb +++ b/app/models/occurrence.rb | |||
| @@ -27,6 +27,7 @@ class Occurrence < ApplicationRecord | |||
| 27 | # event are then calculated and created. | 27 | # event are then calculated and created. |
| 28 | def self.generate event | 28 | def self.generate event |
| 29 | self.where(:event_id => event.id).delete_all | 29 | self.where(:event_id => event.id).delete_all |
| 30 | return if event.start_time.nil? | ||
| 30 | 31 | ||
| 31 | node = event.node | 32 | node = event.node |
| 32 | duration = (event.end_time - event.start_time) | 33 | duration = (event.end_time - event.start_time) |
diff --git a/db/seeds/chapters.rb b/db/seeds/chapters.rb index 0b83987..ad3c9a0 100644 --- a/db/seeds/chapters.rb +++ b/db/seeds/chapters.rb | |||
| @@ -65,13 +65,13 @@ def seed_chapter(parent_id:, slug:, tag:, title_de:, description_de:, | |||
| 65 | 65 | ||
| 66 | # Create events | 66 | # Create events |
| 67 | events.each do |ev| | 67 | events.each do |ev| |
| 68 | base_time = Time.parse("#{Date.today.year}-01-01 #{ev[:start_time] || '19:00'}:00") | 68 | base_time = ev[:start_time] ? Time.parse("#{Date.today.year}-01-01 #{ev[:start_time]}:00") : nil |
| 69 | node.events.create!( | 69 | node.events.create!( |
| 70 | title: title_de, | 70 | title: title_de, |
| 71 | location: ev[:location] || location, | 71 | location: ev[:location] || location, |
| 72 | rrule: ev[:rrule], | 72 | rrule: ev[:rrule], |
| 73 | start_time: base_time, | 73 | start_time: base_time, |
| 74 | end_time: base_time + (ev[:duration_hours] || 2).hours, | 74 | end_time: base_time && base_time + (ev[:duration_hours] || 2).hours, |
| 75 | tag_list: ev[:tag_list] || 'open-day' | 75 | tag_list: ev[:tag_list] || 'open-day' |
| 76 | ) | 76 | ) |
| 77 | end | 77 | end |
