コード例 #1
0
        private void AddCompanyCashFlow(InnerTransactionUpdateDto dto, MoneyAction moneyAction)
        {
            var companyCahsFlow = new CompanyCashFlow()
            {
                MoenyAction = moneyAction,
                Amount      = dto.Amount + dto.SenderCompany.CompanyCommission,
                Matched     = false,
                CompanyId   = dto.SenderCompany.CompanyId,
                CoinId      = dto.CoinId,
                CreatedBy   = _appSession.GetUserName()
            };

            _unitOfWork.GenericRepository <CompanyCashFlow>().Insert(companyCahsFlow);
        }
コード例 #2
0
        private void MaiCompanyBalanceArbitrage(CompanyCash companyCash, InnerTransactionInsertDto dto, int mainCompanyId, MoneyAction moneyAction)
        {
            companyCash.Total     -= (dto.Amount + dto.OurComission);
            companyCash.ModifiedBy = _appSession.GetUserName();
            _unitOfWork.GenericRepository <CompanyCash>().Update(companyCash);

            var companyCahsFlow = new CompanyCashFlow()
            {
                CoinId      = dto.CoinId,
                CompanyId   = mainCompanyId,
                Total       = companyCash.Total,
                Amount      = -dto.Amount,
                Matched     = false,
                MoenyAction = moneyAction
            };

            _unitOfWork.GenericRepository <CompanyCashFlow>().Insert(companyCahsFlow);
        }
コード例 #3
0
        private void EditMaiCompanyBalanceArbitrage(InnerTransactionUpdateDto dto, MoneyAction moneyAction)
        {
            var oldCompanyCashFlow = _unitOfWork.GenericRepository <CompanyCashFlow>()
                                     .FindBy(x => x.CoinId == dto.CoinId && x.MoneyActionId == moneyAction.Id).FirstOrDefault();

            if (oldCompanyCashFlow != null)
            {
                _unitOfWork.GenericRepository <CompanyCashFlow>().Delete(oldCompanyCashFlow);
            }
            var companyCashFlow = new CompanyCashFlow()
            {
                CoinId      = dto.CoinId,
                CompanyId   = dto.MainCompanyId,
                Amount      = -dto.Amount,
                Matched     = false,
                MoenyAction = moneyAction
            };

            _unitOfWork.GenericRepository <CompanyCashFlow>().Insert(companyCashFlow);
        }
コード例 #4
0
        private void CompanyBlanceArbitrage(InnerTransactionInsertDto dto, MoneyAction moneyAction)
        {
            var companyCah = _unitOfWork.GenericRepository <CompanyCash>()
                             .FindBy(c => c.CoinId == dto.CoinId && c.CompanyId == dto.ReciverCompany.CompanyId)
                             .FirstOrDefault();

            companyCah.Total     += dto.Amount;
            companyCah.Total     += dto.ReciverCompany.CompanyCommission;
            companyCah.ModifiedBy = _appSession.GetUserName();
            _unitOfWork.GenericRepository <CompanyCash>().Update(companyCah);

            var companyCahsFlow = new CompanyCashFlow()
            {
                MoenyAction = moneyAction,
                Total       = companyCah.Total,
                Amount      = dto.Amount + dto.ReciverCompany.CompanyCommission,
                Matched     = false,
                CompanyId   = dto.ReciverCompany.CompanyId,
                CoinId      = dto.CoinId,
                CreatedBy   = _appSession.GetUserName()
            };

            _unitOfWork.GenericRepository <CompanyCashFlow>().Insert(companyCahsFlow);
        }
コード例 #5
0
        public bool ExchangeForCompany(int companyId, int sellingCoinId, int purchasingCoinId, decimal firstAmount)
        {
            try
            {
                int treasuryId          = _appSession.GetCurrentTreasuryId();
                var secondCoinAmount    = CalcForFirstCoin(sellingCoinId, purchasingCoinId, firstAmount);
                var mainCoin            = _unitOfWork.GenericRepository <BranchCash>().FindBy(c => c.IsMainCoin == true).FirstOrDefault();
                var firstCoinExchange   = _unitOfWork.GenericRepository <CompanyCash>().FindBy(c => c.CoinId == sellingCoinId && c.CompanyId == companyId).FirstOrDefault();
                var secoundCoinExchange = _unitOfWork.GenericRepository <CompanyCash>().FindBy(c => c.CoinId == purchasingCoinId && c.CompanyId == companyId).FirstOrDefault();

                _unitOfWork.CreateTransaction();


                var exchange = new Exchange()
                {
                    BranchId           = BranchHelper.Id,
                    FirstCoinId        = sellingCoinId,
                    SecoundCoinId      = purchasingCoinId,
                    AmountOfFirstCoin  = firstAmount,
                    AmoutOfSecoundCoin = secondCoinAmount,
                    MainCoinId         = mainCoin.CoinId,
                };

                _unitOfWork.GenericRepository <Exchange>().Insert(exchange);


                var companyCaches         = _unitOfWork.GenericRepository <CompanyCash>().FindBy(c => c.CompanyId == companyId);
                var branchCashSellingCoin = companyCaches.Where(c => c.CoinId == sellingCoinId).FirstOrDefault();
                branchCashSellingCoin.Total -= firstAmount;
                _unitOfWork.GenericRepository <CompanyCash>().Update(branchCashSellingCoin);


                var branchCashpurhesCoin = companyCaches.Where(c => c.CoinId == purchasingCoinId).FirstOrDefault();
                branchCashpurhesCoin.Total += secondCoinAmount;
                _unitOfWork.GenericRepository <CompanyCash>().Update(branchCashpurhesCoin);

                var moneyAction = new MoneyAction()
                {
                    ExchangeId = exchange.Id
                };
                _unitOfWork.GenericRepository <MoneyAction>().Insert(moneyAction);
                var companyCashFlowForFirstCoin = new CompanyCashFlow()
                {
                    CompanyId   = companyId,
                    MoenyAction = moneyAction,
                    CoinId      = sellingCoinId,
                    Total       = branchCashSellingCoin.Total,
                    Amount      = -firstAmount
                };
                _unitOfWork.GenericRepository <CompanyCashFlow>().Insert(companyCashFlowForFirstCoin);

                var companyCashFlowForSecondCoin = new CompanyCashFlow()
                {
                    CompanyId   = companyId,
                    CoinId      = purchasingCoinId,
                    MoenyAction = moneyAction,
                    Total       = branchCashpurhesCoin.Total,
                    Amount      = secondCoinAmount
                };
                _unitOfWork.GenericRepository <CompanyCashFlow>().Insert(companyCashFlowForSecondCoin);

                _unitOfWork.Save();
                _unitOfWork.Commit();

                return(true);
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                return(false);
            }
        }
コード例 #6
0
 public static decimal?Commission(this CompanyCashFlow companyCashFlow)
 {
     return(companyCashFlow.MoenyAction.Comission(companyCashFlow.CompanyId));
 }
コード例 #7
0
 public static string CompanyName(this CompanyCashFlow companyCashFlow)
 {
     return(companyCashFlow.Company.Name);
 }
コード例 #8
0
 public static string CountryName(this CompanyCashFlow companyCashFlow)
 {
     return(companyCashFlow.MoenyAction.CountryName());
 }
コード例 #9
0
 public static string SenderName(this CompanyCashFlow companyCashFlow, Requester requester, int requesterId)
 {
     return(companyCashFlow.MoenyAction.SenderName(requester, requesterId));
 }