public async Task ImportTransactionHistory(ulong userId, string fileName) { var transactionCollection = await Task.Run(() => ReadPurchasesFromTransactions(fileName)); if (transactionCollection.Count > 0) { var allowedTypesForFiltering = new List <string>() { FidelityTransactionTypes.Purchase, DividendReinvestment }; var lastPurchaseDate = await GetLastPurchaseDateForUser(userId); var columnMapping = GetColumnMapping(transactionCollection[0]); var filteredTransactions = await Task.Run(() => GetTransactionsOfSpecificTypesAfterSpecificDate ( transactionCollection[0], lastPurchaseDate, allowedTypesForFiltering, columnMapping) ); if (filteredTransactions.Count > 0) { var purchases = await Task.Run(() => MapTransactionsToPurchases ( userId, filteredTransactions, columnMapping) ); foreach (var purchase in purchases) { var stockPurchase = await _stockPurchaseService.AddStockAndPurchaseInfo(purchase); await _stockHoldingService.AddPurchaseToHoldings(userId, stockPurchase.Purchase); } } } }
public async Task <IActionResult> Post([FromBody] StockPurchase purchaseData) { try { if (!ModelState.IsValid) { return(BadRequest()); } await _stockAndPurchaseService.AddStockAndPurchaseInfo(purchaseData); await _stockHoldingService.AddPurchaseToHoldings(purchaseData.UserId, purchaseData.Purchase); return(Ok()); } catch (ArgumentException ex) { return(BadRequest(ex.Message)); } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message)); } }