PageRenderTime 1440ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/app/controllers/api/enterprises_controller.rb

https://gitlab.com/srihas/openfoodnetwork
Ruby | 70 lines | 57 code | 13 blank | 0 comment | 9 complexity | 8e26e76b466817abeffe88116b5fea8c MD5 | raw file
  1. module Api
  2. class EnterprisesController < Spree::Api::BaseController
  3. before_filter :override_owner, only: [:create, :update]
  4. before_filter :check_type, only: :update
  5. before_filter :override_sells, only: [:create, :update]
  6. before_filter :override_visible, only: [:create, :update]
  7. respond_to :json
  8. def managed
  9. @enterprises = Enterprise.ransack(params[:q]).result.managed_by(current_api_user)
  10. render params[:template] || :bulk_index
  11. end
  12. def create
  13. authorize! :create, Enterprise
  14. @enterprise = Enterprise.new(params[:enterprise])
  15. if @enterprise.save
  16. render text: @enterprise.id, :status => 201
  17. else
  18. invalid_resource!(@enterprise)
  19. end
  20. end
  21. def update
  22. @enterprise = Enterprise.find_by_permalink(params[:id]) || Enterprise.find(params[:id])
  23. authorize! :update, @enterprise
  24. if @enterprise.update_attributes(params[:enterprise])
  25. render text: @enterprise.id, :status => 200
  26. else
  27. invalid_resource!(@enterprise)
  28. end
  29. end
  30. def update_image
  31. @enterprise = Enterprise.find_by_permalink(params[:id]) || Enterprise.find(params[:id])
  32. authorize! :update, @enterprise
  33. if params[:logo] && @enterprise.update_attributes( { logo: params[:logo] } )
  34. render text: @enterprise.logo.url(:medium), :status => 200
  35. elsif params[:promo] && @enterprise.update_attributes( { promo_image: params[:promo] } )
  36. render text: @enterprise.promo_image.url(:medium), :status => 200
  37. else
  38. invalid_resource!(@enterprise)
  39. end
  40. end
  41. private
  42. def override_owner
  43. params[:enterprise][:owner_id] = current_api_user.id
  44. end
  45. def check_type
  46. params[:enterprise].delete :type unless current_api_user.admin?
  47. end
  48. def override_sells
  49. has_hub = current_api_user.owned_enterprises.is_hub.any?
  50. new_enterprise_is_producer = !!params[:enterprise][:is_primary_producer]
  51. params[:enterprise][:sells] = (has_hub && !new_enterprise_is_producer) ? 'any' : 'unspecified'
  52. end
  53. def override_visible
  54. params[:enterprise][:visible] = false
  55. end
  56. end
  57. end