Guest User

Untitled

a guest
Sep 19th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. module Api
  2. class DropsController < Api::ApplicationController
  3. def index
  4. if current_user.present?
  5. options = { context: self }
  6. options[:links] = links if links.present?
  7. DropCollectionExhibit.new(paginated_drops, options).render
  8. else
  9. render_unauthorized
  10. end
  11. end
  12.  
  13. def show
  14. DropExhibit.new(drop).render(context: self)
  15. end
  16.  
  17. def recover
  18. if current_user.present?
  19. drops.find(drop_ids).each(&:recover!)
  20. head :no_content
  21. else
  22. render_unauthorized
  23. end
  24. end
  25.  
  26. def destroy_multiple
  27. if current_user.present?
  28. drops.destroy drop_ids
  29. head :no_content
  30. else
  31. render_unauthorized
  32. end
  33. end
  34.  
  35. private
  36.  
  37. def drop
  38. @drop ||= current_user.active_items.find(params[:id])
  39. end
  40.  
  41. def drops
  42. current_user.public_send(drops_method)
  43. end
  44.  
  45. def drop_ids
  46. params.fetch :drop_ids
  47. end
  48.  
  49. def paginated_drops
  50. @paginated_drops ||= drops.order('id DESC').paginate(pagination_options)
  51. end
  52.  
  53. def links
  54. {}.tap do |links|
  55. if paginated_drops.previous_page
  56. links[:previous] = drops_path_for_page paginated_drops.previous_page
  57. end
  58.  
  59. if paginated_drops.next_page
  60. links[:next] = drops_path_for_page paginated_drops.next_page
  61. end
  62. end
  63. end
  64.  
  65. def drops_method
  66. if filter == 'all'
  67. :items
  68. elsif filter == 'trash'
  69. :deleted_items
  70. elsif filter == 'active'
  71. :active_items
  72. end
  73. end
  74.  
  75. def filter
  76. params.fetch :filter, 'active'
  77. end
  78.  
  79. def pagination_options
  80. { page: params.fetch(:page, 1),
  81. per_page: params.fetch(:per_page, 20) }
  82. end
  83.  
  84. def drops_path_for_page(page)
  85. drops_path pagination_options.merge(page: page)
  86. end
  87. end
  88. end
Add Comment
Please, Sign In to add comment