Module: EffectiveEventsHelper
- Defined in:
- app/helpers/effective_events_helper.rb
Instance Method Summary collapse
- #admin_event_status_badge(event) ⇒ Object
- #effective_events_event_products_collection(event, namespace = nil) ⇒ Object
- #effective_events_event_schedule(event) ⇒ Object
- #effective_events_event_tickets_collection(event, namespace = nil) ⇒ Object
- #effective_events_ticket_prices(event, ticket) ⇒ Object
-
#event_label ⇒ Object
Event.
- #event_status_badge(event) ⇒ Object
-
#events_label ⇒ Object
Events.
-
#events_name_label ⇒ Object
Events.
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.(self, :admin, :effective_events) if event.try(:archived?) content_tag(:span, 'ARCHIVED', class: 'badge badge-secondary') elsif event.draft? content_tag(:span, 'NOT PUBLISHED', class: 'badge badge-danger') elsif event.published? == false content_tag(: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 = (namespace == :admin) products = ( ? 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 ( || 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 = (namespace == :admin) member = current_user.try(:membership_present?) tickets = ( ? event.event_tickets : event.event_tickets.reject(&:archived?)) tickets = tickets.reject { |ticket| ticket.member_only? } unless ( || 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 ( || 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_label ⇒ Object
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| content_tag(:span, "#{role.to_s.upcase} ONLY", class: 'badge badge-secondary') end.join(' ').html_safe end |
#events_label ⇒ Object
Events
14 15 16 |
# File 'app/helpers/effective_events_helper.rb', line 14 def events_label ets(Effective::Event) end |
#events_name_label ⇒ Object
Events
4 5 6 |
# File 'app/helpers/effective_events_helper.rb', line 4 def events_name_label et('effective_events.name') end |