Module: EffectiveEventsHelper

Defined in:
app/helpers/effective_events_helper.rb

Instance Method Summary collapse

Instance Method Details

#admin_event_status_badge(event) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'app/helpers/effective_events_helper.rb', line 24

def admin_event_status_badge(event)
  return nil unless EffectiveResources.authorized?(self, :admin, :effective_events)

  if event.try(:archived?)
    (:span, 'ARCHIVED', class: 'badge badge-secondary')
  elsif event.draft?
    (:span, 'NOT PUBLISHED', class: 'badge badge-danger')
  elsif event.published? == false
    (:span, "TO BE PUBLISHED AT #{event.published_start_at&.strftime('%F %H:%M') || 'LATER'}", class: 'badge badge-danger')
  end
end

#effective_events_event_products_collection(event, namespace = nil) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'app/helpers/effective_events_helper.rb', line 97

def effective_events_event_products_collection(event, namespace = nil)
  raise('expected an Effective::Event') unless event.kind_of?(Effective::Event)

  # Allow an admin to assign archived products
  authorized = (namespace == :admin)
  products = (authorized ? event.event_products : event.event_products.reject(&:archived?))

  products.map do |product|
    title = product.to_s
    price = (product.price == 0 ? '$0' : price_to_currency(product.price))
    remaining = (product.capacity.present? ? "#{product.capacity_available} remaining" : nil)

    label = [title, price, remaining].compact.join(' - ')
    disabled = { disabled: :disabled } unless (authorized || event.event_product_available?(product, quantity: 1))

    [label, product.to_param, disabled].compact
  end
end

#effective_events_event_schedule(event) ⇒ Object



36
37
38
39
40
41
42
# File 'app/helpers/effective_events_helper.rb', line 36

def effective_events_event_schedule(event)
  if event.start_at.beginning_of_day == event.end_at.beginning_of_day
    "#{event.start_at.strftime("%A, %B %d, %Y · %l:%M%P")} - #{event.end_at.strftime("%l:%M%P")}"
  else
    "#{event.start_at.strftime("%A, %B %d, %Y")} - #{event.end_at.strftime("%A, %B %d, %Y")}"
  end
end

#effective_events_event_tickets_collection(event, namespace = nil) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'app/helpers/effective_events_helper.rb', line 73

def effective_events_event_tickets_collection(event, namespace = nil)
  raise('expected an Effective::Event') unless event.kind_of?(Effective::Event)

  # Allow an admin to assign archived tickets
  authorized = (namespace == :admin)
  member = current_user.try(:membership_present?)

  tickets = (authorized ? event.event_tickets : event.event_tickets.reject(&:archived?))
  tickets = tickets.reject { |ticket| ticket.member_only? } unless (authorized || member)

  tickets.map do |ticket|
    title = ticket.to_s
    title = "#{title} (archived)" if ticket.archived?

    price = effective_events_ticket_prices(event, ticket)

    label = [title, price].compact.join(' - ').html_safe

    disabled = { disabled: :disabled } unless (authorized || ticket.waitlist? || event.event_ticket_available?(ticket, quantity: 1))

    [label, ticket.to_param, disabled].compact
  end
end

#effective_events_ticket_prices(event, ticket) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'app/helpers/effective_events_helper.rb', line 44

def effective_events_ticket_prices(event, ticket)
  raise('expected an Effective::Event') unless event.kind_of?(Effective::Event)
  raise('expected an Effective::EventTicket') unless ticket.kind_of?(Effective::EventTicket)

  guest_of_member = (ticket.guest_of_member? && (current_user.try(:membership_present?) || current_user.is_any?(:member)))

  prices = if event.early_bird? && ticket.early_bird_price.present?
    { 
      ticket.early_bird_price => badge('Early Bird', 'badge-warning')
    }
  elsif ticket.members?
    { 
      ticket.member_price => badge('Member'),
      (ticket.guest_of_member_price if guest_of_member) => badge('Guest of Member')
    }
  elsif ticket.anyone?
    { 
      ticket.member_price => badge('Member'), 
      (ticket.guest_of_member_price if guest_of_member) => badge('Guest of Member'),
      (ticket.non_member_price unless guest_of_member) => badge('Non-member'),
    }
  end.delete_if { |price| price.blank? }.sort_by { |price| price }

  prices
    .map { |price, badge| [(price == 0 ? '$0' : price_to_currency(price)), badge].join(' ') }
    .to_sentence(last_word_connector: ' or ', two_words_connector: ' or ')
    .html_safe
end

#event_labelObject

Event



9
10
11
# File 'app/helpers/effective_events_helper.rb', line 9

def event_label
  et(Effective::Event)
end

#event_status_badge(event) ⇒ Object



18
19
20
21
22
# File 'app/helpers/effective_events_helper.rb', line 18

def event_status_badge(event)
  event.roles.map do |role|
    (:span, "#{role.to_s.upcase} ONLY", class: 'badge badge-secondary')
  end.join(' ').html_safe
end

#events_labelObject

Events



14
15
16
# File 'app/helpers/effective_events_helper.rb', line 14

def events_label
  ets(Effective::Event)
end

#events_name_labelObject

Events



4
5
6
# File 'app/helpers/effective_events_helper.rb', line 4

def events_name_label
  et('effective_events.name')
end