class Item < ActiveRecord::Base
  belongs_to :unit
  belongs_to :brand
  has_many :multi_media_descriptions
  belongs_to :sub_category


  has_many :item_in_groups
  has_many :item_groups, through: :item_in_groups 


  attr_accessor :count # used for cart
  def attributes
    super.merge('count' => self.count)
  end

  # TODO: change "best selling" algorithm when get some data - currently it's only sorted by earnings
  scope :best_selling, -> (offset, limit) { where(:on_display => true).order("list_price ASC").limit(limit).offset(offset) }

  scope :best_selling_in_sub_category, -> (sub_category_id, offset, limit) {  best_selling(offset, limit).where(sub_category_id: sub_category_id) }

  scope :best_selling_in_category, -> (category_id, offset, limit) {  best_selling(offset, limit).joins( sub_category: [:category] ).where(["category_id = ?", category_id]) }

  scope :best_selling_in_section, -> (section_id, offset, limit) {  best_selling(offset, limit).joins( sub_category: [category: [ :section ]] ).where( ["section_id = ?", section_id] ) }

  scope :all_in_category, -> (category_id) { where(on_display: true).joins( sub_category: [:category]).where(["category_id = ?", category_id]) }

  scope :all_in_sub_category, -> (sub_category_id) { where(on_display: true).where(["sub_category_id = ?", sub_category_id]) }
end
