class Page
	include Mongoid::Document
	include Mongoid::Timestamps
	include OrbitModel::Impression
		
	field :name, localize: true
	field :number, type: Integer
	field :module
	field :url
	field :page_id
	field :data_count, type: Integer, default: 10
	field :enabled_for, type: Array, default: []
	field :menu_enabled_for, type: Array, default: []
	field :categories, type: Array, :default => []
	field :enabled_for_sitemap, type: Array, :default => []

	has_many :page_parts, :autosave => true, :dependent => :destroy
	has_many :mobile_page_parts, :autosave => true, :dependent => :destroy

	has_many :page_contexts, :autosave => true, :dependent => :destroy
	has_many :child_page, :class_name => 'Page', :inverse_of => :parent_page, :dependent => :destroy
	belongs_to :parent_page, :class_name => 'Page', :inverse_of => :child_page


	def to_param
		page_id.parameterize
	end

	def self.find_by_param(input)
		self.find_by(page_id: input) rescue nil
	end

	def self.root
		self.where(:parent_page_id.ne => "" , :parent_page_id.exists => false).first
	end

	def root?
		self.parent_page_id.nil?
	end

	def sorted_published_child_pages
		self.child_page.where(:menu_enabled_for => I18n.locale).asc(:number)
	end

	def child_pages_enabled_for_sitemap
	 	self.child_page.where(:enabled_for_sitemap => I18n.locale)
	end

	def published_child_pages
	    self.child_page.where(:menu_enabled_for => I18n.locale)
	end
end