public async Task <Response <RoleResponse> > UpdateRoleMenu([FromRoute] Guid roleId, [FromBody] UpdateRoleMenuRequest request) { return(await _roleService.UpdateRoleMenuAsync(roleId, request)); }
/// <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" })); }