示例#1
0
        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));
        }
示例#4
0
        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);
        }