Ejemplo n.º 1
0
        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());
        }