Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public PublicResult ConfigMenu(ConfigMenuDto dto)
        {
            using (var client = DbFactory.CreateClient())
            {
                var list = client.Queryable <RoleMenu, AdminMenu>((rm, m) => new object[]
                {
                    JoinType.Left, rm.MenuId == m.Id
                })
                           .Where((rm, m) => rm.RoleId == dto.RoleId)
                           .Select((rm, m) => new
                {
                    MenuId     = m.Id,
                    RoleMenuId = rm.Id
                })
                           .ToList();

                client.UseTran(tran =>
                {
                    var willAddMenus = dto.ConfigedMenus
                                       .Where(t => list.All(x => x.MenuId != t.Id))
                                       .Select(t => new RoleMenu()
                    {
                        MenuId = t.Id,
                        RoleId = dto.RoleId
                    })
                                       .ToList();

                    var willRemoveMenus = list
                                          .Where(t => dto.ConfigedMenus.All(x => x.Id != t.MenuId))
                                          .Select(t => t.RoleMenuId)
                                          .ToList();

                    if (willAddMenus.Any())
                    {
                        tran.Insertable <RoleMenu>(willAddMenus).ExecuteCommand();
                    }

                    if (willRemoveMenus.Any())
                    {
                        tran.Deleteable <RoleMenu>().In(willRemoveMenus).ExecuteCommand();
                    }

                    return(0);
                });

                return(Ok());
            }
        }
Ejemplo n.º 2
0
        public IActionResult ConfigMenu(ConfigMenuDto dto)
        {
            var result = _roleService.ConfigMenu(dto);

            return(Json(result));
        }