2015-10-30 12:59:58 +01:00
|
|
|
module Librarix
|
|
|
|
class Filter
|
|
|
|
attr_reader :movies, :params
|
|
|
|
|
|
|
|
def initialize(params)
|
|
|
|
@params = params
|
|
|
|
filter
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def filter
|
|
|
|
@movies = Librarix::Redis::Movie.all
|
|
|
|
by_title if @params.key?('title')
|
2015-11-06 12:51:08 +01:00
|
|
|
by_view_state if @params.key?('view_state')
|
2015-10-30 12:59:58 +01:00
|
|
|
|
|
|
|
@movies.sort_by!(&:release_date).reverse!
|
|
|
|
end
|
|
|
|
|
|
|
|
def by_title
|
|
|
|
movies.select! { |movie| movie.title.downcase.include?(params['title']) }
|
|
|
|
end
|
2015-11-06 12:51:08 +01:00
|
|
|
|
|
|
|
def by_view_state
|
|
|
|
if params['view_state'] == 'viewed'
|
|
|
|
movies.keep_if(&:viewed?)
|
|
|
|
elsif params['view_state'] == 'not_viewed'
|
|
|
|
movies.delete_if(&:viewed?)
|
|
|
|
end
|
|
|
|
end
|
2015-10-30 12:59:58 +01:00
|
|
|
end
|
|
|
|
end
|