class OrbitBackendController < ApplicationController
  include OrbitCategory::Categorizing
  include OrbitCoreLib::AppBackendUtility
  include OrbitCoreLib::PermissionUtility
  include OrbitTag::Tagging
  include AdminHelper
  include ApplicationHelper

  helper :default_index
  
  layout "back_end"

  def setup_vars
    @app_title ||= controller_path.split('/')[1].singularize
    @module_app ||= ModuleApp.first(conditions: {:key => @app_title} )
    raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
  end

  def get_statuses
    status = []
    status << 'is_top'
    status << 'is_hot'
    status << 'is_hidden' unless is_guest?
    if @module_app.is_approvable && is_manager?
      status << 'is_pending'
      status << 'is_checked'
      status << 'is_rejected'
    end
    status
  end

  private

  def force_order_for_visitor
    check_backend_openness
    setup_vars
    set_current_user
  end


  def force_order_for_user
    setup_vars
    set_current_user
    authenticate_user!
    check_user_can_use
  end

  def check_user_can_use
    unless check_permission
      #redirect_to polymorphic_path(['panel',@app_title,'back_end','public'])
      redirect_to root_url
    end
  end
end