effective_events 0.16.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/app/datatables/admin/effective_event_tickets_datatable.rb +5 -4
 - data/app/datatables/effective_event_registrants_datatable.rb +2 -1
 - data/app/mailers/effective/events_mailer.rb +1 -1
 - data/app/models/effective/event.rb +0 -4
 - data/app/models/effective/event_notification.rb +2 -0
 - data/app/models/effective/event_registrant.rb +40 -15
 - data/app/models/effective/event_ticket.rb +1 -1
 - data/app/views/admin/event_addons/_form.html.haml +10 -5
 - data/app/views/admin/event_registrants/_form.html.haml +10 -6
 - data/app/views/admin/event_tickets/_form.html.haml +6 -6
 - data/app/views/admin/events/_form_event.html.haml +1 -1
 - data/app/views/effective/event_registrants/_fields.html.haml +0 -4
 - data/app/views/effective/event_registrants/_fields_member_only.html.haml +10 -3
 - data/app/views/effective/event_registrants/_fields_member_or_non_member.html.haml +10 -3
 - data/app/views/effective/event_registrants/_fields_regular.html.haml +3 -3
 - data/app/views/effective/event_registrations/_event_tickets.html.haml +2 -2
 - data/app/views/effective/event_registrations/checkout.html.haml +2 -3
 - data/app/views/effective/event_registrations/submitted.html.haml +2 -2
 - data/app/views/effective/event_registrations/tickets.html.haml +2 -1
 - data/config/effective_events.rb +4 -0
 - data/config/locales/effective_events.en.yml +1 -1
 - data/config/routes.rb +2 -0
 - data/db/migrate/101_create_effective_events.rb +2 -1
 - data/lib/effective_events/version.rb +1 -1
 - data/lib/effective_events.rb +5 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 192d39046e600f74608d6f9b5bf1cc90f14be13eabb74ceed9365579919e2a95
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: af3326868396402818278f3144a3ea061c417c1b65e7cc178be801726bb16d59
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 3160971a296127da50d08aae0a1b35939d18f83aa65b479043b8f832b79812975c5b46759f9caab63f3b19b72d3ae0b3b372293011b45ee59dc4c0bd60753339
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: b899987a70b37e98033d2c1ad634bfe65b00610b0326cdf353edeadc1c4fe6ecb8a2db7bbb26e53f383c1f339acb163a4e850fbac9941362c6d8abd2ee28dfeb
         
     | 
| 
         @@ -18,10 +18,14 @@ module Admin 
     | 
|
| 
       18 
18 
     | 
    
         
             
                  col :title
         
     | 
| 
       19 
19 
     | 
    
         
             
                  col :category, visible: false
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                  col :early_bird_price, as: :price, visible: event 
     | 
| 
      
 21 
     | 
    
         
            +
                  col :early_bird_price, as: :price, visible: event&.early_bird_end_at.present?
         
     | 
| 
       22 
22 
     | 
    
         
             
                  col :regular_price, as: :price
         
     | 
| 
       23 
23 
     | 
    
         
             
                  col :member_price, as: :price
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
                  col :waitlist
         
     | 
| 
      
 26 
     | 
    
         
            +
                  col :capacity_available, visible: false
         
     | 
| 
      
 27 
     | 
    
         
            +
                  col :capacity, label: 'Capacity Total', visible: false
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       25 
29 
     | 
    
         
             
                  col :capacity_to_s, label: 'Capacity' do |ticket|
         
     | 
| 
       26 
30 
     | 
    
         
             
                    if ticket.capacity.present? && ticket.waitlist?
         
     | 
| 
       27 
31 
     | 
    
         
             
                      "#{ticket.capacity_available} remaining / #{ticket.capacity} total. #{ticket.waitlisted_event_registrants_count} waitlisted."
         
     | 
| 
         @@ -44,9 +48,6 @@ module Admin 
     | 
|
| 
       44 
48 
     | 
    
         
             
                    event.event_registrants.purchased.unarchived.count
         
     | 
| 
       45 
49 
     | 
    
         
             
                  end
         
     | 
| 
       46 
50 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                  col :capacity_available, visible: false
         
     | 
| 
       48 
     | 
    
         
            -
                  col :capacity, label: 'Capacity Total', visible: false
         
     | 
| 
       49 
     | 
    
         
            -
                  col :waitlist, visible: false
         
     | 
| 
       50 
51 
     | 
    
         | 
| 
       51 
52 
     | 
    
         
             
                  col :question1, visible: false
         
     | 
| 
       52 
53 
     | 
    
         
             
                  col :question2, visible: false
         
     | 
| 
         @@ -6,7 +6,8 @@ class EffectiveEventRegistrantsDatatable < Effective::Datatable 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                col :name do |er|
         
     | 
| 
       8 
8 
     | 
    
         
             
                  if er.first_name.present?
         
     | 
| 
       9 
     | 
    
         
            -
                     
     | 
| 
      
 9 
     | 
    
         
            +
                    email = (er.user.present? ? masked_email(er.user) : er.email)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    "#{er.first_name} #{er.last_name}<br><small>#{email}</small>"
         
     | 
| 
       10 
11 
     | 
    
         
             
                  elsif er.owner.present?
         
     | 
| 
       11 
12 
     | 
    
         
             
                    er.owner.to_s + ' - GUEST'
         
     | 
