Class: Spree::Admin::LineItemsController

Inherits:
ResourceController show all
Defined in:
app/controllers/spree/admin/line_items_controller.rb

Instance Method Summary collapse

Methods inherited from ResourceController

belongs_to, #edit, #index, #new

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

#createObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/controllers/spree/admin/line_items_controller.rb', line 8

def create
  @variant = variant_scope.find(params.dig(:line_item, :variant_id))

  @order.transaction do
    line_item_result = create_service.call(order: @order, line_item_attributes: permitted_resource_params)

    if line_item_result.success?
      unless @order.completed?
        max_state = if @order.ship_address.present?
                      @order.ensure_updated_shipments
                      'payment'
                    else
                      'address'
                    end

        result = Spree.checkout_advance_service.call(order: @order, state: max_state)

        unless result.success?
          flash[:error] = result.error.value.full_messages.to_sentence
          raise ActiveRecord::Rollback
        end
      end

      flash[:success] = Spree.t(:successfully_created, resource: Spree.t(:line_item))
    else
      flash[:error] = line_item_result.value.errors.full_messages.to_sentence
      raise ActiveRecord::Rollback
    end
  end

  redirect_to spree.edit_admin_order_path(@order, line_item_updated: true)
rescue ActiveRecord::Rollback
  redirect_to spree.edit_admin_order_path(@order)
end

#destroyObject



76
77
78
79
80
81
# File 'app/controllers/spree/admin/line_items_controller.rb', line 76

def destroy
  result = destroy_service.call(line_item: @line_item)
  flash[:success] = Spree.t(:successfully_removed, resource: Spree.t(:line_item)) if result.success?

  redirect_to spree.edit_admin_order_path(@order, line_item_updated: true)
end


83
84
85
86
87
88
# File 'app/controllers/spree/admin/line_items_controller.rb', line 83

def reset_digital_links_limit
  @line_item.digital_links.update_all(access_counter: 0, created_at: Time.current, updated_at: Time.current)
  flash[:success] = Spree.t('admin.successfully_reset_digital_links_limit')

  redirect_to spree.edit_admin_order_path(@order)
end

#updateObject



43
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
72
73
74
# File 'app/controllers/spree/admin/line_items_controller.rb', line 43

def update
  @order.transaction do
    line_item_result = update_service.call(line_item: @line_item, line_item_attributes: permitted_resource_params)

    if line_item_result.success?
      unless @order.completed?
        max_state = if @order.ship_address.present?
                      @order.ensure_updated_shipments
                      'payment'
                    else
                      'address'
                    end

        result = Spree.checkout_advance_service.call(order: @order, state: max_state)

        unless result.success?
          flash[:error] = result.error.value.full_messages.to_sentence
          raise ActiveRecord::Rollback
        end
      end

      flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:line_item))
    else
      flash[:error] = line_item_result.value.errors.full_messages.to_sentence
      raise ActiveRecord::Rollback
    end
  end

  redirect_to spree.edit_admin_order_path(@order, line_item_updated: true)
rescue ActiveRecord::Rollback
  redirect_to spree.edit_admin_order_path(@order)
end