hensei-api/app/controllers/api/v1/collection_job_accessories_controller.rb

60 lines
2 KiB
Ruby

module Api
module V1
class CollectionJobAccessoriesController < ApiController
before_action :restrict_access
before_action :set_collection_job_accessory, only: [:show, :destroy]
def index
@collection_accessories = current_user.collection_job_accessories
.includes(job_accessory: :job)
@collection_accessories = @collection_accessories.by_job(params[:job_id]) if params[:job_id]
render json: Api::V1::CollectionJobAccessoryBlueprint.render(
@collection_accessories,
root: :collection_job_accessories
)
end
def show
render json: Api::V1::CollectionJobAccessoryBlueprint.render(
@collection_job_accessory
)
end
def create
@collection_accessory = current_user.collection_job_accessories
.build(collection_job_accessory_params)
if @collection_accessory.save
render json: Api::V1::CollectionJobAccessoryBlueprint.render(
@collection_accessory
), status: :created
else
# Check for duplicate job accessory error
if @collection_accessory.errors[:job_accessory_id].any? { |e| e.include?('already exists') }
raise CollectionErrors::DuplicateJobAccessory.new(@collection_accessory.job_accessory_id)
end
render_validation_error_response(@collection_accessory)
end
end
def destroy
@collection_job_accessory.destroy
head :no_content
end
private
def set_collection_job_accessory
@collection_job_accessory = current_user.collection_job_accessories.find(params[:id])
rescue ActiveRecord::RecordNotFound
raise CollectionErrors::CollectionItemNotFound.new('job accessory', params[:id])
end
def collection_job_accessory_params
params.require(:collection_job_accessory).permit(:job_accessory_id)
end
end
end
end