41 lines
1.5 KiB
Ruby
41 lines
1.5 KiB
Ruby
class Admin::OrdergroupsController < Admin::BaseController
|
|
inherit_resources
|
|
|
|
def index
|
|
@ordergroups = Ordergroup.undeleted.sort_by_param(params['sort'])
|
|
|
|
if request.format.csv?
|
|
send_data OrdergroupsCsv.new(@ordergroups).to_csv, filename: 'ordergroups.csv',
|
|
type: 'text/csv'
|
|
end
|
|
|
|
# if somebody uses the search field:
|
|
@ordergroups = @ordergroups.where('name LIKE ?', "%#{params[:query]}%") if params[:query].present?
|
|
|
|
@ordergroups = @ordergroups.page(params[:page]).per(@per_page)
|
|
end
|
|
|
|
def update
|
|
sepa_account_holder_params = params[:ordergroup][:sepa_account_holder_attributes]
|
|
if sepa_account_holder_params&.[](:user_id).blank? || sepa_account_holder_params&.[](:group_id).blank?
|
|
if sepa_account_holder_params&.[](:id).present?
|
|
SepaAccountHolder.find(sepa_account_holder_params[:id]).destroy
|
|
end
|
|
params[:ordergroup].delete(:sepa_account_holder_attributes)
|
|
end
|
|
@ordergroup = Ordergroup.find(params[:id])
|
|
if @ordergroup.update(params[:ordergroup])
|
|
redirect_to admin_ordergroup_path(@ordergroup), notice: t('.notice')
|
|
else
|
|
redirect_to edit_admin_ordergroup_path(@ordergroup), alert: @ordergroup.errors.full_messages.join(', ')
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
@ordergroup = Ordergroup.find(params[:id])
|
|
@ordergroup.mark_as_deleted
|
|
redirect_to admin_ordergroups_url, notice: t('.notice')
|
|
rescue StandardError => e
|
|
redirect_to admin_ordergroups_url, alert: t('.error')
|
|
end
|
|
end
|