Skip to content

Commit

Permalink
Remove r_c from shipments_controller, orders_controller, taxons_contr…
Browse files Browse the repository at this point in the history
…oller, payments_controller and line_items_controller
  • Loading branch information
Neeraj Singh authored and romul committed Apr 9, 2011
1 parent af80629 commit f0d2b3f
Show file tree
Hide file tree
Showing 15 changed files with 263 additions and 164 deletions.
70 changes: 44 additions & 26 deletions core/app/controllers/admin/line_items_controller.rb
Original file line number Diff line number Diff line change
@@ -1,46 +1,64 @@
class Admin::LineItemsController < Admin::BaseController
resource_controller
belongs_to :order

actions :all, :except => :index
before_filter :load_order, :except => [:create]
before_filter :load_line_item, :only => [:destroy, :update]

create.flash nil
update.flash nil
destroy.flash nil

#override r_c create action as we want to use order#add_variant instead of creating line_item
def create
load_object
variant = Variant.find(params[:line_item][:variant_id])

before :create
@taxon = Taxon.find(params[:taxon][:parent_id])
@taxonomy = Taxonomy.find params[:taxonomy_id]

variant = Variant.find(params[:line_item][:variant_id])
@order.add_variant(variant, params[:line_item][:quantity].to_i)

if @order.save
after :create
set_flash :create
response_for :create
respond_to do |format|
format.html do
render :partial => "admin/orders/form", :locals => {:order => @order.reload}, :layout => false
end
end
else
after :create_fails
set_flash :create_fails
response_for :create_fails
end
end

def destroy
if @line_item.destroy
respond_to do |format|
format.html { render :partial => "admin/orders/form", :locals => {:order => @order.reload}, :layout => false }
end
else
respond_to do |format|
format.html do
render :partial => "admin/orders/form", :locals => {:order => @order.reload}, :layout => false
end
end
end
end

destroy.success.wants.html { render :partial => "admin/orders/form", :locals => {:order => @order.reload}, :layout => false }
destroy.failure.wants.html { render :partial => "admin/orders/form", :locals => {:order => @order.reload}, :layout => false }
def new
respond_to do |format|
format.html { render :action => :new, :layout => false }
end
end

new_action.response do |wants|
wants.html {render :action => :new, :layout => false}
def update
if @line_item.update_attributes(params[:line_item])
respond_to do |format|
format.html { render :partial => "admin/orders/form", :locals => {:order => @order.reload}, :layout => false}
end
else
respond_to do |format|
format.html { render :partial => "admin/orders/form", :locals => {:order => @order.reload}, :layout => false}
end
end
end

create.response do |wants|
wants.html { render :partial => "admin/orders/form", :locals => {:order => @order.reload}, :layout => false}

def load_order
@order = Order.find_by_number! params[:order_id]
end

update.success.wants.html { render :partial => "admin/orders/form", :locals => {:order => @order.reload}, :layout => false}
update.failure.wants.html { render :partial => "admin/orders/form", :locals => {:order => @order.reload}, :layout => false}
def load_line_item
@line_item = @order.line_items.find params[:id]
end

end
70 changes: 41 additions & 29 deletions core/app/controllers/admin/orders_controller.rb
Original file line number Diff line number Diff line change
@@ -1,37 +1,49 @@
class Admin::OrdersController < Admin::BaseController
require 'spree/gateway_error'
resource_controller
before_filter :initialize_txn_partials
before_filter :initialize_order_events
before_filter :load_object, :only => [:fire, :resend, :history, :user]
before_filter :load_order, :only => [:fire, :resend, :history, :user]
before_filter :ensure_line_items, :only => [:update]

update do
flash nil
wants.html do
if !@order.line_items.empty?
unless @order.complete?
def index
load_orders
end

def new
@order = Order.create
end

if params[:order].key?(:email)
@order.shipping_method = @order.available_shipping_methods(:front_end).first
@order.create_shipment!
redirect_to edit_admin_order_shipment_path(@order, @order.shipment)
def edit
load_order
end

def update
respond_to do |format|
format.html do
if @order.update_attributes params[:order]
if !@order.line_items.empty?
unless @order.complete?
if params[:order].key?(:email)
shipping_method = @order.available_shipping_methods(:front_end).first
@order.shipping_method = shipping_method
@order.create_shipment!
redirect_to edit_admin_order_shipment_path(@order, @order.shipment)
else
redirect_to user_admin_order_path(@order)
end
else
redirect_to admin_order_path(@order)
end
else
redirect_to user_admin_order_path(@order)
render :action => :new
end

else
redirect_to admin_order_path(@order)
render :action => 'edit'
end
else
render :action => :new
end
end
end

def new
@order = @object = Order.create
end

def fire
# TODO - possible security check here but right now any admin can before any transition (and the state machine
Expand Down Expand Up @@ -61,23 +73,23 @@ def user

