Example #1
0
        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));
        }
Example #2
0
        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);
            }
        }