예제 #1
0
        public async Task <Result <ExportDto> > Handle(GetInvitationsForExportQuery request, CancellationToken cancellationToken)
        {
            var invitationsWithIncludes = await GetOrderedInvitationsWithIncludesAsync(request, cancellationToken);

            if (!invitationsWithIncludes.Any())
            {
                return(await CreateSuccessResultAsync(null, request));
            }

            var invitationsToBeExported = await CreateExportInvitationDtosAsync(invitationsWithIncludes);

            if (invitationsToBeExported.Count == 1)
            {
                await AddHistoryToSingleInvitationInList(invitationsToBeExported, cancellationToken);
            }

            return(await CreateSuccessResultAsync(invitationsToBeExported, request));
        }
예제 #2
0
        private async Task <SuccessResult <ExportDto> > CreateSuccessResultAsync(List <ExportInvitationDto> exportInvitationDtos, GetInvitationsForExportQuery request)
        {
            var filter = await CreateUsedFilterDtoAsync(request.ProjectName, request.Filter);

            return(new SuccessResult <ExportDto>(new ExportDto(exportInvitationDtos, filter)));
        }
예제 #3
0
        private async Task <List <Invitation> > GetOrderedInvitationsWithIncludesAsync(GetInvitationsForExportQuery request,
                                                                                       CancellationToken cancellationToken)
        {
            var invitationForQueryDtos = CreateQueryableWithFilter(_context, request.ProjectName, request.Filter, _utcNow);

            var orderedInvitations = await AddSorting(request.Sorting, invitationForQueryDtos).ToListAsync(cancellationToken);

            var invitationIds = orderedInvitations.Select(dto => dto.Id).ToList();

            var invitationsWithIncludes = await GetInvitationsWithIncludesAsync(_context, invitationIds, cancellationToken);

            return(orderedInvitations.Select(invitation => invitationsWithIncludes.Single(i => i.Id == invitation.Id)).ToList());
        }