예제 #1
0
        public async Task <IEnumerable <FlaggedDocumentDto> > FlagAsync
            ([FromServices] IBlobProvider blobProvider, CancellationToken token)
        {
            var query  = new FlaggedDocumentQuery(User.GetCountryClaim());
            var retVal = await _queryBus.QueryAsync(query, token);

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

            if (tasks.IsValueCreated)
            {
                await Task.WhenAll(tasks.Value);
            }

            //return retVal.Where(w => w.Preview != null);
            return(retVal);
        }
예제 #2
0
 public async Task FlaggedDocumentEmptyQuery_Ok(string country)
 {
     var query = new FlaggedDocumentQuery(country);
     await _fixture.QueryBus.QueryAsync(query, default);
 }