public async Task <ActionResultResponse> SaveUsers(string tenantId, string roleId, ICollection <string> userIds) { // Check role exists by tenantId. var isRoleExistsInTenant = await _roleRepository.CheckRoleExistsByTenant(tenantId, roleId); if (!isRoleExistsInTenant) { return(new ActionResultResponse(-1, _sharedResourceService.GetString(ErrorMessage.NotHavePermission))); } // Delete all user by roleId. var result = await _userRoleRepository.DeleteByRoleId(roleId); // Add users to user roles. if (result == -1 || result > 0) { var resultAdd = await _userRoleRepository.AddUsers(roleId, userIds); return(new ActionResultResponse(resultAdd, resultAdd <= 0 ? _sharedResourceService.GetString(ErrorMessage.SomethingWentWrong) : _resourceService.GetString("Update user role successful.") )); } return(new ActionResultResponse(-2, _sharedResourceService.GetString(ErrorMessage.SomethingWentWrong))); }
public async Task <ActionResultResponse> Update(string tenantId, string id, RoleMeta roleMeta) { if (roleMeta.RolePagePermissions == null || !roleMeta.RolePagePermissions.Any()) { return(new ActionResultResponse(-1, _resourceService.GetString("Please select at least 1 page and permission."))); } // Check RoleName exists. var isNameExists = await _roleRepository.CheckExists(tenantId, id, roleMeta.Name); if (isNameExists) { return(new ActionResultResponse(-2, _resourceService.GetString("Role name already exists. Please try again."))); } var roleInfo = await _roleRepository.FindByIdAsync(id, new CancellationToken()); if (roleInfo == null) { return(new ActionResultResponse(-3, _resourceService.GetString("Role does not exists. Please try again."))); } if (roleInfo.TenantId != tenantId) { return(new ActionResultResponse(-4, _sharedResourceService.GetString(ErrorMessage.NotHavePermission))); } if (roleMeta.ConcurrencyStamp != roleInfo.ConcurrencyStamp) { return(new ActionResultResponse(-5, _resourceService.GetString("Role has been updated by another staff. You can not update this role."))); } if (roleInfo.Type == RoleType.BuiltIn) { return(new ActionResultResponse(-6, _resourceService.GetString("You can not modifi built-In role."))); } roleInfo.Name = roleMeta.Name.Trim(); roleInfo.Description = roleMeta.Description?.Trim(); roleInfo.ConcurrencyStamp = Guid.NewGuid().ToString(); roleInfo.NormalizedName = roleInfo.Name.StripVietnameseChars().ToUpper(); var result = await _roleRepository.UpdateAsync(roleInfo, new CancellationToken()); // Save role pages. await UpdateRolePages(roleInfo.Id, roleMeta.RolePagePermissions); // Save user roles. await SaveUsers(); return(new ActionResultResponse(result.Succeeded ? 1 : 0, result.Succeeded ? _resourceService.GetString("Update role successful.") : _sharedResourceService.GetString("Something went wrong. Please contact with administrator."))); async Task SaveUsers() { // Delete all user role. await _userRoleRepository.DeleteByRoleId(roleInfo.Id); // Add new user role. await AddNewUserRole(tenantId, roleInfo.Id, roleMeta.UserIds); } }