Sha256: 75c011502c1af24db3edf514e845e0a694270281fcd4f6e9f5efa2ca37ee1884

Contents?: true

Size: 739 Bytes

Versions: 56

Compression:

Stored size: 739 Bytes

Contents

module Spree
  module Orders
    class Sort
      attr_reader :scope, :sort

      def initialize(scope, params)
        @scope = scope
        @sort = params[:sort]
      end

      def call
        orders = completed_at(scope)

        orders
      end

      private

      def desc_order
        @desc_order ||= String(sort)[0] == '-'
      end

      def sort_field
        @sort_field ||= desc_order ? sort[1..-1] : sort
      end

      def order_direction
        desc_order ? :asc : :desc
      end

      def completed_at?
        sort_field.eql?('completed_at')
      end

      def completed_at(orders)
        return orders unless completed_at?

        orders.order(completed_at: order_direction)
      end
    end
  end
end

Version data entries

56 entries across 56 versions & 1 rubygems

Version Path
spree_core-4.0.9 app/sorters/spree/orders/sort.rb
spree_core-4.1.15 app/sorters/spree/orders/sort.rb
spree_core-4.1.14 app/sorters/spree/orders/sort.rb
spree_core-4.0.8 app/sorters/spree/orders/sort.rb
spree_core-3.7.14.1 app/sorters/spree/orders/sort.rb
spree_core-4.1.13.1 app/sorters/spree/orders/sort.rb
spree_core-4.0.7.1 app/sorters/spree/orders/sort.rb
spree_core-4.0.7 app/sorters/spree/orders/sort.rb
spree_core-3.7.14 app/sorters/spree/orders/sort.rb
spree_core-4.1.13 app/sorters/spree/orders/sort.rb
spree_core-4.0.6 app/sorters/spree/orders/sort.rb
spree_core-4.2.0.rc2 app/sorters/spree/orders/sort.rb
spree_core-3.7.13 app/sorters/spree/orders/sort.rb
spree_core-4.0.5 app/sorters/spree/orders/sort.rb
spree_core-4.1.12 app/sorters/spree/orders/sort.rb
spree_core-3.7.12 app/sorters/spree/orders/sort.rb
spree_core-4.2.0.rc1 app/sorters/spree/orders/sort.rb
spree_core-4.0.4 app/sorters/spree/orders/sort.rb
spree_core-3.7.11 app/sorters/spree/orders/sort.rb
spree_core-4.1.11 app/sorters/spree/orders/sort.rb