require "yaml"
module CustomAnnouncement
  class Engine < ::Rails::Engine
    initializer "custom_announcement" do
      begin
        translate_data = Dir["#{CustomAnnouncement::Engine.root}/config/locales/*.yml"] .map{|yaml_file| YAML.load(File.read(yaml_file))}
        data = {}
        key1 = {}
        key2 = {}
        key3 = {}
        key4 = {}
        key1_attr = []
        key2_attr = []
        key3_attr = []
        key4_attr = []
        data_item = {}
        key_item1 = {}
        key_item2 = {}
        key_item3 = {}
        value_item1 = {}
        value_item2 = {}
        value_item3 = {}
        value2_item1 = {}
        value2_item2 = {}
        key1_options = ['small_size','medium_size','orignal_size']
        key2_options = ['not_enable_tabs','enable_tabs_with_categories_include_all','enable_tabs_with_categories']
        key3_options = ['default','upper_left','lower_left','upper_right','lower_right']
        key4_options = ['the_same_as_data_count','display_all_in_other_tabs']
        key1_options.each_with_index do |k,i|
          key1_attr[i] = {}
        end
        key2_options.each_with_index do |k,i|
          key2_attr[i] = {}
        end
        key3_options.each_with_index do |k,i|
          key3_attr[i] = {}
        end
        key4_options.each_with_index do |k,i|
          key4_attr[i] = {}
        end
        translate_data.each do |t_data|
          v = t_data.values
          k = t_data.keys[0]
          key1[k] = v[0]['custom_announcement']['picture_showing_size']
          key2[k] = v[0]['custom_announcement']['tabs_options']
          key3[k] = v[0]['custom_announcement']['read_more_position_options']
          key4[k] = v[0]['custom_announcement']['all_tabs_setting']
          key1_options.each_with_index do |kk,i|
            key1_attr[i][k] = v[0]['custom_announcement'][kk]
          end
          key2_options.each_with_index do |kk,i|
            key2_attr[i][k] = v[0]['custom_announcement'][kk]
          end
          key3_options.each_with_index do |kk,i|
            key3_attr[i][k] = v[0]['custom_announcement'][kk]
          end
          key4_options.each_with_index do |kk,i|
            key4_attr[i][k] = v[0]['custom_announcement'][kk]
          end
          key_item1[k] = v[0]['custom_announcement']['showing_back_and_next']
          key_item2[k] = v[0]['custom_announcement']['enable_search']
          value_item1[k] = v[0]['custom_announcement']['not_show']
          value_item2[k] = v[0]['custom_announcement']['show_bottom']
          value_item3[k] = v[0]['custom_announcement']['show_top']
          value2_item1[k] = v[0]['custom_announcement']['no']
          value2_item2[k] = v[0]['custom_announcement']['yes']
        end
        data[key1] = key1_attr
        data[key2] = key2_attr
        data[key3] = key3_attr
        data[key4] = key4_attr
        data_item[key_item1] = [value_item1,value_item2,value_item3]
        data_item[key_item2] = [value2_item1,value2_item2]
        require File.expand_path('../../../app/models/custom_anns_cache', __FILE__)
        if defined? CustomAnnsCache
          CustomAnnsCache.destroy_all
        end
      rescue  => e
        puts ['error in custom_announcement',e]
      end
      OrbitApp.registration "CustomAnnouncement", :type => "ModuleApp" do
        module_label "custom_announcement.custom_announcement"
        base_url File.expand_path File.dirname(__FILE__)
        widget_methods ["widget","random_custom_announcement_widget", "tag_cloud"]
        widget_settings [{"data_count"=>30,"enable_custom_widget_data"=>true}]
        taggable "CustomBulletin"
        categorizable
        authorizable
        frontend_enabled
        feeds_url "/xhr/custom_announcements/feeds"
        data_count 1..30
        begin
          show_options data
          show_option_items data_item
        rescue => e
          puts ['there_was_no_show_option_method',e]
        end
        side_bar do
          set_sidebar_order(100) rescue nil
          head_label_i18n 'custom_announcement.custom_announcement', icon_class: "icon-bullhorn"
          available_for "users"
          active_for_controllers (['admin/custom_announcements'])
          head_link_path "admin_custom_announcements_path"

          context_link 'custom_announcement.all_articles',
                                :link_path=>"admin_custom_announcements_path" ,
                                :priority=>1,
                                :active_for_action=>{'admin/custom_announcements'=>'index'},
                                :available_for => 'users'
          # context_link 'new_', 
          #                       :link_path=>"new_admin_custom_announcement_path" ,
          #                       :priority=>2,
          #                       :active_for_action=>{'admin/custom_announcements'=>'new'},
          #                       :available_for => 'sub_managers'
          context_link 'categories',
                                :link_path=>"admin_module_app_categories_path" ,
                                :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'custom_announcement').id}",
                                :priority=>3,
                                :active_for_action=>{'admin/custom_announcements'=>'categories'},
                                :active_for_category => 'CustomAnnouncement',
                                :available_for => 'managers'
          context_link 'tags',
                                :link_path=>"admin_module_app_tags_path" ,
                                :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'custom_announcement').id}",
                                :priority=>4,
                                :active_for_action=>{'admin/custom_announcements'=>'tags'},
                                :active_for_tag => 'CustomAnnouncement',
                                :available_for => 'managers'
          context_link 'custom_announcement.feed_list',
                                :link_path=>"admin_custom_announcement_feed_path" ,
                                :priority=>5,
                                :active_for_action=>{'admin/custom_announcements'=>'feed'},
                                :available_for => 'managers'
           context_link 'custom_announcement.import',
                                :link_path=>"admin_custom_announcement_import_path" ,
                                :priority=>6,
                                :active_for_action=>{'admin/custom_announcements'=>'import'},
                                :available_for => 'managers'
          context_link 'custom_announcement.settings',
                                :link_path=>"admin_custom_announcement_settings_path" ,
                                :priority=>6,
                                :active_for_action=>{'admin/custom_announcements'=>'settings'},
                                :available_for => 'managers'
        end

      end
      # temp = YAML.load_file(File.join(Rails.root,"config","mongoid.yml"))
      # dbsettings = temp["production"]["sessions"]["default"]
      # s = Moped::Session.new(dbsettings["hosts"])
      # s.use dbsettings["database"] 
      # s[:custom_bulletins].indexes.create({expirable_created_at: 1},{ expireAfterSeconds: 180 })
    end
  end
end