예제 #1
0
        public async Task BindModelAsync(ModelBindingContext bindingContext)
        {
            if (bindingContext == null)
            {
                throw new ArgumentNullException(nameof(bindingContext));
            }

            IFormCollection files = await bindingContext.HttpContext.Request.ReadFormAsync();

            UploadTransactionDataRequest result = new UploadTransactionDataRequest();

            foreach (var file in files.Files)
            {
                ITransactionDataParser parser = _transactionDataParserFactory.CreateParser(file.ContentType);
                string fileContent            = await GetFileContent(file);

                TransactionDataDto transactionData = parser.Parse(fileContent);
                result.TransactionData.Transactions.AddRange(transactionData.Transactions);
            }
            bindingContext.Result = ModelBindingResult.Success(result);
        }
예제 #2
0
        public async Task <ActionResult> UploadTransactionDataCustomBinder(UploadTransactionDataRequest request)
        {
            ValidationResult validationResult = _validator.Validate(request);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.ToString()));
            }

            try
            {
                var transactions = _mapper.Map <IEnumerable <TransactionModel> >(request.TransactionData.Transactions);
                await _transactionService.AddTransactionsAsync(transactions);

                return(Ok());
            }
            catch (ArgumentNullException)
            {
                return(BadRequest());
            }
        }