private async Task <IReadOnlyCollection <GroupSequenceModel> > LoadGroups() { var dropdownQuery = new GroupSequenceQuery(User); var items = await Mediator.Send(dropdownQuery); return(items); }
protected override async Task <IReadOnlyCollection <GroupSequenceModel> > Process(GroupSequenceQuery request, CancellationToken cancellationToken) { var tenantId = _userClaimManager.GetRequiredTenantId(request.Principal); var groups = await DataContext.Groups .AsNoTracking() .Where(q => q.TenantId == tenantId) .ToListAsync(cancellationToken); var grouping = groups.GroupBy(g => g.Sequence); var result = new List <GroupSequenceModel>(); foreach (var group in grouping) { var sequenceModel = new GroupSequenceModel(); sequenceModel.TenantId = tenantId; sequenceModel.Sequence = group.Key; sequenceModel.Name = group .Select(g => g.Name) .OrderBy(g => g, StringComparer.OrdinalIgnoreCase.WithNaturalSort()) .ToDelimitedString("; "); result.Add(sequenceModel); } return(result .OrderBy(g => g.Sequence) .ToList()); }