public AccountViewModel(Account account) { using (var db = new ClientsEntities()) { var client = db.GetClientById(account.ClientID); _surname = client?.Surname; _name = client?.Name; _patronimic = client?.Patronimic; var depositType = db.GetDepositTypeById(account.DepositTypeID); _depositType = depositType.Name; _accountNumber = account.AccountNumber; _moneyAmount = account.MoneyAmount.ToString(); _startDate = account.StartDate; _endDate = account.EndDate; _daysCount = account.DaysCount.ToString(); _percents = depositType.Percents.ToString(); _currency = db.GetCurrencyById(account.CurrencyID); _isPercentage = (account.PercentAccountID == null) ? "Да" : "Нет"; if (account.PercentAccountID != null) { var percentAcc = db.GetAccountById(account.PercentAccountID.Value); _percentMoney = percentAcc.MoneyAmount.ToString(); } _isClosed = account.IsClosed ? "Закрыт" : "Открыт"; } }
private void CalculatePercents(ClientsEntities db, List <Account> list) { foreach (var acc in list) { var percents = (db.GetDepositTypeById(acc.DepositTypeID).Percents *acc.MoneyAmount) / (100 * 365); db.GetAccountById(acc.PercentAccountID.Value).MoneyAmount += Math.Round(percents, 4); } db.SaveChanges(); }
private void EndOfMonthPayments(ClientsEntities db, List <Account> list) { foreach (var acc in list) { if (acc.DaysCount % 30 == 0) { var percentAccount = db.GetAccountById(acc.PercentAccountID.Value); if (acc.DepositTypeID == 1) { acc.MoneyAmount += percentAccount.MoneyAmount; var bankResources = db.BankResourse.ToList(); bankResources[0].RealMoney -= ConvertCurrencyToByn(acc.CurrencyID) * percentAccount.MoneyAmount; percentAccount.MoneyAmount = 0; } if (acc.DepositTypeID == 3) { var daysCount = (acc.EndDate - acc.StartDate).Days + 1; var mainAmount = Convert.ToDouble(acc.MoneyAmount); var percents = mainAmount * db.GetDepositTypeById(acc.DepositTypeID).Percents / 100; var percentsByDay = Math.Round(percents / daysCount, 2); var mainAmountByDay = Math.Round(mainAmount / daysCount, 2); acc.MoneyAmount -= mainAmountByDay * 30; percentAccount.MoneyAmount -= percentsByDay * 30; var bankResources = db.BankResourse.ToList(); bankResources[0].RealMoney += ConvertCurrencyToByn(acc.CurrencyID) * (percentsByDay + mainAmountByDay) * 30; } if (acc.DepositTypeID == 4) { var daysCount = (acc.EndDate - acc.StartDate).Days + 1; var mainAmount = Convert.ToDouble(acc.MoneyAmount); var percents = mainAmount * db.GetDepositTypeById(acc.DepositTypeID).Percents / 100; var percentsByDay = Math.Round(percents / daysCount, 2); percentAccount.MoneyAmount -= percentsByDay * 30; var bankResources = db.BankResourse.ToList(); bankResources[0].RealMoney += ConvertCurrencyToByn(acc.CurrencyID) * percentsByDay * 30; } } } db.SaveChanges(); }