The code powering m.abunchtell.com https://m.abunchtell.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

40 lines
639 B

  1. # frozen_string_literal: true
  2. class AnnouncementFilter
  3. KEYS = %i(
  4. published
  5. unpublished
  6. ).freeze
  7. attr_reader :params
  8. def initialize(params)
  9. @params = params
  10. end
  11. def results
  12. scope = Announcement.unscoped
  13. params.each do |key, value|
  14. next if key.to_s == 'page'
  15. scope.merge!(scope_for(key, value.to_s.strip)) if value.present?
  16. end
  17. scope.chronological
  18. end
  19. private
  20. def scope_for(key, _value)
  21. case key.to_s
  22. when 'published'
  23. Announcement.published
  24. when 'unpublished'
  25. Announcement.unpublished
  26. else
  27. raise "Unknown filter: #{key}"
  28. end
  29. end
  30. end