From c0e301c32d59ab10509b8532041cfd7f9fd0aec8 Mon Sep 17 00:00:00 2001 From: HombreLaser Date: Sun, 16 Apr 2023 14:49:41 -0600 Subject: Refactoriza ProductScopeFilter --- .../searches/scope_filters/product_scope_filter.rb | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/app/queries/searches/scope_filters/product_scope_filter.rb b/app/queries/searches/scope_filters/product_scope_filter.rb index d6f254d..941fdfd 100644 --- a/app/queries/searches/scope_filters/product_scope_filter.rb +++ b/app/queries/searches/scope_filters/product_scope_filter.rb @@ -14,51 +14,45 @@ module Searches end def order_by_price - return self unless invalid_order_by_param(:price) + @scope = @scope.order(unitary_price: @params[:price].to_sym) if valid_order_by_param(:price) - @scope = @scope.order(unitary_price: @params[:price].to_sym) self end def order_by_bulk_price - return self unless invalid_order_by_param(:bulk_price) + @scope = @scope.order(bulk_price: @params[:bulk_price].to_sym) if valid_order_by_param(:bulk_price) - @scope = @scope.order(bulk_price: @params[:bulk_price].to_sym) self end def by_category - return self unless @params[:category].present? + @scope = @scope.where("'categories' LIKE ?", "%#{@params[:category]}%") if @params[:category].present? - @scope = @scope.where("'categories' LIKE ?", "%#{@params[:category]}%") self end def order_by_available_quantity - return self unless invalid_order_by_param(:quantity) + @scope = @scope.order(available_quantity: @params[:quantity].to_sym) if valid_order_by_param(:quantity) - @scope = @scope.order(available_quantity: @params[:quantity].to_sym) self end def by_company - return self unless @params[:company].present? + @scope = @scope.where('companies.short_name = ?', @params[:company]) if @params[:company].present? - @scope = @scope.where('companies.short_name = ?', "#{@params[:company]}") self end def by_name - return self unless @params[:name].present? + @scope = @scope.where('LOWER(products.name) LIKE ?', "%#{@params[:name]}%") if @params[:name].present? - @scope = @scope.where('LOWER(products.name) LIKE ?', "%#{@params[:name]}%") self end private - def invalid_order_by_param(param_symbol) - @params[param_symbol].present? || %w[asc desc].include?(@params[param_symbol]) + def valid_order_by_param(param_symbol) + @params[param_symbol].present? && %w[asc desc].include?(@params[param_symbol]) end end end -- cgit v1.2.3