Sha256: ebc4f439e2a88fc354287389107009e4edd195445917cad1667d7f4d1684dbb7

Contents?: true

Size: 936 Bytes

Versions: 22

Compression:

Stored size: 936 Bytes

Contents

module Ecom
  module Core
    class MenuService
      def fetch_menu(user)
        role_ids = user.user_roles.map(&:id)
        join_sql = <<-SQL
          INNER JOIN ecom_core_menus_user_roles MUR ON MUR.menu_id = ecom_core_menus.id
          INNER JOIN ecom_core_user_roles UR ON MUR.user_role_id = UR.id
        SQL
        menu = Menu.joins(join_sql).where('UR.id IN (?)', role_ids).order(:id).distinct
        menu_list = menu.select { |m| m.parent.nil? }.each_with_object([]) do |item, list|
          list << { id: item.id, text: item.label, iconCss: item.icon, items: [] }
        end

        menu_list.each do |ml|
          ml[:items] = menu.reject { |m| m.parent.nil? }.each_with_object([]) do |item, list|
            list << { id: item.id, text: item.label, iconCss: item.icon, url: item.route } if item.parent_id == ml[:id]
          end
        end
        { success: true, data: menu_list }
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
ecom_core-1.3.1 app/services/ecom/core/menu_service.rb
ecom_core-1.3.0 app/services/ecom/core/menu_service.rb
ecom_core-1.2.36 app/services/ecom/core/menu_service.rb
ecom_core-1.2.35 app/services/ecom/core/menu_service.rb
ecom_core-1.2.34 app/services/ecom/core/menu_service.rb
ecom_core-1.2.33 app/services/ecom/core/menu_service.rb
ecom_core-1.2.32 app/services/ecom/core/menu_service.rb
ecom_core-1.2.31 app/services/ecom/core/menu_service.rb
ecom_core-1.2.30 app/services/ecom/core/menu_service.rb
ecom_core-1.2.29 app/services/ecom/core/menu_service.rb
ecom_core-1.2.28 app/services/ecom/core/menu_service.rb
ecom_core-1.2.27 app/services/ecom/core/menu_service.rb
ecom_core-1.2.26 app/services/ecom/core/menu_service.rb
ecom_core-1.2.25 app/services/ecom/core/menu_service.rb
ecom_core-1.2.24 app/services/ecom/core/menu_service.rb
ecom_core-1.2.23 app/services/ecom/core/menu_service.rb
ecom_core-1.2.22 app/services/ecom/core/menu_service.rb
ecom_core-1.2.21 app/services/ecom/core/menu_service.rb
ecom_core-1.2.20 app/services/ecom/core/menu_service.rb
ecom_core-1.2.19 app/services/ecom/core/menu_service.rb