예제 #1
0
        protected async Task <TU> ExecuteAsync <T, TU>(ISheaftMediatr mediator, T input, CancellationToken token,
                                                       [CallerMemberName] string memberName = null) where T : ICommand <TU>
        {
            SetLogTransaction(input, typeof(T).Name);

            input.SetRequestUser(CurrentUser);
            var result = await mediator.Process(input, token);

            if (result.Succeeded)
            {
                return(result.Data);
            }

            throw new SheaftException(result);
        }
예제 #2
0
        public async Task <Job> ImportProducts(IFile file, [Service] ISheaftMediatr mediatr,
                                               JobsByIdBatchDataLoader jobsDataLoader, CancellationToken token)
        {
            using (var stream = file.OpenReadStream())
            {
                using (var content = new MemoryStream())
                {
                    await stream.CopyToAsync(content, token);

                    var input = new QueueImportProductsCommand(CurrentUser)
                    {
                        ProducerId = CurrentUser.Id, FileName = file.Name, FileStream = content.ToArray()
                    };

                    var result = await mediatr.Process(input, token);

                    return(await jobsDataLoader.LoadAsync(result.Data, token));
                }
            }
        }