| 
       12 
13 
     | 
    
         
             
                  else
         
     | 
| 
         @@ -8,7 +8,7 @@ module Effective 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  raise('expected an Effective::EventRegistrant') unless resource.kind_of?(Effective::EventRegistrant)
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                  @assigns = assigns_for(resource)
         
     | 
| 
       11 
     | 
    
         
            -
                  mail(to: resource. 
     | 
| 
      
 11 
     | 
    
         
            +
                  mail(to: resource.member_email, **headers_for(resource, opts))
         
     | 
| 
       12 
12 
     | 
    
         
             
                end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
                protected
         
     | 
| 
         @@ -166,10 +166,6 @@ module Effective 
     | 
|
| 
       166 
166 
     | 
    
         
             
                  errors.add(:delayed_payment, 'no delayed payment processor available') unless EffectiveOrders.try(:delayed?)
         
     | 
| 
       167 
167 
     | 
    
         
             
                end
         
     | 
| 
       168 
168 
     | 
    
         | 
| 
       169 
     | 
    
         
            -
                validate(if: -> { delayed_payment_date && registration_end_at }) do
         
     | 
| 
       170 
     | 
    
         
            -
                  errors.add(:delayed_payment_date, 'must be after registration end date') unless registration_end_at < delayed_payment_date
         
     | 
| 
       171 
     | 
    
         
            -
                end
         
     | 
| 
       172 
     | 
    
         
            -
             
     | 
| 
       173 
169 
     | 
    
         
             
                validate(if: -> { file.attached? }) do
         
     | 
| 
       174 
170 
     | 
    
         
             
                  errors.add(:file, 'must be an image') unless file.image?
         
     | 
| 
       175 
171 
     | 
    
         
             
                end
         
     | 
| 
         @@ -150,6 +150,8 @@ module Effective 
     | 
|
| 
       150 
150 
     | 
    
         
             
                  update_column(:started_at, Time.zone.now)
         
     | 
| 
       151 
151 
     | 
    
         | 
| 
       152 
152 
     | 
    
         
             
                  event_registrants.each do |event_registrant|
         
     | 
| 
      
 153 
     | 
    
         
            +
                    next if event_registrant.member_email.blank?
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
       153 
155 
     | 
    
         
             
                    begin
         
     | 
| 
       154 
156 
     | 
    
         
             
                      EffectiveEvents.send_email(email_template, event_registrant, email_notification_params)
         
     | 
| 
       155 
157 
     | 
    
         
             
                    rescue => e
         
     | 
| 
         @@ -32,7 +32,6 @@ module Effective 
     | 
|
| 
       32 
32 
     | 
    
         
             
                  company               :string
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
                  blank_registrant      :boolean
         
     | 
| 
       35 
     | 
    
         
            -
                  member_registrant     :boolean
         
     | 
| 
       36 
35 
     | 
    
         | 
| 
       37 
36 
     | 
    
         
             
                  waitlisted            :boolean
         
     | 
| 
       38 
37 
     | 
    
         
             
                  promoted              :boolean      # An admin marked this registrant as promoted from the waitlist
         
     | 
| 
         @@ -59,8 +58,6 @@ module Effective 
     | 
|
| 
       59 
58 
     | 
    
         | 
| 
       60 
59 
     | 
    
         
             
                scope :sorted, -> { order(:last_name) }
         
     | 
| 
       61 
60 
     | 
    
         
             
                scope :deep, -> { includes(:event, :event_ticket, :owner) }
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                #scope :registered, -> { purchased_or_deferred.unarchived }
         
     | 
| 
       64 
61 
     | 
    
         
             
                scope :registered, -> { where.not(registered_at: nil) }
         
     | 
| 
       65 
62 
     | 
    
         | 
| 
       66 
63 
     | 
    
         
             
                before_validation(if: -> { event_registration.present? }) do
         
     | 
| 
         @@ -69,7 +66,7 @@ module Effective 
     | 
|
| 
       69 
66 
     | 
    
         
             
                end
         
     | 
| 
       70 
67 
     | 
    
         | 
| 
       71 
68 
     | 
    
         
             
                before_validation(if: -> { blank_registrant? }) do
         
     | 
| 
       72 
     | 
    
         
            -
                  assign_attributes(user: nil, first_name: nil, last_name: nil, email: nil)
         
     | 
| 
      
 69 
     | 
    
         
            +
                  assign_attributes(user: nil, first_name: nil, last_name: nil, email: nil, company: nil)
         
     | 
| 
       73 
70 
     | 
    
         
             
                end
         
     | 
| 
       74 
71 
     | 
    
         | 
| 
       75 
72 
     | 
    
         
             
                before_validation(if: -> { user.present? }) do
         
     | 
| 
         @@ -89,22 +86,24 @@ module Effective 
     | 
|
| 
       89 
86 
     | 
    
         
             
                validates :email, email: true
         
     | 
| 
       90 
87 
     | 
    
         | 
| 
       91 
88 
     | 
    
         
             
                # Member Only Ticket
         
     | 
| 
       92 
     | 
    
         
            -
                with_options(if: -> { event_ticket&.member_only?  
     | 
| 
      
 89 
     | 
    
         
            +
                with_options(if: -> { event_ticket&.member_only? && present_registrant? }) do
         
     | 
| 
       93 
90 
     | 
    
         
             
                  validates :user_id, presence: { message: 'Please select a member' }
         
     | 
| 
       94 
91 
     | 
    
         
             
                end
         
     | 
| 
       95 
92 
     | 
    
         | 
| 
       96 
93 
     | 
    
         
             
                # Regular Ticket
         
     | 
| 
       97 
     | 
    
         
            -
                with_options(if: -> { event_ticket&.regular?  
     | 
| 
       98 
     | 
    
         
            -
                  validates :first_name, presence: true
         
     | 
| 
       99 
     | 
    
         
            -
                  validates :last_name, presence: true
         
     | 
| 
       100 
     | 
    
         
            -
                  validates :email, presence: true
         
     | 
| 
      
 94 
     | 
    
         
            +
                with_options(if: -> { event_ticket&.regular? && present_registrant? }) do
         
     | 
| 
      
 95 
     | 
    
         
            +
                  validates :first_name, presence: true, unless: -> { EffectiveEvents.event_registrant_required_fields.exclude?(:first_name) }
         
     | 
| 
      
 96 
     | 
    
         
            +
                  validates :last_name, presence: true, unless: -> { EffectiveEvents.event_registrant_required_fields.exclude?(:last_name) }
         
     | 
| 
      
 97 
     | 
    
         
            +
                  validates :email, presence: true, unless: -> { EffectiveEvents.event_registrant_required_fields.exclude?(:email) }
         
     | 
| 
      
 98 
     | 
    
         
            +
                  validates :company, presence: true, unless: -> { EffectiveEvents.event_registrant_required_fields.exclude?(:company) }
         
     | 
| 
       101 
99 
     | 
    
         
             
                end
         
     | 
| 
       102 
100 
     | 
    
         | 
| 
       103 
     | 
    
         
            -
                with_options(if: -> { event_ticket&.member_or_non_member? &&  
     | 
| 
       104 
     | 
    
         
            -
                  validates :user_id, presence: { message: 'Please select a member' }, unless: -> { first_name.present? || last_name.present?  
     | 
| 
       105 
     | 
    
         
            -
                  validates :first_name, presence: true, unless: -> { user.present? }
         
     | 
| 
       106 
     | 
    
         
            -
                  validates :last_name, presence: true, unless: -> { user.present? }
         
     | 
| 
       107 
     | 
    
         
            -
                  validates :email, presence: true, unless: -> { user.present? }
         
     | 
| 
      
 101 
     | 
    
         
            +
                with_options(if: -> { event_ticket&.member_or_non_member? && present_registrant? }) do
         
     | 
| 
      
 102 
     | 
    
         
            +
                  validates :user_id, presence: { message: 'Please select a member' }, unless: -> { first_name.present? || last_name.present? }
         
     | 
| 
      
 103 
     | 
    
         
            +
                  validates :first_name, presence: true, unless: -> { user.present? || EffectiveEvents.event_registrant_required_fields.exclude?(:first_name) }
         
     | 
| 
      
 104 
     | 
    
         
            +
                  validates :last_name, presence: true, unless: -> { user.present? || EffectiveEvents.event_registrant_required_fields.exclude?(:last_name) }
         
     | 
| 
      
 105 
     | 
    
         
            +
                  validates :email, presence: true, unless: -> { user.present? || EffectiveEvents.event_registrant_required_fields.exclude?(:email) }
         
     | 
| 
      
 106 
     | 
    
         
            +
                  validates :company, presence: true, unless: -> { user.present? || EffectiveEvents.event_registrant_required_fields.exclude?(:company) }
         
     | 
| 
       108 
107 
     | 
    
         
             
                end
         
     | 
| 
       109 
108 
     | 
    
         | 
| 
       110 
109 
     | 
    
         
             
                after_defer do
         
     | 
| 
         @@ -138,7 +137,15 @@ module Effective 
     | 
|
| 
       138 
137 
     | 
    
         
             
                end
         
     | 
| 
       139 
138 
     | 
    
         | 
| 
       140 
139 
     | 
    
         
             
                def member_present?
         
     | 
| 
       141 
     | 
    
         
            -
                  user&.is?(:member) 
     | 
| 
      
 140 
     | 
    
         
            +
                  user&.is?(:member)
         
     | 
| 
      
 141 
     | 
    
         
            +
                end
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
                def member_email
         
     | 
| 
      
 144 
     | 
    
         
            +
                  email.presence || user&.email
         
     | 
| 
      
 145 
     | 
    
         
            +
                end
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
                def present_registrant?
         
     | 
| 
      
 148 
     | 
    
         
            +
                  !blank_registrant?
         
     | 
| 
       142 
149 
     | 
    
         
             
                end
         
     | 
| 
       143 
150 
     | 
    
         | 
| 
       144 
151 
     | 
    
         
             
                def tax_exempt
         
     | 
| 
         @@ -164,6 +171,24 @@ module Effective 
     | 
|
| 
       164 
171 
     | 
    
         
             
                  registered!
         
     | 
| 
       165 
172 
     | 
    
         
             
                end
         
     | 
| 
       166 
173 
     | 
    
         | 
| 
      
 174 
     | 
    
         
            +
                def waitlist!
         
     | 
| 
      
 175 
     | 
    
         
            +
                  raise('expected a waitlist? event_ticket') unless event_ticket.waitlist?
         
     | 
| 
      
 176 
     | 
    
         
            +
             
     | 
| 
      
 177 
     | 
    
         
            +
                  update!(waitlisted: true)
         
     | 
| 
      
 178 
     | 
    
         
            +
                  orders.reject(&:purchased?).each { |order| order.update_purchasable_attributes! }
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
                  true
         
     | 
| 
      
 181 
     | 
    
         
            +
                end
         
     | 
| 
      
 182 
     | 
    
         
            +
             
     | 
| 
      
 183 
     | 
    
         
            +
                def unwaitlist!
         
     | 
| 
      
 184 
     | 
    
         
            +
                  raise('expected a waitlist? event_ticket') unless event_ticket.waitlist?
         
     | 
| 
      
 185 
     | 
    
         
            +
             
     | 
| 
      
 186 
     | 
    
         
            +
                  update!(waitlisted: false)
         
     | 
| 
      
 187 
     | 
    
         
            +
                  orders.reject(&:purchased?).each { |order| order.update_purchasable_attributes! }
         
     | 
| 
      
 188 
     | 
    
         
            +
             
     | 
| 
      
 189 
     | 
    
         
            +
                  true
         
     | 
| 
      
 190 
     | 
    
         
            +
                end
         
     | 
| 
      
 191 
     | 
    
         
            +
             
     | 
| 
       167 
192 
     | 
    
         
             
                def promote!
         
     | 
| 
       168 
193 
     | 
    
         
             
                  raise('expected a waitlist? event_ticket') unless event_ticket.waitlist?
         
     | 
| 
       169 
194 
     | 
    
         | 
| 
         @@ -24,6 +24,7 @@ module Effective 
     | 
|
| 
       24 
24 
     | 
    
         
             
                  title                       :string
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                  capacity                    :integer
         
     | 
| 
      
 27 
     | 
    
         
            +
                  display_capacity            :boolean
         
     | 
| 
       27 
28 
     | 
    
         
             
                  waitlist                    :boolean 
         
     | 
| 
       28 
29 
     | 
    
         | 
| 
       29 
30 
     | 
    
         
             
                  category                    :string
         
     | 
| 
         @@ -68,7 +69,6 @@ module Effective 
     | 
|
| 
       68 
69 
     | 
    
         
             
                validates :early_bird_price, numericality: { greater_than_or_equal_to: 0, allow_blank: true }
         
     | 
| 
       69 
70 
     | 
    
         | 
| 
       70 
71 
     | 
    
         
             
                validates :capacity, numericality: { greater_than_or_equal_to: 0, allow_blank: true }
         
     | 
| 
       71 
     | 
    
         
            -
                validates :capacity, numericality: { greater_than_or_equal_to: 1, message: 'must have a non-zero capacity when using waitlist' }, if: -> { waitlist? }
         
     | 
| 
       72 
72 
     | 
    
         | 
| 
       73 
73 
     | 
    
         
             
                def to_s
         
     | 
| 
       74 
74 
     | 
    
         
             
                  title.presence || 'New Event Ticket'
         
     | 
| 
         @@ -1,4 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            = effective_form_with(model: [:admin, event_addon], engine: true) do |f|
         
     | 
| 
      
 2 
     | 
    
         
            +
              - if inline_datatable?
         
     | 
| 
      
 3 
     | 
    
         
            +
                = f.hidden_field :event_id
         
     | 
| 
      
 4 
     | 
    
         
            +
              - else
         
     | 
| 
      
 5 
     | 
    
         
            +
                = f.select :event_id, Effective::Event.sorted.all,
         
     | 
| 
      
 6 
     | 
    
         
            +
                  'data-load-ajax-url': effective_events.new_admin_event_addon_path,
         
     | 
| 
      
 7 
     | 
    
         
            +
                  'data-load-ajax-div': '#effective-events-event-addon-ajax'
         
     | 
| 
       2 
8 
     | 
    
         
             
              = f.hidden_field :event_id
         
     | 
| 
       3 
9 
     | 
    
         | 
| 
       4 
10 
     | 
    
         
             
              - if f.object.new_record?
         
     | 
| 
         @@ -11,11 +17,10 @@ 
     | 
|
| 
       11 
17 
     | 
    
         
             
              - else
         
     | 
| 
       12 
18 
     | 
    
         
             
                = f.static_field :owner
         
     | 
| 
       13 
19 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
               
     | 
| 
      
 20 
     | 
    
         
            +
              #effective-events-event-addon-ajax
         
     | 
| 
      
 21 
     | 
    
         
            +
                - if f.object.event.present?
         
     | 
| 
      
 22 
     | 
    
         
            +
                  = render 'admin/event_addons/fields', f: f, event: event_addon.event
         
     | 
| 
       15 
23 
     | 
    
         | 
| 
       16 
24 
     | 
    
         
             
              = f.check_box :archived, label: "Archive this addon. It will be displayed as archived on the owner's event registration"
         
     | 
| 
       17 
25 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
       19 
     | 
    
         
            -
                = f.submit 'Save and Mark Registered'
         
     | 
| 
       20 
     | 
    
         
            -
              - else
         
     | 
| 
       21 
     | 
    
         
            -
                = f.submit 'Save'
         
     | 
| 
      
 26 
     | 
    
         
            +
              = f.submit 'Save'
         
     | 
| 
         @@ -1,5 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            = effective_form_with(model: [:admin, event_registrant], engine: true) do |f|
         
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
      
 2 
     | 
    
         
            +
              - if inline_datatable?
         
     | 
| 
      
 3 
     | 
    
         
            +
                = f.hidden_field :event_id
         
     | 
| 
      
 4 
     | 
    
         
            +
              - else
         
     | 
| 
      
 5 
     | 
    
         
            +
                = f.select :event_id, Effective::Event.sorted.all,
         
     | 
| 
      
 6 
     | 
    
         
            +
                  'data-load-ajax-url': effective_events.new_admin_event_registrant_path,
         
     | 
| 
      
 7 
     | 
    
         
            +
                  'data-load-ajax-div': '#effective-events-event-registrant-ajax'
         
     | 
| 
       3 
8 
     | 
    
         | 
| 
       4 
9 
     | 
    
         
             
              - if f.object.new_record?
         
     | 
| 
       5 
10 
     | 
    
         
             
                -# User
         
     | 
| 
         @@ -13,11 +18,10 @@ 
     | 
|
| 
       13 
18 
     | 
    
         | 
| 
       14 
19 
     | 
    
         
             
              = f.datetime_field :registered_at, required: true
         
     | 
| 
       15 
20 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
               
     | 
| 
      
 21 
     | 
    
         
            +
              #effective-events-event-registrant-ajax
         
     | 
| 
      
 22 
     | 
    
         
            +
                - if f.object.event.present?
         
     | 
| 
      
 23 
     | 
    
         
            +
                  = render 'effective/event_registrants/fields', f: f, event: event_registrant.event, namespace: :admin
         
     | 
| 
       17 
24 
     | 
    
         | 
| 
       18 
25 
     | 
    
         
             
              = f.check_box :archived, label: "Archive this registrant. It will be displayed as archived on the owner's event registration"
         
     | 
| 
       19 
26 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
               
     | 
| 
       21 
     | 
    
         
            -
                = f.submit 'Save and Mark Registered'
         
     | 
| 
       22 
     | 
    
         
            -
              - else
         
     | 
| 
       23 
     | 
    
         
            -
                = f.submit 'Save'
         
     | 
| 
      
 27 
     | 
    
         
            +
              = f.submit 'Save'
         
     | 
| 
         @@ -11,26 +11,26 @@ 
     | 
|
| 
       11 
11 
     | 
    
         
             
                    = f.show_if(:category, 'Regular') do
         
     | 
| 
       12 
12 
     | 
    
         
             
                      .alert.alert-info.mb-4
         
     | 
| 
       13 
13 
     | 
    
         
             
                        %strong Regular Ticket:
         
     | 
| 
       14 
     | 
    
         
            -
                        Anyone will be able to purchase this ticket. They will be asked for a first  
     | 
| 
      
 14 
     | 
    
         
            +
                        Anyone will be able to purchase this ticket. They will be asked for a first and last name. Will not display the dropdown list of all members. Only the regular price applies.
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
                    = f.show_if(:category, 'Member Only') do
         
     | 
| 
       17 
17 
     | 
    
         
             
                      .alert.alert-info.mb-4
         
     | 
| 
       18 
18 
     | 
    
         
             
                        %strong Member Only Ticket:
         
     | 
| 
       19 
     | 
    
         
            -
                        Only members will be able to purchase this ticket. They must select a member from the dropdown list of  
     | 
| 
      
 19 
     | 
    
         
            +
                        Only members will be able to purchase this ticket. They must select a member from the dropdown list of all members. Only the member price applies.
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                    = f.show_if(:category, 'Member or Non-Member') do
         
     | 
| 
       22 
22 
     | 
    
         
             
                      .alert.alert-info.mb-4
         
     | 
| 
       23 
23 
     | 
    
         
             
                        %strong Member or Non-Member Ticket:
         
     | 
| 
       24 
     | 
    
         
            -
                        Anyone will be able to purchase this ticket. They can select a member from the dropdown list of  
     | 
| 
       25 
     | 
    
         
            -
                        Or, they can enter a first name, last name and email to receive the regular pricing.
         
     | 
| 
      
 24 
     | 
    
         
            +
                        Anyone will be able to purchase this ticket. They can select a member from the dropdown list of all members to receive the member pricing or they can enter a first name and last name to receive the regular pricing.
         
     | 
| 
       26 
25 
     | 
    
         | 
| 
       27 
26 
     | 
    
         
             
                  .col
         
     | 
| 
       28 
     | 
    
         
            -
                    = f.number_field :capacity, hint: "The number of registrations will be limited to capacity 
     | 
| 
      
 27 
     | 
    
         
            +
                    = f.number_field :capacity, hint: "The number of registrations will be limited to capacity. Leave blank for unlimited capacity."
         
     | 
| 
      
 28 
     | 
    
         
            +
                    = f.check_box :display_capacity, label: "Yes, display the remaining ticket capacity to users during registration", hint: "Leave blank to hide the capacity."
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
                    - if f.object.event&.delayed?
         
     | 
| 
       31 
31 
     | 
    
         
             
                      = f.check_box :waitlist, 
         
     | 
| 
       32 
32 
     | 
    
         
             
                        label: "Yes, add to waitlist once capacity is reached",
         
     | 
| 
       33 
     | 
    
         
            -
                        hint: "requires a delayed payment event. Once capacity is reached, new registrations will be added to the waitlist. Payment information is collected but not charged for waitlisted registrants."
         
     | 
| 
      
 33 
     | 
    
         
            +
                        hint: "requires a delayed payment event. Once capacity is reached, new registrations will be added to the waitlist. Payment information is collected but not charged for waitlisted registrants. To waitlist everyone and promote later, set the capacity to zero."
         
     | 
| 
       34 
34 
     | 
    
         
             
                .row
         
     | 
| 
       35 
35 
     | 
    
         
             
                  .col-md-6
         
     | 
| 
       36 
36 
     | 
    
         
             
                    - if f.object.event&.early_bird_end_at.present?
         
     | 
| 
         @@ -5,7 +5,7 @@ 
     | 
|
| 
       5 
5 
     | 
    
         
             
              = f.hide_if(:save_as_draft, true) do
         
     | 
| 
       6 
6 
     | 
    
         
             
                .row
         
     | 
| 
       7 
7 
     | 
    
         
             
                  .col-md-6
         
     | 
| 
       8 
     | 
    
         
            -
                    = f.datetime_field :published_start_at, hint: 'The event will be available starting on this date and time.'
         
     | 
| 
      
 8 
     | 
    
         
            +
                    = f.datetime_field :published_start_at, hint: 'The event will be available starting on this date and time. Leave blank to publish immediately.'
         
     | 
| 
       9 
9 
     | 
    
         
             
                  .col-md-6
         
     | 
| 
       10 
10 
     | 
    
         
             
                    = f.datetime_field :published_end_at, hint: 'The event will no longer be available after this date and time. Leave blank for no end date.', date_linked: false
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
         @@ -17,10 +17,6 @@ 
     | 
|
| 
       17 
17 
     | 
    
         
             
                    - else
         
     | 
| 
       18 
18 
     | 
    
         
             
                      = f.hidden_field :blank_registrant, value: false
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                    - if ticket.member_or_non_member?
         
     | 
| 
       21 
     | 
    
         
            -
                      = f.show_if(:blank_registrant, true, nested: true) do 
         
     | 
| 
       22 
     | 
    
         
            -
                        = f.check_box :member_registrant, label: 'Yes, this ticket will be for a member'
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
20 
     | 
    
         
             
                    = f.show_if(:blank_registrant, false, nested: true) do
         
     | 
| 
       25 
21 
     | 
    
         
             
                      %hr
         
     | 
| 
       26 
22 
     | 
    
         | 
| 
         @@ -1,3 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            - # Choose member
         
     | 
| 
       2 
     | 
    
         
            -
            = f. 
     | 
| 
       3 
     | 
    
         
            -
            =  
     | 
| 
      
 1 
     | 
    
         
            +
            - # Choose ANY member
         
     | 
| 
      
 2 
     | 
    
         
            +
            - klass = (f.object.user || current_user).class
         
     | 
| 
      
 3 
     | 
    
         
            +
            - ajax_url = (@select2_users_ajax_path || effective_memberships.member_users_membership_select2_ajax_index_path) unless Rails.env.test?
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            = f.hidden_field :user_type, value: klass.name
         
     | 
| 
      
 6 
     | 
    
         
            +
            = f.select :user_id, klass.all, ajax_url: ajax_url, label: 'Member', required: true, hint: effective_events_event_registrant_user_hint()
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            - # Choose RELATED ORGANIZATION member
         
     | 
| 
      
 9 
     | 
    
         
            +
            -# = f.hidden_field :user_type, value: current_user.class.name
         
     | 
| 
      
 10 
     | 
    
         
            +
            -# = f.select :user_id, effective_events_event_registrant_user_collection(f.object), required: true, hint: effective_events_event_registrant_user_hint()
         
     | 
| 
         @@ -1,6 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            - # Choose member
         
     | 
| 
       2 
     | 
    
         
            -
            = f. 
     | 
| 
       3 
     | 
    
         
            -
            =  
     | 
| 
      
 1 
     | 
    
         
            +
            - # Choose ANY member
         
     | 
| 
      
 2 
     | 
    
         
            +
            - klass = (f.object.user || current_user).class
         
     | 
| 
      
 3 
     | 
    
         
            +
            - ajax_url = (@select2_users_ajax_path || effective_memberships.member_users_membership_select2_ajax_index_path) unless Rails.env.test?
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            = f.hidden_field :user_type, value: klass.name
         
     | 
| 
      
 6 
     | 
    
         
            +
            = f.select :user_id, klass.all, ajax_url: ajax_url, label: 'Member', hint: effective_events_event_registrant_user_hint()
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            - # Choose RELATED ORGANIZATION member
         
     | 
| 
      
 9 
     | 
    
         
            +
            -# = f.hidden_field :user_type, value: current_user.class.name
         
     | 
| 
      
 10 
     | 
    
         
            +
            -# = f.select :user_id, effective_events_event_registrant_user_collection(f.object), hint: effective_events_event_registrant_user_hint()
         
     | 
| 
       4 
11 
     | 
    
         | 
| 
       5 
12 
     | 
    
         
             
            = f.show_if(:user_id, '', nested: true) do
         
     | 
| 
       6 
13 
     | 
    
         
             
              %p.text-center - or -
         
     | 
| 
         @@ -1,8 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            - # Choose non-member
         
     | 
| 
       2 
2 
     | 
    
         
             
            .row
         
     | 
| 
       3 
     | 
    
         
            -
              .col-md= f.text_field :first_name 
     | 
| 
       4 
     | 
    
         
            -
              .col-md= f.text_field :last_name 
     | 
| 
      
 3 
     | 
    
         
            +
              .col-md= f.text_field :first_name
         
     | 
| 
      
 4 
     | 
    
         
            +
              .col-md= f.text_field :last_name
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            .row
         
     | 
| 
       7 
     | 
    
         
            -
              .col-md= f.email_field :email 
     | 
| 
      
 7 
     | 
    
         
            +
              .col-md= f.email_field :email
         
     | 
| 
       8 
8 
     | 
    
         
             
              .col-md= f.text_field :company
         
     | 
| 
         @@ -13,14 +13,14 @@ 
     | 
|
| 
       13 
13 
     | 
    
         
             
                      %th Ticket
         
     | 
| 
       14 
14 
     | 
    
         
             
                      - if member_column
         
     | 
| 
       15 
15 
     | 
    
         
             
                        %th Member Price
         
     | 
| 
       16 
     | 
    
         
            -
                      %th #{' 
     | 
| 
      
 16 
     | 
    
         
            +
                      %th #{'Regular ' if member_column}Price
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                  %tbody
         
     | 
| 
       19 
19 
     | 
    
         
             
                    - tickets.each do |ticket|
         
     | 
| 
       20 
20 
     | 
    
         
             
                      %tr
         
     | 
| 
       21 
21 
     | 
    
         
             
                        %td
         
     | 
| 
       22 
22 
     | 
    
         
             
                          = ticket.to_s
         
     | 
| 
       23 
     | 
    
         
            -
                          - if ticket.capacity.present?
         
     | 
| 
      
 23 
     | 
    
         
            +
                          - if ticket.capacity.present? && ticket.display_capacity?
         
     | 
| 
       24 
24 
     | 
    
         
             
                            %br
         
     | 
| 
       25 
25 
     | 
    
         
             
                            %small
         
     | 
| 
       26 
26 
     | 
    
         
             
                              #{ticket.capacity_available} remaining
         
     | 
| 
         @@ -3,17 +3,16 @@ 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
              - if resource.submit_order.deferred?
         
     | 
| 
       5 
5 
     | 
    
         
             
                = card do
         
     | 
| 
       6 
     | 
    
         
            -
                  = render_checkout_step2(resource.submit_order, purchased_url: wizard_path(:complete), deferred_url: wizard_path(:submitted), declined_url: wizard_path(:checkout) 
     | 
| 
      
 6 
     | 
    
         
            +
                  = render_checkout_step2(resource.submit_order, purchased_url: wizard_path(:complete), deferred_url: wizard_path(:submitted), declined_url: wizard_path(:checkout))
         
     | 
| 
       7 
7 
     | 
    
         
             
              - elsif resource.event.registerable? == false
         
     | 
| 
       8 
8 
     | 
    
         
             
                .alert.alert-danger Your selected event is no longer available for registration.
         
     | 
| 
       9 
9 
     | 
    
         
             
              - elsif resource.unavailable_event_tickets.present?
         
     | 
| 
       10 
10 
     | 
    
         
             
                .alert.alert-danger Your selected number of event tickets are no longer available.
         
     | 
| 
       11 
11 
     | 
    
         
             
              - elsif resource.unavailable_event_products.present?
         
     | 
| 
       12 
12 
     | 
    
         
             
                .alert.alert-danger Your selected number of event add-ons are no longer available.
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
13 
     | 
    
         
             
              - else
         
     | 
| 
       15 
14 
     | 
    
         
             
                = card do
         
     | 
| 
       16 
     | 
    
         
            -
                  = render_checkout_step2(resource.submit_order, purchased_url: wizard_path(:complete), deferred_url: wizard_path(:submitted), declined_url: wizard_path(:checkout) 
     | 
| 
      
 15 
     | 
    
         
            +
                  = render_checkout_step2(resource.submit_order, purchased_url: wizard_path(:complete), deferred_url: wizard_path(:submitted), declined_url: wizard_path(:checkout))
         
     | 
| 
       17 
16 
     | 
    
         | 
| 
       18 
17 
     | 
    
         
             
              - if resource.submit_order.delayed? && resource.submit_order.deferred?
         
     | 
| 
       19 
18 
     | 
    
         
             
                = link_to 'Save and Continue', wizard_path(:submitted), class: 'btn btn-primary'
         
     | 
| 
         @@ -4,8 +4,8 @@ 
     | 
|
| 
       4 
4 
     | 
    
         
             
              - raise('expected a submitted event_registration') unless resource.submitted?
         
     | 
| 
       5 
5 
     | 
    
         
             
              - raise('expected a deffered event_registration submit_order') unless resource.submit_order&.deferred?
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
              - if resource.event.delayed?
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
              -# - if resource.event.delayed?
         
     | 
| 
      
 8 
     | 
    
         
            +
              -#   - raise('expected event delayed_payment_date to match order delayed_payment_date') unless resource.event.delayed_payment_date == resource.submit_order.delayed_payment_date
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              .mb-4
         
     | 
| 
       11 
11 
     | 
    
         
             
                = link_to "Return to Dashboard", return_to_dashboard_path, class: 'btn btn-lg btn-primary btn-block'
         
     | 
    
        data/config/effective_events.rb
    CHANGED
    
    | 
         @@ -18,6 +18,10 @@ EffectiveEvents.setup do |config| 
     | 
|
| 
       18 
18 
     | 
    
         
             
              # Hint text for event images attachments
         
     | 
| 
       19 
19 
     | 
    
         
             
              config.events_hint_text = 'Hint text that includes required image dimensions'
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
      
 21 
     | 
    
         
            +
              # Validations for Event Registrants
         
     | 
| 
      
 22 
     | 
    
         
            +
              # config.event_registrant_required_fields = [:first_name, :last_name, :email, :company]
         
     | 
| 
      
 23 
     | 
    
         
            +
              config.event_registrant_required_fields = [:first_name, :last_name, :email]
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       21 
25 
     | 
    
         
             
              # Mailer Settings
         
     | 
| 
       22 
26 
     | 
    
         
             
              # Please see config/initializers/effective_resources.rb for default effective_* gem mailer settings
         
     | 
| 
       23 
27 
     | 
    
         
             
              #
         
     | 
    
        data/config/routes.rb
    CHANGED
    
    | 
         @@ -44,6 +44,8 @@ EffectiveEvents::Engine.routes.draw do 
     | 
|
| 
       44 
44 
     | 
    
         
             
                resources :event_registrants, except: [:show] do
         
     | 
| 
       45 
45 
     | 
    
         
             
                  post :promote, on: :member
         
     | 
| 
       46 
46 
     | 
    
         
             
                  post :unpromote, on: :member
         
     | 
| 
      
 47 
     | 
    
         
            +
                  post :waitlist, on: :member
         
     | 
| 
      
 48 
     | 
    
         
            +
                  post :unwaitlist, on: :member
         
     | 
| 
       47 
49 
     | 
    
         | 
| 
       48 
50 
     | 
    
         
             
                  post :archive, on: :member
         
     | 
| 
       49 
51 
     | 
    
         
             
                  post :unarchive, on: :member
         
     | 
| 
         @@ -42,6 +42,8 @@ class CreateEffectiveEvents < ActiveRecord::Migration[6.0] 
     | 
|
| 
       42 
42 
     | 
    
         | 
| 
       43 
43 
     | 
    
         
             
                  t.string :title
         
     | 
| 
       44 
44 
     | 
    
         
             
                  t.integer :capacity
         
     | 
| 
      
 45 
     | 
    
         
            +
                  t.boolean :display_capacity, default: false
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
       45 
47 
     | 
    
         
             
                  t.boolean :waitlist, default: false
         
     | 
| 
       46 
48 
     | 
    
         
             
                  t.string :category
         
     | 
| 
       47 
49 
     | 
    
         | 
| 
         @@ -84,7 +86,6 @@ class CreateEffectiveEvents < ActiveRecord::Migration[6.0] 
     | 
|
| 
       84 
86 
     | 
    
         
             
                  t.text :notes
         
     | 
| 
       85 
87 
     | 
    
         | 
| 
       86 
88 
     | 
    
         
             
                  t.boolean :blank_registrant, default: false
         
     | 
| 
       87 
     | 
    
         
            -
                  t.boolean :member_registrant, default: false
         
     | 
| 
       88 
89 
     | 
    
         | 
| 
       89 
90 
     | 
    
         
             
                  t.boolean :waitlisted, default: false
         
     | 
| 
       90 
91 
     | 
    
         
             
                  t.boolean :promoted, default: false
         
     | 
    
        data/lib/effective_events.rb
    CHANGED
    
    | 
         @@ -9,7 +9,7 @@ module EffectiveEvents 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  :events_table_name, :event_registrants_table_name, :event_tickets_table_name,
         
     | 
| 
       10 
10 
     | 
    
         
             
                  :event_registrations_table_name, :event_products_table_name, :event_addons_table_name, :event_notifications_table_name,
         
     | 
| 
       11 
11 
     | 
    
         
             
                  :mailer, :parent_mailer, :deliver_method, :mailer_layout, :mailer_sender, :mailer_admin, :mailer_subject,
         
     | 
| 
       12 
     | 
    
         
            -
                  :layout, :per_page, :use_effective_roles, :categories, :events_hint_text,
         
     | 
| 
      
 12 
     | 
    
         
            +
                  :layout, :per_page, :use_effective_roles, :categories, :events_hint_text, :event_registrant_required_fields,
         
     | 
| 
       13 
13 
     | 
    
         
             
                  :event_registration_class_name
         
     | 
| 
       14 
14 
     | 
    
         
             
                ]
         
     | 
| 
       15 
15 
     | 
    
         
             
              end
         
     | 
| 
         @@ -28,4 +28,8 @@ module EffectiveEvents 
     | 
|
| 
       28 
28 
     | 
    
         
             
                Array(config[:categories]) - [nil, false, '']
         
     | 
| 
       29 
29 
     | 
    
         
             
              end
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
      
 31 
     | 
    
         
            +
              def event_registrant_required_fields
         
     | 
| 
      
 32 
     | 
    
         
            +
                (Array(config[:event_registrant_required_fields]) - [nil, false, '']).map(&:to_sym)
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       31 
35 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: effective_events
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.18.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Code and Effect
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2024- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2024-07-16 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rails
         
     |