Sha256: 1a2320eff310f7edfefe1ef664a8341025f396fac63aeca11d5450487d3f5307

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

class Store::CheckoutsController < Store::StoreController
  layout "storefront"

  def create
    unless current_cart.unfinished?
      render :json => "This order is already finished!", :status => :unprocessable_entity and return
    end

    @payment = CreditCardPayment.new(params[:payment])
    @payment.user_agreement = params[:payment][:user_agreement]
    current_cart.special_instructions = special_instructions
    
    @checkout = Checkout.new(current_cart, @payment)
    
    if @checkout.valid? && @checkout.finish
      @order = @checkout.order
      render :thanks and return
    else      
      flash[:error] = @checkout.message
      redirect_to store_order_path(params[:payment][:customer])
    end
  rescue Exception => e
    Exceptional.context(:params => filter(params))
    Exceptional.handle(e, "Checkout failed!")    
    Rails.logger.error(e.backtrace)
    Rails.logger.error(e.message)
    
    flash[:error] = "We're sorry but we could not process the sale.  Please make sure all fields are filled out accurately"
    redirect_to store_order_path
  end

  # def dook
  #   @order = Order.find(157)
  #   render :thanks
  # end

  def filter(params)
    filters = Rails.application.config.filter_parameters
    f = ActionDispatch::Http::ParameterFilter.new filters
    f.filter params
  end

  private
    def special_instructions
      instructions = []
      params.fetch(:special_instructions, []).each do |event_id, response|
        instructions << response
      end
      instructions.join(" ")
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
artfully_ose-1.2.0.pre.16 app/controllers/store/checkouts_controller.rb