2011-07-12 17:03:04 -07:00
|
|
|
class ClosetHangersController < ApplicationController
|
2011-07-14 09:50:24 -07:00
|
|
|
before_filter :find_item, :only => [:create, :update]
|
|
|
|
|
|
|
|
def create
|
|
|
|
@closet_hanger = new_hanger
|
|
|
|
save_hanger!
|
|
|
|
end
|
|
|
|
|
|
|
|
def update
|
|
|
|
begin
|
|
|
|
@closet_hanger = @item.closet_hangers.find(params[:id])
|
|
|
|
@closet_hanger.attributes = params[:closet_hanger]
|
|
|
|
rescue ActiveRecord::RecordNotFound
|
|
|
|
# Since updating a hanger is really just changing an item quantity, if
|
|
|
|
# for some reason this hanger doesn't exist (like if user left a tab
|
|
|
|
# open), we can still create a new hanger and do the job the user wants
|
|
|
|
@closet_hanger = new_hanger
|
|
|
|
end
|
|
|
|
save_hanger!
|
|
|
|
end
|
|
|
|
|
2011-07-12 17:03:04 -07:00
|
|
|
def index
|
|
|
|
@user = User.find params[:user_id]
|
|
|
|
@closet_hangers = @user.closet_hangers.alphabetical_by_item_name.includes(:item)
|
|
|
|
end
|
2011-07-14 09:50:24 -07:00
|
|
|
|
|
|
|
protected
|
|
|
|
|
|
|
|
def find_item
|
|
|
|
@item = Item.find params[:item_id]
|
|
|
|
end
|
|
|
|
|
|
|
|
def new_hanger
|
|
|
|
current_user.closet_hangers.find_or_initialize_by_item_id(@item.id, params[:closet_hanger])
|
|
|
|
end
|
|
|
|
|
|
|
|
def save_hanger!
|
|
|
|
if @closet_hanger.quantity == 0
|
|
|
|
@closet_hanger.destroy
|
|
|
|
flash[:success] = "Success! You do not own #{@item.name}."
|
|
|
|
elsif @closet_hanger.save
|
|
|
|
flash[:success] = "Success! You own #{@closet_hanger.quantity} #{@item.name.pluralize}."
|
|
|
|
else
|
|
|
|
flash[:alert] = "We couldn't save how many of this item you own: #{@closet_hanger.errors.full_messages.to_sentence}"
|
|
|
|
end
|
|
|
|
|
|
|
|
redirect_to @item
|
|
|
|
end
|
2011-07-12 17:03:04 -07:00
|
|
|
end
|
|
|
|
|