public async Task <IEnumerable <UserDocumentsDto> > GetUserInfo(long id, int page, [FromServices] IBlobProvider blobProvider, CancellationToken token) { var country = User.GetCountryClaim(); var query = new UserDocumentsQuery(id, page, country); var retVal = (await _queryBus.QueryAsync(query, token)).ToList(); var tasks = new Lazy <List <Task> >(); foreach (var document in retVal) { var files = await _blobProvider.FilesInDirectoryAsync("preview-0", document.Id.ToString(), token); var file = files.FirstOrDefault(); if (file != null) { document.Preview = blobProvider.GeneratePreviewLink(file, TimeSpan.FromMinutes(20)); document.SiteLink = Url.RouteUrl("DocumentDownload", new { id = document.Id }); } else { var t = _queueProvider.InsertBlobReprocessAsync(document.Id); tasks.Value.Add(t); } } return(retVal); }
public async Task <WebResponseWithFacet <DocumentFeedDto> > GetDocumentsAsync( [FromQuery] ProfileDocumentsRequest request, CancellationToken token = default) { var query = new UserDocumentsQuery(request.Id, request.Page, request.PageSize, request.DocumentType, request.Course); var retValTask = _queryBus.QueryAsync(query, token); var votesTask = Task.FromResult <Dictionary <long, VoteType> >(null); if (User.Identity.IsAuthenticated) { var userId = _userManager.GetLongUserId(User); var queryTags = new UserVotesByCategoryQuery(userId); votesTask = _queryBus.QueryAsync(queryTags, token) .ContinueWith( t2 => { return(t2.Result.ToDictionary(x => x.Id, s => s.Vote)); }, token); } await Task.WhenAll(retValTask, votesTask); foreach (var item in retValTask.Result.Result) { if (item.User != null) { item.User.Image = _urlBuilder.BuildUserImageEndpoint(item.User.Id, item.User.Image); } } return(new WebResponseWithFacet <DocumentFeedDto>() { Result = retValTask.Result.Result.Select(s => { s.Url = Url.DocumentUrl(s.Course, s.Id, s.Title); s.Preview = _urlBuilder.BuildDocumentThumbnailEndpoint(s.Id); if (votesTask.Result != null && votesTask.Result.TryGetValue(s.Id, out var p)) { s.Vote.Vote = p; } return s; }), Count = retValTask.Result.Count });
public async Task AdminUserDocumentsQuery_Ok(long userId, int page, string country) { var query = new UserDocumentsQuery(userId, page, country); await _fixture.QueryBus.QueryAsync(query, default); }
public async Task UserDocumentsQueryHandler_Ok(long userId, int page, int pageSize, DocumentType?documentType, string course) { var query = new UserDocumentsQuery(userId, page, pageSize, documentType, course); var _ = await fixture.QueryBus.QueryAsync(query, default); }