public async Task <FxTransactionDTO> InsertSalesTransaction(FxTransactionDTO newTransaction) { Staff staffMember = new Staff() { Department = "sales", Email = "*****@*****.**", FirstName = "Henri", LastName = "Haka", KeycloakId = "asdasdadasd", }; FX fxTransaction = new FX() { ApprovedBy = staffMember, BoughtAmount = newTransaction.SoldAmount * newTransaction.ExchangeRate, BoughtCurrency = newTransaction.BoughtCurrency, CreatedDate = newTransaction.CreatedDate, Bank = newTransaction.Customer, ExchangeRate = newTransaction.ExchangeRate, SoldAmount = newTransaction.SoldAmount, SoldCurrency = newTransaction.SoldCurrency, Position = await _unitOfWork.Positions.GetLatestPosition() }; BalanceDTO updatedBalance = await _balanceService.PrepareBalance(newTransaction); _unitOfWork.FxTransactions.Add(fxTransaction); _unitOfWork.SaveChanges(); return(newTransaction); }
public async Task <IActionResult> SubmitFxTransaction([FromBody] FxTransactionDTO newTransaction) { try { FxTransactionDTO transaction = await _fXService.InsertSalesTransaction(newTransaction); return(Ok(transaction)); } catch { return(BadRequest("Sale was not submited successfully")); } }
public async Task <BalanceDTO> PrepareBalance(FxTransactionDTO newTransaction) { DateTime currentDate = DateTime.Today; Position latestPosition = await _unitOfWork.Positions.GetLatestPosition(); BalanceDTO updatedBalance = new BalanceDTO(); if (latestPosition.SubmitedDate.Year == currentDate.Year && latestPosition.SubmitedDate.Month == currentDate.Month && latestPosition.SubmitedDate.Day == currentDate.Day) { JsonDocument latestBalanceJson = _unitOfWork.Balances.GetLatestBalanceByPositionId(latestPosition.Id).Result.CurrentBalance; string temp = latestBalanceJson.RootElement.ToString(); var boughtCurrency = newTransaction.BoughtCurrency; var soldCurrency = newTransaction.SoldCurrency; DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List <CurrencyBalanceDTO>)); MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(temp)); var obj = (List <CurrencyBalanceDTO>)ser.ReadObject(stream); foreach (CurrencyBalanceDTO item in obj) { if (item.label == soldCurrency) { item.amount += newTransaction.SoldAmount; } if (item.label == boughtCurrency) { item.amount -= newTransaction.SoldAmount * newTransaction.ExchangeRate; } } var json = new JavaScriptSerializer().Serialize(obj); updatedBalance.SubmitedDate = DateTime.Now; updatedBalance.Balance = json; } return(await UpdateBalance(updatedBalance)); }
public async Task <List <FxTransactionDTO> > GetSalesTransactions(DateTime targetDate) { List <FX> fx = await _unitOfWork.FxTransactions.GetAllTransactions(targetDate); List <FxTransactionDTO> transactionList = new List <FxTransactionDTO>(); foreach (var transaction in fx) { FxTransactionDTO singleTransaction = new FxTransactionDTO() { ApprovedBy = transaction.ApprovedBy, BoughtCurrency = transaction.BoughtCurrency, CreatedDate = transaction.CreatedDate, Customer = transaction.Bank, ExchangeRate = transaction.ExchangeRate, SoldAmount = transaction.SoldAmount, SoldCurrency = transaction.SoldCurrency, BoughtAmount = transaction.SoldAmount * transaction.ExchangeRate, Type = "automatic" }; transactionList.Add(singleTransaction); } return(transactionList); }