Sha256: b6961d76584da6a3cfaf761b9465d02d54950284900d978f9f19d19f658fbe2a

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

module Shopper
  module ItemsTable
    class ItemDecorator < SimpleDelegator
      class << self
        def for_collection(objects, editable: true, description: true)
          @editable = editable
          @description = description
          objects.map { |object| new(object) }
        end

        attr_reader :editable, :description
      end

      include Shopper::ViewHelpers

      def initialize(order_item)
        @order_item = order_item
        super(order_item.product)
      end

      delegate :id, :quantity, :to_param, to: :order_item
      delegate :editable, to: :class
      attr_reader :order_item

      def cover
        cover_url_or_default(version: :thumb)
      end

      def description
        __getobj__.description.truncate(50) if self.class.description
      end

      def error_class
        'has-error' if @order_item.errors&.any?
      end

      def price
        helpers.number_to_currency(__getobj__.price)
      end

      def subtotal
        helpers.number_to_currency(@order_item.subtotal)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shoppper-0.1.0 app/decorators/shopper/items_table/item_decorator.rb