public async Task <IPagedResult <GetUserGroupOutput> > Search(QueryUserGroupInput query) { /*Expression<Func<Domain.UserGroups.UserGroup, bool>> predicate = p => p.Name.Contains(query.SearchKey); * if (query.Status.HasValue) predicate = predicate.And(p => p.Status == query.Status); * * var queryResult = await _userGroupRepository.GetPageAsync(predicate, query.PageIndex, query.PageCount); * * var outputs = queryResult.Item1.MapTo<IEnumerable<GetUserGroupOutput>>().GetPagedResult(queryResult.Item2); * foreach (var output in outputs.Items) * { * await output.SetAuditInfo(); * output.Roles = await _userGroupDomainService.GetUserGroupRoleOutputs(output.Id); * output.Permissions = (await _userGroupDomainService.GetUserGroupPermissions(output.Id)) * .MapTo<IEnumerable<GetDisplayPermissionOutput>>(); * output.DataPermissionOrgs = await _userGroupDomainService.GetUserGroupDataPermissionOrgs(output.Id); * }*/ return(await _userGroupDomainService.Search(query)); }
public async Task <IPagedResult <GetUserGroupOutput> > Search(QueryUserGroupInput query) { var sql = @" SELECT DISTINCT ug.* ,ug.CreateBy as CreatorUserId, ug.CreateTime as CreationTime, ug.UpdateBy as LastModifierUserId, ug.UpdateTime as LastModificationTime FROM UserGroup as ug {0} WHERE ug.IsDeleted=@IsDeleted AND ug.TenantId=@TenantId "; var sqlParams = new Dictionary <string, object>(); sqlParams.Add("IsDeleted", HeroConstants.UnDeletedFlag); sqlParams.Add("TenantId", _session.TenantId); if (!query.SearchKey.IsNullOrWhiteSpace()) { sql += " AND ug.`Name` LIKE @SearchKey OR ug.Identification LIKE @SearchKey "; sqlParams.Add("SearchKey", $"%{query.SearchKey}%"); } if (query.Status.HasValue) { sql += " AND ug.Status=@Status "; sqlParams.Add("Status", query.Status); } if (query.OrgId.HasValue) { sql = string.Format(sql, " LEFT JOIN UserGroupOrganization as ugo On ugo.UserGroupId=ug.Id AND ugo.TenantId=@TenantId"); sql += " AND (ugo.OrgId=@OrgId OR ug.IsAllOrg=@IsAllOrg)"; sqlParams.Add("OrgId", query.OrgId.Value); sqlParams.Add("IsAllOrg", true); } else { sql = string.Format(sql, " "); } if (!query.Sorting.IsNullOrEmpty()) { sql += $" ORDER BY ug.{query.Sorting} {query.SortType}"; } else { sql += " ORDER BY ug.Id DESC"; } var countSql = "SELECT COUNT(DISTINCT ug.Id) FROM " + sql.Substring(sql.ToLower().IndexOf("from") + "from".Length); sql += $" LIMIT {(query.PageIndex - 1) * query.PageCount} , {query.PageCount} "; await using (Connection) { var queryResult = await Connection.QueryAsync <UserGroup>(sql, sqlParams); var queryResultTotalCount = await Connection.ExecuteScalarAsync <int>(countSql, sqlParams); var outputs = queryResult.MapTo <IEnumerable <GetUserGroupOutput> >().GetPagedResult(queryResultTotalCount); foreach (var output in outputs.Items) { await output.SetAuditInfo(); output.Roles = await GetUserGroupRoleOutputs(output.Id); output.Permissions = (await GetUserGroupPermissions(output.Id)) .MapTo <IEnumerable <GetDisplayPermissionOutput> >(); output.Organizations = await GetUserGroupOrgInfo(output.Id); output.DataPermissionOrgs = await GetUserGroupDataPermissionOrgs(output.Id); } return(outputs); } }