Sha256: c8068a22898f938f995aca4979efc37bd9fe632cf4d5c0ccb633b642ea6558ce

Contents?: true

Size: 927 Bytes

Versions: 4

Compression:

Stored size: 927 Bytes

Contents

class SolidusSubscriptions::Api::V1::LineItemsController < Spree::Api::BaseController
  before_action :load_line_item, only: [:update, :destroy]
  wrap_parameters :subscription_line_item

  def update
    authorize! :crud, @line_item, @order
    if @line_item.update(line_item_params)
      render json: @line_item.to_json
    else
      render json: @line_item.errors.to_json, status: 422
    end
  end

  def destroy
    authorize! :crud, @line_item, @order
    return render json: {}, status: 400 if @line_item.order.complete?

    @line_item.destroy!
    @line_item.order.update!

    render json: @line_item.to_json
  end

  private

  def line_item_params
    params.require(:subscription_line_item).permit(
      SolidusSubscriptions::PermittedAttributes.subscription_line_item_attributes - [:subscribable_id]
    )
  end

  def load_line_item
    @line_item = SolidusSubscriptions::LineItem.find(params[:id])
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
solidus_subscriptions-alpha-0.0.5 app/controllers/solidus_subscriptions/api/v1/line_items_controller.rb
solidus_subscriptions-alpha-0.0.3 app/controllers/solidus_subscriptions/api/v1/line_items_controller.rb
solidus_subscriptions-alpha-0.0.2 app/controllers/solidus_subscriptions/api/v1/line_items_controller.rb
solidus_subscriptions-alpha-0.0.1 app/controllers/solidus_subscriptions/api/v1/line_items_controller.rb