Sha256: 409d0e8edad9090bade45f90108eaebfbe0c0f1ff07ee52b81d3eb2762dd078e

Contents?: true

Size: 748 Bytes

Versions: 3

Compression:

Stored size: 748 Bytes

Contents

module ShoppingCart
  class UpdateOrder < Rectify::Command
    def initialize(order, params)
      @order = order
      @params = params
    end

    def call
      return broadcast(:invalid) if @order.invalid?
      transaction do
        join_coupon
        update_order
      end
      broadcast :ok
    end

    private

    def join_coupon
      coupon = Coupon.find_by(code: coupon_code)
      return unless coupon
      @order.coupon = coupon
    end

    def update_order
      @order.update(order_params)
    end

    def order_params
      @params.require(:order)
             .permit(:id, order_items_attributes: [:id, :quantity])
    end

    def coupon_code
      @params[:order][:coupon][:code] unless @order.coupon
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
shopping-cart-0.1.2 app/commands/shopping_cart/update_order.rb
shopping-cart-0.1.1 app/commands/shopping_cart/update_order.rb
shopping-cart-0.1.0 app/commands/shopping_cart/update_order.rb