Esempio n. 1
0
 public async Task <Response <RoleResponse> > UpdateRoleMenu([FromRoute] Guid roleId, [FromBody] UpdateRoleMenuRequest request)
 {
     return(await _roleService.UpdateRoleMenuAsync(roleId, request));
 }
Esempio n. 2
0
        /// <summary>
        /// Cập nhật quyền menu: thêm xóa menu khỏi quyền
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <Response <RoleResponse> > UpdateRoleMenuAsync(Guid roleId, UpdateRoleMenuRequest request)
        {
            var role = await _roleManager.FindByIdAsync(roleId.ToString());

            if (role == null)
            {
                _logger.LogError("Not find role with id");
                return(new Response <RoleResponse>(Constant.STATUS_ERROR, new List <string> {
                    "Not find role with id"
                }));
            }

            //thêm menu vào quyền
            foreach (var item in request.AddMenuIds ?? new List <Guid> {
            })
            {
                var menu = await _newsContext.Menus.FindAsync(item);

                if (menu != null)
                {
                    var menuRole = _newsContext.MenuRoles.Where(x => x.RoleId.Equals(role.Id) && x.MenuId.Equals(menu.Id)).ToList();
                    if (menuRole.Count() == 0)
                    {
                        await _newsContext.MenuRoles.AddAsync(new MenuRole
                        {
                            Id     = Guid.NewGuid(),
                            MenuId = menu.Id,
                            RoleId = role.Id
                        });
                    }
                }
            }

            //xóa menu khỏi quyền
            foreach (var item in request.RemoveMenuIds ?? new List <Guid> {
            })
            {
                var menu = await _newsContext.Menus.FindAsync(item);

                if (menu != null)
                {
                    var menuRole = _newsContext.MenuRoles.Where(x => x.RoleId == role.Id && x.MenuId == menu.Id).ToList();
                    if (menuRole.Count() != 0)
                    {
                        _newsContext.MenuRoles.RemoveRange(menuRole);
                    }
                }
            }

            var updated = await _newsContext.SaveChangesAsync();

            if (updated > 0)
            {
                _logger.LogInformation("Update role menu sucess");
                return(new Response <RoleResponse>(Constant.STATUS_SUCESS));
            }

            _logger.LogError("Update role menu failed");
            return(new Response <RoleResponse>(Constant.STATUS_ERROR, new List <string> {
                "Error when save"
            }));
        }