public virtual ListWithTotalCountResult <UserGroup> FindGroupsByBook(long bookId, int start, int count, string filterByName, bool fetchUser = false) { Project projectAlias = null; Permission permissionAlias = null; UserGroup groupAlias = null; var query = GetSession().QueryOver(() => groupAlias) .JoinAlias(x => groupAlias.Permissions, () => permissionAlias) .JoinAlias(x => permissionAlias.Project, () => projectAlias) .Where(() => projectAlias.Id == bookId && projectAlias.IsRemoved == false); if (!string.IsNullOrEmpty(filterByName)) { query.WhereRestrictionOn(() => groupAlias.Name).IsInsensitiveLike(filterByName, MatchMode.Anywhere); } query.OrderBy(x => x.GroupType).Asc .OrderBy(x => x.Name).Asc .Skip(start) .Take(count); var list = query.Future(); var totalCount = query.ToRowCountQuery().FutureValue <int>(); var result = new ListWithTotalCountResult <UserGroup> { List = list.ToList(), Count = totalCount.Value }; if (fetchUser) { GetSession().QueryOver <SingleUserGroup>() .WhereRestrictionOn(x => x.Id).IsInG(result.List.Select(x => x.Id)) .Fetch(SelectMode.Fetch, x => x.User) .List(); } return(result); }
private PagedResultList <ProjectDetailContract> MapPagedProjectsToContractList(ListWithTotalCountResult <MetadataResource> dbResult) { var resultContractList = MapProjectsToContractList(dbResult.List); return(new PagedResultList <ProjectDetailContract> { List = resultContractList, TotalCount = dbResult.Count, }); }