Class: Ecom::Core::MenuService

Inherits:
Object
  • Object
show all
Defined in:
app/services/ecom/core/menu_service.rb

Instance Method Summary collapse

Instance Method Details

#fetch_menu(user) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'app/services/ecom/core/menu_service.rb', line 4

def fetch_menu(user)
  role_ids = user.user_roles.map(&:id)
  join_sql = "    INNER JOIN ecom_core_menus_user_roles MUR ON MUR.menu_id = ecom_core_menus.id\n    INNER JOIN ecom_core_user_roles UR ON MUR.user_role_id = UR.id\n  SQL\n  menu = Menu.joins(join_sql).where('UR.id IN (?)', role_ids).order(:id).distinct\n  menu_list = menu.select { |m| m.parent.nil? }.each_with_object([]) do |item, list|\n    list << { id: item.id, text: item.label, iconCss: item.icon, items: [] }\n  end\n\n  menu_list.each do |ml|\n    ml[:items] = menu.reject { |m| m.parent.nil? }.each_with_object([]) do |item, list|\n      list << { id: item.id, text: item.label, iconCss: item.icon, url: item.route } if item.parent_id == ml[:id]\n    end\n  end\n  { success: true, data: menu_list }\nend\n"