4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'app/services/ecom/core/menu_service.rb', line 4
def (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.joins(join_sql).where('UR.id IN (?)', role_ids).distinct
= .select { |m| m.parent.nil? }.each_with_object([]) do |item, list|
list << { id: item.id, text: item.label, iconCss: item.icon, items: [] }
end
.each do |ml|
ml[:items] = .reject { |m| m.parent.nil? }.each_with_object([]) do |item, list|
if item.parent_id == ml[:id]
list << { id: item.id, text: item.label, iconCss: item.icon, url: item.route }
end
end
end
end
|