#require 'elasticsearch/model'




# -*- encoding : utf-8 -*-
class Page < ApplicationRecord
  #searchkick # default_fields: [:html1, :title1, :description1]
  
  #include Elasticsearch::Model
  #include Elasticsearch::Model::Callbacks
  
  
  attr_accessor :skip_save_menu_item
  
  
  PAGE_TYPE = [["Page simple", 1], ["Page chapitrée", 2], ["Chapitre", 3], ["Page thématique", 4]]
  
  
  has_many :lang_pages
  
  accepts_nested_attributes_for :lang_pages
  
  
  has_one :menu_item, :as => :menu_content
  
  has_many :blocks, :as => :blockable, :dependent => :destroy
  
  after_save do
    if !self.skip_save_menu_item
      if self.menu_item
        self.menu_item.updated_at = Time.now
        self.menu_item.save
      end
    
    end
  end
  
  
  #validates :title, :presence => true
  
  HUMAN_NAME = "Page"
  
  after_create :after_creation
  
  def after_creation
      
    LangSite.all.each do |lang|
      @block = Block.new(:block_name => "general", :lang_site => lang)
      @block.blockable = self
      @block.save
      
    end
  
  
  end
  
  
  
  def dup
    @new = Page.new(self.attributes)
    @new.id = nil
    @new.save
    @new.blocks.destroy_all
    
    self.lang_pages.each do |lang_page|
      
      new_p = lang_page.dup
      
      new_p.title = lang_page.title+" copie"
      new_p.page = @new
      new_p.save
      
      
    end
    
    self.blocks.each do |block|
      
      new_b = block.dup
      new_b.blockable = @new
      new_b.save
      
      
    end
    
    @new
    
  end

  def search_data
    { 
      html: lang_pages.map(&:html),
      title: lang_pages.map(&:title),
      description: lang_pages.map(&:description),
      category_names: (menu_item.categories.map(&:name) if menu_item),
      category_ids: (menu_item.categories.map(&:id) if menu_item),
      animals_names: (menu_item.animals.map(&:name) if menu_item),
      animals_ids: (menu_item.animals.map(&:id) if menu_item),
      document: "page",
      created_at: created_at
      
      
      
    }
  end



  def as_indexed_json(options={})
    self.as_json(
      include: { lang_pages: { methods: [:html], only: [:title, :description, :html]}#,
                # authors:    { methods: [:full_name], only: [:full_name] },
                # comments:   { only: :text }
               })
  end

end

#Page.import