Class: Spree::Admin::PromotionsController

Inherits:
ResourceController show all
Includes:
PromotionsBreadcrumbConcern
Defined in:
app/controllers/spree/admin/promotions_controller.rb

Instance Method Summary collapse

Methods inherited from ResourceController

belongs_to, #create, #destroy, #edit, #index, #new, #update

Methods included from TableConcern

#apply_table_sort, #custom_sort_active?, #process_table_query_state, #table, #table_key, #table_registered?

Methods included from BreadcrumbConcern

#add_breadcrumb_icon_instance_var

Instance Method Details

#cloneObject

POST /admin/promotions/:id/clone



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/controllers/spree/admin/promotions_controller.rb', line 18

def clone
  promotion = current_store.promotions.find_by_prefix_id!(params[:id])
  duplicator = Spree::PromotionHandler::PromotionDuplicator.new(promotion)

  @new_promo = duplicator.duplicate

  if @new_promo.errors.empty?
    flash[:success] = Spree.t('promotion_cloned')
    redirect_to spree.admin_promotion_path(@new_promo)
  else
    flash[:error] = Spree.t('promotion_not_cloned', error: @new_promo.errors.full_messages.to_sentence)
    redirect_to spree.admin_promotions_path
  end
end

#select_optionsObject

GET /admin/promotions/select_options



9
10
11
12
13
14
15
# File 'app/controllers/spree/admin/promotions_controller.rb', line 9

def select_options
  q = params[:q]
  ransack_params = q.is_a?(String) ? { name_i_cont: q } : q
  promotions = current_store.promotions.applied.accessible_by(current_ability).ransack(ransack_params).result.order(:name).limit(25)

  render json: promotions.pluck(:id, :name).map { |id, name| { id: id, name: name } }
end