class Table include SimplyStored::Couch include ActiveModel::SerializerSupport per_page_method :limit_value #kaminari property :number, type: Fixnum, default: 1 property :position_x, type: Float property :position_y, type: Float belongs_to :supplier belongs_to :section has_many :lists attr_protected :supplier_id attr_accessor :active_list_id, :active_list validates :supplier_id, presence: true #validates :list_id, presence: true validates :number, numericality: {greater_than: 0} view :by_supplier_id_and_id, key: [:supplier_id, :_id] view :by_supplier_id_and_number, key: [:supplier_id, :number] #validates_uniqueness_of :number view :by_number, key: :number def self.for_supplier(supplier, options = {}) startkey = if from_number = options.delete(:from_number).presence [supplier.id, from_number.to_i] else [supplier.id] end endkey = if to_number = options.delete(:to_number).presence [supplier.id, to_number.to_i] else [supplier.id, {}] end total_entries = database.view(by_supplier_id_and_number({startkey: startkey, endkey: endkey, include_docs: false, reduce: true})) options[:total_entries] = total_entries with_pagination_options(options) do |options| database.view(by_supplier_id_and_number({startkey: startkey, endkey: endkey, include_docs: true, reduce: false}.merge(options))) end end def serializable_hash attributes end def occupied? return @is_occupied if instance_variable_defined?(:'@is_occupied') @is_occupied = !self.class.database.view(List.active_by_table_id_view(key: id, reduce: true)).zero? end def occupied=(val) end def self.enrich_active_list_id(tables) if tables.is_a?(Array) lists = List.active_for_table(tables.map(&:id)) for table in tables table.active_list_id = lists.find{|l| l.table_id == table.id}.try(:id) end tables else table = tables list = List.active_for_table(table).first table.active_list_id = list.id if list.present? table end end def active_list # nil memoizing return @active_list if @active_list_is_set @active_list ||= self.class.database.view(List.active_by_table_id_view(key: id, include_docs: true, reduce: false, limit: 1)).try(:first) end def active_list=(val) @active_list_is_set = true @active_list = val end def active_list_id @active_list_id || active_list.try(:id) end def reserved? false end def name number end # Method returning the sections table width def width 2.0 end def width=(val) end # Method returning the sections table height def height 2.0 end def height=(val) end end