BathHacked/energy-sparks

View on GitHub
app/services/calendar_init_service.rb

Summary

Maintainability
A
0 mins
Test Coverage
class CalendarInitService
  attr_reader :messages

  def initialize(calendar)
    @calendar = calendar
    @messages = []
  end

  def call
    @calendar.transaction do
      @calendar.calendar_events.where(based_on: nil).find_each do |calendar_event|
        if (parent_event = find_matching_event(@calendar.based_on, calendar_event))
          messages << "Matched child #{calendar_event.display_title} (#{calendar_event.id}) with parent #{parent_event.display_title} (#{parent_event.id})"
          calendar_event.update!(based_on: parent_event)
        end
      end
    end
  rescue => e
    pp e.inspect
  end

  def find_matching_event(calendar, calendar_event)
    calendar.calendar_events.where(
      calendar_event_type: calendar_event.calendar_event_type,
      start_date: calendar_event.start_date,
      end_date: calendar_event.end_date
    ).first
  end
end