1
0
Fork 0
forked from OpenNeo/impress
impress/app/controllers/swf_assets_controller.rb
2010-10-10 22:18:42 -04:00

31 lines
1.2 KiB
Ruby

class SwfAssetsController < ApplicationController
caches_page :index
def index
if params[:item_id]
@swf_assets = Item.find(params[:item_id]).swf_assets
if params[:body_id]
@swf_assets = @swf_assets.fitting_body_id(params[:body_id])
else
@swf_assets = @swf_assets.fitting_standard_body_ids
json = @swf_assets.all.group_by(&:body_id)
end
elsif params[:body_id]
swf_assets = SwfAsset.arel_table
rels = ParentSwfAssetRelationship.arel_table
@swf_assets = SwfAsset.select('swf_assets.*, parents_swf_assets.parent_id').
fitting_body_id(params[:body_id]).
joins(:object_asset_relationships).
where(rels[:parent_id].in(params[:item_ids]))
json = @swf_assets.map { |a| a.as_json(:parent_id => a.parent_id.to_i, :for => 'wardrobe') }
elsif params[:pet_state_id]
@swf_assets = PetState.find(params[:pet_state_id]).swf_assets.all
pet_state_id = params[:pet_state_id].to_i
json = @swf_assets.map { |a| a.as_json(:parent_id => pet_state_id, :for => 'wardrobe') }
elsif params[:pet_type_id]
@swf_assets = PetType.find(params[:pet_type_id]).pet_states.first.swf_assets
end
json ||= @swf_assets.all
render :json => json
end
end