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)); }
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))); }
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()); }