public bool SaveInnerTransactions(InnerTransactionInsertListDto innerTransacrions) { try { _unitOfWork.CreateTransaction(); var mainCompanyId = innerTransacrions.MainCompanyId; var note = innerTransacrions.Note; //new line var mainCompnayCashe = _unitOfWork.GenericRepository <CompanyCash>().FindBy(x => x.CompanyId == mainCompanyId); var incomeTransactionCollection = new IncomeTransactionCollection() { CompnayId = mainCompanyId, Note = note, CreatedBy = _appSession.GetUserName() }; _unitOfWork.GenericRepository <IncomeTransactionCollection>().Insert(incomeTransactionCollection); foreach (var innerTransacrion in innerTransacrions.Transactions) { var moneyAction = IncomeTrasactionForClient(innerTransacrion, mainCompanyId, innerTransacrions.Date, incomeTransactionCollection); switch (innerTransacrion.TypeOfPay) { case TypeOfPay.Cash: break; case TypeOfPay.ClientsReceivables: { AgentBalnaceArbitrage(innerTransacrion, moneyAction); } break; case TypeOfPay.CompaniesReceivables: { CompanyBlanceArbitrage(innerTransacrion, moneyAction); } break; default: { return(false); } } MaiCompanyBalanceArbitrage(mainCompnayCashe.Where(c => c.CoinId == innerTransacrion.CoinId).First(), innerTransacrion, mainCompanyId, moneyAction); } _unitOfWork.Save(); _unitOfWork.Commit(); return(true); } catch (Exception ex) { _unitOfWork.Rollback(); Tracing.SaveException(ex); return(false); } }
private MoneyAction IncomeTrasactionForClient(InnerTransactionInsertDto dto, int mainCompayId, DateTime date, IncomeTransactionCollection incomeTransactionCollection) { int branchId = BranchHelper.Id; int treasuryId = _appSession.GetCurrentTreasuryId(); var transaction = new Transaction(); transaction.Reason = ""; transaction.SenderClient = GetClient(dto.Sender); transaction.SenderBranchId = branchId; transaction.ReceiverBranchId = branchId; transaction.TreaseryId = treasuryId; transaction.IncomeTransactionCollection = incomeTransactionCollection; switch (dto.TypeOfPay) { case TypeOfPay.Cash: { transaction.ReciverClient = GetClient(dto.ReciverClinet); transaction.TypeOfPay = TypeOfPay.Cash; transaction.Deliverd = false; } break; case TypeOfPay.ClientsReceivables: { transaction.ReciverClientId = dto.AgentId; transaction.ReciverClientCommission = dto.AgentCommission; transaction.TypeOfPay = TypeOfPay.ClientsReceivables; transaction.Deliverd = true; } break; case TypeOfPay.CompaniesReceivables: { transaction.SenderCompanyId = dto.ReciverCompany.CompanyId; transaction.SenderCompanyComission = dto.ReciverCompany.CompanyCommission; transaction.ReciverClient = GetClient(dto.ReciverCompany.ReciverClinet); transaction.TypeOfPay = TypeOfPay.CompaniesReceivables; transaction.Deliverd = true; } break; } transaction.CoinId = dto.CoinId; transaction.ReceiverCompanyId = mainCompayId; transaction.Amount = dto.Amount; transaction.TransactionType = TransactionType.ImportTransaction; //transaction.Note = note; transaction.OurComission = dto.OurComission; transaction.TransactionsStatus = TransactionStatus.NotNotified; transaction.CreatedBy = _appSession.GetUserName(); _unitOfWork.GenericRepository <Transaction>().Insert(transaction); var moneyAction = new MoneyAction(); moneyAction.Transaction = transaction; moneyAction.Date = date; moneyAction.CreatedBy = _appSession.GetUserName(); _unitOfWork.GenericRepository <MoneyAction>().Insert(moneyAction); return(moneyAction); }