Skip to content

Instantly share code, notes, and snippets.

@sevos
Created February 1, 2011 13:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sevos/805849 to your computer and use it in GitHub Desktop.
Save sevos/805849 to your computer and use it in GitHub Desktop.
spree
def create_user_session(data)
@user_session = UserSession.new(data)
@user_session.save do |result|
if result
# Should restore last uncompleted order and add current(guest) order to it, if exists.
order = @user_session.record.orders.last(:conditions => {:completed_at => nil})
if order
if (session[:order_token] && guest_order = Order.find(:first, :conditions => {:token => session[:order_token], :user_id => nil, :completed_at => nil}))
guest_order.line_items.each do |line_item|
order.add_variant(line_item.variant, line_item.quantity)
end
order.save
session[:return_to].gsub!(guest_order.number, order.number) if session[:return_to]
guest_order.destroy
end
session[:order_token] = order.token
session[:order_id] = order.id
end
respond_to do |format|
format.html {
self.notice = t("logged_in_succesfully") unless session[:return_to]
redirect_back_or_default products_path
}
format.js {
user = @user_session.record
render :json => {:ship_address => user.ship_address, :bill_address => user.bill_address}.to_json
}
end
else
respond_to do |format|
format.html {
flash.now[:error] = t("login_failed")
render :action => :new
}
format.js { render :json => false }
end
end
end
redirect_back_or_default(products_path) unless performed?
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment