Class: DmEvent::Admin::WorkshopsController
- Inherits:
-
AdminController
- Object
- AdminController
- DmEvent::Admin::WorkshopsController
- Includes:
- CsvExporter, DmCore::PermittedParams, PermittedParams
- Defined in:
- app/controllers/dm_event/admin/workshops_controller.rb
Instance Method Summary collapse
-
#additional_configuration ⇒ Object
Handle any additional configuration, such as selecting the attached blog/forum ——————————————————————————.
-
#ajax_toggle_permission ⇒ Object
——————————————————————————.
-
#create ⇒ Object
——————————————————————————.
-
#destroy ⇒ Object
——————————————————————————.
-
#edit ⇒ Object
——————————————————————————.
-
#edit_system_email ⇒ Object
Edit/create of the registration state emails.
-
#financials ⇒ Object
——————————————————————————.
-
#index ⇒ Object
——————————————————————————.
-
#lost_users ⇒ Object
——————————————————————————.
-
#new ⇒ Object
——————————————————————————.
-
#permissions ⇒ Object
——————————————————————————.
-
#send_payment_reminder_emails ⇒ Object
——————————————————————————.
-
#show ⇒ Object
——————————————————————————.
-
#update ⇒ Object
——————————————————————————.
-
#user_outstanding_balances ⇒ Object
Generate a list of all outstanding balances across all workshops ——————————————————————————.
Methods included from PermittedParams
#registration_params, #system_email_params, #workshop_params, #workshop_price_params
Instance Method Details
#additional_configuration ⇒ Object
Handle any additional configuration, such as selecting the attached blog/forum
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 111 def additional_configuration :manage_events, @workshop if put_or_post? if @workshop.valid? new_blog_id = params[:workshop].delete(:cms_blog).to_i if @workshop.cms_blog.try(:id) != new_blog_id @workshop.cms_blog = new_blog_id == 0 ? nil : CmsBlog.find(new_blog_id) end new_forum_id = params[:workshop].delete(:forum).to_i if @workshop.forum.try(:id) != new_forum_id @workshop.forum = new_forum_id == 0 ? nil : Forum.find(new_forum_id) end #--- remove any extra "custom_field" attributes left during the field definition if params[:workshop][:custom_field_defs_attributes] params[:workshop][:custom_field_defs_attributes].each_key {|key| params[:workshop][:custom_field_defs_attributes][key].delete(:custom_field)} end @workshop.update_attributes(workshop_params) redirect_to additional_configuration_admin_workshop_url(@workshop), notice: 'Workshop was successfully updated.' else render action: :additional_configuration end end end |
#ajax_toggle_permission ⇒ Object
180 181 182 183 184 185 186 187 188 189 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 180 def :manage_events, :all user = User.find(params[:user_id]) role = params[:role].to_sym if user && [:manage_event, :manage_event_registration, :manage_event_finance].include?(role) user.has_role?(role, @workshop) ? user.remove_role(role, @workshop) : user.add_role(role, @workshop) user.save! end render nothing: true end |
#create ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 29 def create :manage_events, :all @workshop = Workshop.new(workshop_params) if @workshop.save redirect_to admin_workshop_url(@workshop), notice: 'Workshop was successfully created.' else render action: :new end end |
#destroy ⇒ Object
68 69 70 71 72 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 68 def destroy :manage_events, :all @workshop.destroy redirect_to admin_workshops_url, notice: 'Workshop was successfully deleted.' end |
#edit ⇒ Object
24 25 26 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 24 def edit :manage_events, @workshop end |
#edit_system_email ⇒ Object
Edit/create of the registration state emails. :email_type is passed in to determine which one we’re editing
77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 77 def edit_system_email :manage_events, @workshop redirect_to(admin_workshop_url(@workshop), error: 'Invalid system email type') if params[:email_type].blank? # [todo] verify that the email_type is one of the Registration.aasm.states @system_email = @workshop.send("#{params[:email_type]}_email") || @workshop.send("build_#{params[:email_type]}_email") @system_email.email_type = params[:email_type] if put_or_post? @system_email.attributes = system_email_params if @system_email.save redirect_to edit_system_email_admin_workshop_path(@workshop, email_type: @system_email.email_type), notice: 'Email was successfully updated.' end end end |
#financials ⇒ Object
93 94 95 96 97 98 99 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 93 def financials :manage_event_finances, @workshop @financials = @workshop.financial_details @payments = PaymentHistory.where(owner_type: 'Registration', owner_id: @workshop.registrations.pluck(:id)).includes(:user_profile, owner: [:user_profile]) @unpaid = @workshop.registrations.unpaid.includes(:user_profile, :workshop_price) @unpaid = @unpaid.to_a.delete_if {|i| i.payment_owed.zero?}.sort_by {|i| i.full_name.downcase} end |
#index ⇒ Object
11 12 13 14 15 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 11 def index :access_event_section, :all @workshops = Workshop.upcoming.select {|w| can?(:list_events, w)} @workshops_past = Workshop.past.select {|w| can?(:list_events, w)} end |
#lost_users ⇒ Object
148 149 150 151 152 153 154 155 156 157 158 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 148 def lost_users :manage_event_registrations, @workshop if put_or_post? @days_ago = params[:lost_users][:days_ago].to_i @days_ago = 60 if @days_ago > 60 else @days_ago = 10 end # @lost_users = Workshop.lost_users(@days_ago) @lost_users = @workshop.lost_users(@days_ago) end |
#new ⇒ Object
18 19 20 21 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 18 def new :manage_events, :all @workshop = Workshop.new end |
#permissions ⇒ Object
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 161 def :manage_events, :all if put_or_post? if params[:user][:user_id] user = User.find(params[:user][:user_id]) if user roles = params[:user].delete(:roles) [:manage_event, :manage_event_registration, :manage_event_finance].each do |role| roles[role].as_boolean ? user.add_role(role, @workshop) : user.remove_role(role, @workshop) end user.save! end end end @event_managers = User.with_role(:event_manager) @event_managers_alacarte = User.with_role(:event_manager_alacarte) end |
#send_payment_reminder_emails ⇒ Object
139 140 141 142 143 144 145 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 139 def send_payment_reminder_emails :manage_event_finances, @workshop status = @workshop.send_payment_reminder_emails(params[:registration_id]) msg = "Reminder emails sent ==> Success: #{status[:success]} Failed: #{status[:failed]}" status[:failed] > 0 ? (flash[:warning] = msg) : (flash[:notice] = msg) redirect_to financials_admin_workshop_url(@workshop) end |
#show ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 50 def show :list_events, @workshop respond_to do |format| format.html # show.html.erb format.json { = { manage_events: can?(:manage_events, @workshop), manage_event_registrations: can?(:manage_event_registrations, @workshop), manage_event_finances: can?(:manage_event_finances, @workshop) } render json: RegistrationDatatable.new(view_context, current_user, ) } format.xls { data_export(Registration.csv_columns(@workshop), @workshop.registrations, filename: @workshop.slug, expressions: true, format: 'xls') if can?(:manage_event_registrations, @workshop)} format.csv { data_export(Registration.csv_columns(@workshop), @workshop.registrations, filename: @workshop.slug, expressions: true, format: 'csv') if can?(:manage_event_registrations, @workshop)} end end |
#update ⇒ Object
40 41 42 43 44 45 46 47 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 40 def update :manage_events, @workshop if @workshop.update_attributes(workshop_params) redirect_to admin_workshop_url(@workshop), notice: 'Workshop was successfully updated.' else render action: :edit end end |
#user_outstanding_balances ⇒ Object
Generate a list of all outstanding balances across all workshops
103 104 105 106 107 |
# File 'app/controllers/dm_event/admin/workshops_controller.rb', line 103 def user_outstanding_balances :manage_events, :all @unpaid = Registration.unpaid.includes(:user_profile, :workshop_price) @unpaid = @unpaid.to_a.delete_if {|i| i.balance_owed.zero?}.group_by {|i| i.full_name}.sort_by {|i| i[0].downcase} end |