private

def object
@object ||= Order.find_by_number(params[:id], :include => :adjustments) if params[:id]
return @object || current_order
def load_order
@order ||= Order.find_by_number(params[:id], :include => :adjustments) if params[:id]
return @order || current_order
end

def collection
def load_orders
params[:search] ||= {}
params[:search][:completed_at_is_not_null] ||= '1' if Spree::Config[:show_only_complete_orders_by_default]
@show_only_completed = params[:search][:completed_at_is_not_null].present?
params[:search][:meta_sort] ||= @show_only_completed ? 'completed_at.desc' : 'created_at.desc'

@search = Order.metasearch(params[:search])

if !params[:search][:created_at_greater_than].blank?
params[:search][:created_at_greater_than] = Time.zone.parse(params[:search][:created_at_greater_than]).beginning_of_day rescue ""
end

if !params[:search][:created_at_less_than].blank?
params[:search][:created_at_less_than] = Time.zone.parse(params[:search][:created_at_less_than]).end_of_day rescue ""
end
Expand All @@ -86,8 +98,8 @@ def collection
params[:search][:completed_at_greater_than] = params[:search].delete(:created_at_greater_than)
params[:search][:completed_at_less_than] = params[:search].delete(:created_at_less_than)
end
@collection = Order.metasearch(params[:search]).paginate(

@orders = Order.metasearch(params[:search]).paginate(
:include => [:user, :shipments, :payments],
:per_page => Spree::Config[:orders_per_page],
:page => params[:page])
Expand All @@ -104,7 +116,7 @@ def initialize_order_events
end

def ensure_line_items
load_object
load_order
if @order.line_items.empty?
@order.errors.add(:line_items, t('errors.messages.blank'))
render :edit
Expand Down
51 changes: 27 additions & 24 deletions core/app/controllers/admin/payments_controller.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
class Admin::PaymentsController < Admin::BaseController
before_filter :load_order, :only => [:create, :new, :index, :fire, :new]
before_filter :load_payment, :except => [:create, :new, :index]
before_filter :load_data
before_filter :load_amount, :except => :country_changed
resource_controller
belongs_to :order

def index
@payments = @order.payments
end

def new
@payment = Payment.new
end

def create
build_object
load_object
@payment = Payment.new object_params
@payment.order = @order
if @payment.payment_method.is_a?(Gateway) && @payment.payment_method.payment_profiles_supported? && params[:card].present? and params[:card] != 'new'
@payment.source = Creditcard.find_by_id(params[:card])
end

begin
unless @payment.save
Expand All @@ -16,8 +27,8 @@ def create

if @order.completed?
@payment.process!
set_flash :create
redirect_to collection_path
flash[:notice] = I18n.t(:successfully_created, :resource => 'payment')
redirect_to admin_order_payments_path(@order)
else
#This is the first payment (admin created order)
until @order.completed?
Expand All @@ -29,13 +40,12 @@ def create

rescue Spree::GatewayError => e
flash[:error] = "#{e.message}"
redirect_to new_object_path
redirect_to new_admin_payment_path(@order)
end
end

def fire
# TODO: consider finer-grained control for this type of action (right now anyone in admin role can perform)
load_object
return unless event = params[:e] and @payment.payment_source
if @payment.payment_source.send("#{event}", @payment)
flash.notice = t('payment_updated')
Expand All @@ -45,16 +55,11 @@ def fire
rescue Spree::GatewayError => ge
flash[:error] = "#{ge.message}"
ensure
redirect_to collection_path
redirect_to admin_order_payments_path(@order)
end

private

def object
@object ||= Payment.find(param) unless param.nil?
@object
end

def object_params
if params[:payment] and params[:payment_source] and source_params = params.delete(:payment_source)[params[:payment][:payment_method_id]]
params[:payment][:source_attributes] = source_params
Expand All @@ -63,10 +68,9 @@ def object_params
end

def load_data
load_object
@payment_methods = PaymentMethod.available(:back_end)
if object and object.payment_method
@payment_method = object.payment_method
if @payment and @payment.payment_method
@payment_method = @payment.payment_method
else
@payment_method = @payment_methods.first
end
Expand All @@ -77,13 +81,12 @@ def load_amount
@amount = params[:amount] || @order.total
end

def build_object
@object = model.new(object_params)
@object.order = parent_object
if @object.payment_method.is_a?(Gateway) and @object.payment_method.payment_profiles_supported? and params[:card].present? and params[:card] != 'new'
@object.source = Creditcard.find_by_id(params[:card])
end
@object
def load_order
@order = Order.find_by_number! params[:order_id]
end

def load_payment
@payment = Payment.find params[:id]
end

end
Loading

0 comments on commit f0d2b3f

Please sign in to comment.