Class: ActsAsFullCalendarEvent::Calendar

Inherits:
Object
  • Object
show all
Defined in:
lib/acts_as_full_calendar_event/services/calendar.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params:) ⇒ Calendar

Returns a new instance of Calendar.



6
7
8
9
10
11
12
# File 'lib/acts_as_full_calendar_event/services/calendar.rb', line 6

def initialize(params:)
  @user_id = params[:user_id] if params.has_key?(:user_id)
  @categories = JSON.parse(params[:categories] || '{}')
  @start_date = params[:start]
  @end_date = params[:end]
  @custom_filter = params[:custom_filter]
end

Instance Attribute Details

#itemsObject (readonly)

Returns the value of attribute items.



3
4
5
# File 'lib/acts_as_full_calendar_event/services/calendar.rb', line 3

def items
  @items
end

Instance Method Details

#available_categoriesObject



36
37
38
39
40
41
42
43
44
# File 'lib/acts_as_full_calendar_event/services/calendar.rb', line 36

def available_categories
  categories = []

  item_classes.each do |item_class|
    categories << item_class.calendar_items_categories
  end

  categories.flatten
end

#filterObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/acts_as_full_calendar_event/services/calendar.rb', line 14

def filter
  @items = []

  item_classes.each do |item_class|
    byebug
    items = item_class.calendar_items
    items = filter_by_category(items, item_class) if has_categories_filter?
    items = filter_by_date(items)
    items = filter_by_user(items) if has_user_filter?

    if custom_filter.present?
      custom_filter.keys.each do |filter|
        items = items.where(filter => custom_filter[filter])
      end
    end

    @items << items
  end

  items.flatten
end