public async Task <IList <TUser> > GetUsersInRoleAsync(string roleName, CancellationToken cancellationToken) { var query = from m in membersRepository.GetAll() join c in contentRepository.GetAll() on m.NodeId equals c.NodeId join ct in contentTypeRepository.GetAll() on c.ContentType equals ct.NodeId join m2m in member2MemberGroupRepository.GetAll() on m.NodeId equals m2m.Member into grouping from m2m in grouping.DefaultIfEmpty() join un in umbracoNodeRepository.GetAll() on m2m.MemberGroup equals un.Id into grouping2 from un in grouping2.DefaultIfEmpty() join pd in propertyDataRepository.GetAll() on m.NodeId equals pd.ContentNodeId join pt in propertyTypeRepository.GetAll() on pd.PropertyTypeId equals pt.Id where un.Text.ToUpper() == roleName.ToUpper() || ct.Alias.ToUpper().Equals(roleName.ToUpper()) select new MemberProperty { Member = m, PropertyData = pd, PropertyType = pt }; var memberProperties = await membersRepository.ToListAsync(query, cancellationToken); var membersProp = memberProperties.GroupBy(x => x.Member.NodeId, x => x); return(membersProp.Select(x => UmbracoUtils.CreateUserFromProperties <TUser>(x.ToList())).ToList()); }
public async Task <TUser> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken) { var query = from m in membersRepository.GetAllAsNoTracking() join pd in propertyDataRepository.GetAllAsNoTracking() on m.NodeId equals pd.ContentNodeId join pt in propertyTypeRepository.GetAllAsNoTracking() on pd.PropertyTypeId equals pt.Id where m.Email.ToUpper() == normalizedEmail.ToUpper() select new MemberProperty { Member = m, PropertyData = pd, PropertyType = pt }; var memberProperties = await membersRepository.ToListAsync(query, cancellationToken); return(UmbracoUtils.CreateUserFromProperties <TUser>(memberProperties)); }
public async Task <TUser> FindByIdAsync(string userId, CancellationToken cancellationToken) { if (!int.TryParse(userId, out int intUserId)) { throw new ArgumentException(nameof(userId)); } var query = from m in membersRepository.GetAllAsNoTracking() join pd in propertyDataRepository.GetAllAsNoTracking() on m.NodeId equals pd.ContentNodeId join pt in propertyTypeRepository.GetAllAsNoTracking() on pd.PropertyTypeId equals pt.Id where m.NodeId == intUserId select new MemberProperty { Member = m, PropertyData = pd, PropertyType = pt }; var memberProperties = await membersRepository.ToListAsync(query, cancellationToken); return(UmbracoUtils.CreateUserFromProperties <TUser>(memberProperties)); }