public Customer(IBalance customerBalance) { if (customerBalance == null) throw new ArgumentNullException(); _customerBalance = customerBalance; }
public BalanceSubstationView(IBalance balance) { _balance = balance; _task = new Task(() => { //System.Threading.Thread.Sleep(5000); table.Dispatcher.BeginInvoke( new Action(delegate() { table.BeginInit(); Create_tableColumns(); //ate = State.Idle; table.ItemsSource = _balance.Items; table.EndInit(); IsBusy = false; })); }); _task.ContinueWith((t) => { //State = State.Idle; EmcosSiteWrapperApp.LogError("Просмотр баланса подстанции - ошибка: " + t.Exception.Message); EmcosSiteWrapperApp.ShowError("Произошла ошибка.\n" + t.Exception.Message); }, TaskContinuationOptions.OnlyOnFaulted); InitializeComponent(); _task.Start(); DataContext = this; rootGrid.DataContext = _balance; _balance.PropertyChanged += Balance_PropertyChanged; }
private void button1_Click(object sender, EventArgs e) { IBalance balance = (IBalance)atm; if (radioButton1.Checked) { balance.PayMoney(0, (int)numericUpDown1.Value); MessageBox.Show("Деньги успешно положены на карту!"); } if (radioButton2.Checked) { int money = 0; balance.GetMoney(ref money); if ((int)numericUpDown1.Value < money) { balance.WithdrawMoney(0, (int)numericUpDown1.Value); MessageBox.Show("Деньги успешно сняты с карты!"); } else { MessageBox.Show("Error: нет столько денег в банкомате."); } } numericUpDown1.Value = 0; }
public Account(string name, string password, IBalance balance) { Transactions = new List <ITransaction>(); Name = name; Password = password; Balance = balance; }
protected static IEnumerable <string> GetChildAccountIds(IBalance balance, string account) { var accountPredicate = new QueryAccountPredicate(account + ":**"); var accountIds = balance.Items.GetBalanceItems(accountPredicate).Select(balanceItem => ((Account)balanceItem.Account).Id); var level = account.Split(':').Length; return(accountIds.Select(accountId => string.Join(":", accountId.Split(':').Take(level))).Distinct()); }
public CurrencyController( IBalance balance, IUser user ) { _balance = balance; _user = user; }
public UserService( ICurrencyDataManager currencyDataManager, IBalance balance ) { _currencyDataManager = currencyDataManager; _balance = balance; }
public Fond(string name, IBalance initialBalance) { this.Name = name; this.FondBalance = initialBalance; this.Members = new List <IAccount>(); this.Transactions = new List <ITransaction>(); }
public IResult ConvertToEUR(IBalance balance) { IResult result = _stateResult.Clone(); result.Success = false; result.Message = MessageHolder.GetMessage(MessageType.AlreadyIn) + this.Name; return(result); }
[NotNull] public static string FormatBalance([NotNull] BaseModule module, [NotNull] IBalance balance) { var a = module.Name(balance.UserA); var b = module.Name(balance.UserB); var(borrower, lender) = balance.Amount < 0 ? (a, b) : (b, a); return($"{borrower} owes {FormatCurrency(Math.Abs(balance.Amount), balance.Unit)} to {lender}"); }
public static IBalance Subtract(this IBalance endBalance, IBalance startBalance) { // Performance.MarkStart("BalanceHelper.Subtract"); var balance = new Balance(); balance.Index = endBalance.Index; balance.Book = endBalance.Book; foreach (var endBalanceItem in endBalance.Items) { var startBalanceItem = startBalance.Items.GetBalanceItem(endBalanceItem.Account); var balanceItem = new BalanceItem(); if (startBalanceItem != null) { if (!endBalanceItem.Asset.Equals(startBalanceItem.Asset)) { throw new ValidationException("Assets not equal."); } balanceItem.Asset = endBalanceItem.Asset; balanceItem.Account = endBalanceItem.Account; balanceItem.Balance = endBalance; var totalDebit = endBalanceItem.TotalDebit - startBalanceItem.TotalDebit; var totalCredit = endBalanceItem.TotalCredit - startBalanceItem.TotalCredit; if (totalDebit < 0) { totalCredit -= totalDebit; totalDebit = 0; } if (totalCredit < 0) { totalDebit -= totalCredit; totalCredit = 0; } balanceItem.TotalDebit = totalDebit; balanceItem.TotalCredit = totalCredit; } else { balanceItem = (BalanceItem)endBalanceItem; } balance.Items.Add(balanceItem); } // Performance.MarkEnd("BalanceHelper.Subtract"); return(balance); }
public SubstationExport(IBalance balance) { if (_balance == null) { throw new ArgumentNullException("SubstationExport - constructor: argument Balance<ENERGY> is null"); } this._balance = balance; tableStyle = CreateStyle("style_table"); tableStyle.Border.Left.Style = tableStyle.Border.Top.Style = tableStyle.Border.Right.Style = tableStyle.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; tableStyle.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; tableStyle.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Right; tableHeaderStyle = CreateStyle("style_table_header"); tableHeaderStyle.Border.Left.Style = tableHeaderStyle.Border.Top.Style = tableHeaderStyle.Border.Right.Style = tableHeaderStyle.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; tableHeaderStyle.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; tableHeaderStyle.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; tableHeaderStyle.WrapText = true; tableHeaderStyle.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; tableHeaderStyle.Fill.BackgroundColor.SetColor(System.Drawing.Color.FromArgb(255, 255, 153)); cellDateStyle = CreateStyle("cellDateStyle"); cellDateStyle.Border.Left.Style = cellDateStyle.Border.Top.Style = cellDateStyle.Border.Right.Style = cellDateStyle.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; cellDateStyle.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; cellDateStyle.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Right; cellDateStyle.Numberformat.Format = "dd.MM.yyyy"; cellTextStyle = CreateStyle("cellTextStyle"); cellTextStyle.Border.Left.Style = cellTextStyle.Border.Top.Style = cellTextStyle.Border.Right.Style = cellTextStyle.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; cellTextStyle.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; cellTextStyle.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Right; cellTextStyle.Numberformat.Format = "@"; cellNumbersStyle = CreateStyle("cellNumbersStyle"); cellNumbersStyle.Border.Left.Style = cellNumbersStyle.Border.Top.Style = cellNumbersStyle.Border.Right.Style = cellNumbersStyle.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; cellNumbersStyle.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; cellNumbersStyle.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Right; cellNumbersStyle.Numberformat.Format = @"[$-419]#,#0.0_ ;[Red]\-#,#0.0, "; }
public static void Copy(this IBalance sourceBalance, IBalance destinationBalance, IAccountMap accountMap) { // Performance.MarkStart("BalanceHelper.Copy(balance)"); var sourceAccounts = new List <IAccount>(sourceBalance.Items.Select(balanceItem => balanceItem.Account)); var selectedAccounts = new List <IAccount>(); foreach (var accountMapItem in accountMap.Items) { if (!accountMapItem.Book.Equals(sourceBalance.Book)) { continue; } var balanceItems = sourceBalance.Items.GetBalanceItems(accountMapItem.AccountPredicate); if (!balanceItems.Any()) { continue; } var newBalanceItem = new BalanceItem(); newBalanceItem.Balance = destinationBalance; newBalanceItem.Account = accountMapItem.Account; newBalanceItem.Asset = balanceItems.First().Asset; newBalanceItem.TotalDebit = balanceItems.Sum(balanceItem => balanceItem.TotalDebit); newBalanceItem.TotalCredit = balanceItems.Sum(balanceItem => balanceItem.TotalCredit); destinationBalance.Items.Add(newBalanceItem); selectedAccounts.AddRange(balanceItems.Select(balanceItem => balanceItem.Account)); } // Performance.MarkStart("BalanceHelper.Copy(balance):Validate"); var missedSourceAccounts = sourceAccounts.Except(selectedAccounts).ToList(); if (missedSourceAccounts.Any()) { throw new ValidationException($"Missed accounts:{Environment.NewLine}{string.Join(Environment.NewLine, missedSourceAccounts)}"); } var duplicateSelectedSourceAccounts = selectedAccounts.GroupBy(account => account).Where(group => group.Count() > 1).Select(group => group.Key).ToList(); if (duplicateSelectedSourceAccounts.Any()) { throw new ValidationException($"Duplicate selected accounts:{Environment.NewLine}{string.Join(Environment.NewLine, duplicateSelectedSourceAccounts)}"); } // Performance.MarkEnd("BalanceHelper.Copy(balance):Validate"); // Performance.MarkEnd("BalanceHelper.Copy(balance)"); }
public static async Task <string> Format(this IBalance balance, IUserService users) { var a = await users.Name(balance.UserA); var b = await users.Name(balance.UserB); var(borrower, lender) = balance.Amount < 0 ? (a, b) : (b, a); var currency = TransactionFormatting.FormatCurrency(Math.Abs(balance.Amount), balance.Unit); return($"{borrower} owes {currency} to {lender}"); }
public void Validate(IBalance balance) { if (!balance.Book.Equals(_book)) { return; } foreach (var balanceItem in balance.Items.GetBalanceItems(_accountPredicate)) { if (balanceItem.BalanceCredit > 0) { throw new ValidationException($"Balance ({balance}) account ({balanceItem.Account}) balance credit must be zero."); } } }
public IResult ConvertToUAH(IBalance balance) { UAHBalanceState uah = (UAHBalanceState)StateFactoryHolder .factory.GetBalanceState(CurrencyType.UAH.ToString()); balance.Count = balance.Count * balance.Currency.IndexToDollar / uah.IndexToDollar; balance.Currency = uah; IResult result = _stateResult.Clone(); result.Message = MessageHolder.GetMessage(MessageType.Convert) + uah.Name; result.Success = true; return(result); }
public IResult ConvertToEUR(IBalance balance) { EURBalanceState eur = (EURBalanceState)StateFactoryHolder .factory.GetBalanceState(CurrencyType.EUR.ToString()); balance.Count = balance.Count * balance.Currency.IndexToDollar / eur.IndexToDollar; balance.Currency = eur; IResult result = _stateResult.Clone(); result.Message = MessageHolder.GetMessage(MessageType.Convert) + eur.Name; result.Success = true; return(result); }
protected static IEnumerable <string> GetAllAccountIds(IBalance balance, IAccountPredicate accountPredicate) { var accountIds = balance.Items.GetBalanceItems(accountPredicate).Select(balanceItem => ((Account)balanceItem.Account).Id); var accountIdsList = new List <string>(); foreach (var accountId in accountIds) { var accountIdParts = accountId.Split(':'); for (var i = 1; i <= accountIdParts.Length; i++) { accountIdsList.Add(string.Join(":", accountIdParts.Take(i))); } } return(accountIdsList.Distinct()); }
public AccountDecorator(IAccount account) { this._account = account; this.Name = account.Name; this.Password = account.Password; this.Balance = account.Balance; if (account.Transactions != null) { this.Transactions = account.Transactions; } else { this.Transactions = new List <ITransaction>(); } }
public IResult MakeContribution(IFond fond, IBalance balance) { IResult result = Result.GetDefaultResult(); if (fond.HasMember(this).Success) { ITransaction accountSpending = new Transaction(); accountSpending.Name = TransactionNameHolder .GetName(TransactionName.FondSpending); accountSpending.Description = string.Format("{0} - {1}", fond.Name, balance.GetStrValue()); accountSpending.Type = new TransactionType(TransactionTypes .Spending.ToString()); accountSpending.Time = DateTime.Now.ToLongTimeString(); accountSpending.Amount = balance; ITransaction fondEarning = new Transaction(); fondEarning.Name = TransactionNameHolder .GetName(TransactionName.AccountContribution); fondEarning.Description = string.Format("{0} - {1}", this.Name, balance.GetStrValue()); fondEarning.Type = new TransactionType(TransactionTypes .Earning.ToString()); fondEarning.Time = DateTime.Now.ToLongTimeString(); fondEarning.Amount = balance; this.SpendMoney(accountSpending); fond.ReceiveMoney(fondEarning); result.Success = true; result.Message = string.Format(MessageHolder .GetMessage(MessageType.MakeContribution), this.Name, fond.Name); } else { result.Message = fond.HasMember(this).Message; } return(result); }
public void Validate(IBalance balance) { if (!balance.Book.Equals(_book)) { return; } var balanceItems1 = balance.Items.GetBalanceItemsCombined(_accountPredicate1); var balanceItems2 = balance.Items.GetBalanceItemsCombined(_accountPredicate2); var assets = balanceItems1.Select(x => x.Asset).Union(balanceItems2.Select(x => x.Asset)); foreach (var asset in assets) { var balanceItem1 = balanceItems1.SingleOrDefault(x => x.Asset.Equals(asset)) ?? new BalanceItem(); var balanceItem2 = balanceItems2.SingleOrDefault(x => x.Asset.Equals(asset)) ?? new BalanceItem(); if (balanceItem1.BalanceDebit - balanceItem1.BalanceCredit != balanceItem2.BalanceCredit - balanceItem2.BalanceDebit) { throw new ValidationException($"Balance ({balance}) asset ({asset}) are not equal."); } } }
private void AddTransaction(ITransaction transaction, IBalance balance, DateTime?atTime = null, bool lrFlag = true) { var dt = atTime.GetValueOrDefault(DateTime.UtcNow); var note = GetAsNote(transaction); var toAccount = Get(note.Name) ?? Add(note.Name, note.AssociatedAccountType ?? KindsOfAccounts.Asset, false, null, transaction.AtTime); var traceId = transaction.GetThisAsTraceId(dt, balance as IVoca); var isDup = IsDuplicate(toAccount, traceId); if (isDup) { return; } if (lrFlag) { toAccount.Debit(transaction.Cash, null, transaction.AtTime, traceId); } else { toAccount.Credit(transaction.Cash, null, transaction.AtTime, traceId); } }
public static void Copy(this IBalance sourceBalance, IEntry entry) { // Performance.MarkStart("BalanceHelper.Copy(entry)"); foreach (var balanceItem in sourceBalance.Items) { if (balanceItem.BalanceDebit == 0 && balanceItem.BalanceCredit == 0) { continue; } var item = new EntryItem(); item.Entry = entry; item.Book = sourceBalance.Book; item.Account = balanceItem.Account; item.Asset = balanceItem.Asset; item.Debit = balanceItem.BalanceDebit; item.Credit = balanceItem.BalanceCredit; entry.Items.Add(item); } // Performance.MarkEnd("BalanceHelper.Copy(entry)"); }
public void PostBalance(IBalance balance, DateTime?atTime = null) { if (balance == null) { return; } var credits = balance.GetCredits() ?? new List <ITransaction>(); var debits = balance.GetDebits() ?? new List <ITransaction>(); if (!credits.Any() && !debits.Any()) { return; } foreach (var credit in credits) { AddTransaction(credit, balance, atTime, false); } foreach (var debit in debits) { AddTransaction(debit, balance, atTime); } }
public static bool HasBalance(this IBalance document) => document.DocBal.IsNonZero() && document.CuryDocBal.IsNonZero();
//[SlashCommand("transactions", "I will show all your transactions")] //public async Task ListTransactions(IUser? other = null) //{ // //Get all transactions in both directions // var all = (await _transactions.GetAllTransactions(Context.User.Id, other?.Id)).ToList(); // if (all.Count == 0) // await RespondAsync("No transactions"); // else // await DisplayTransactions(all); //} #region balance query //[SlashCommand("io", "I will tell you what you owe")] //public async Task ListDebtsByBorrower(IUser? lender = null) //{ // await ShowBalances(lender, b => b.UserA == Context.User.Id ^ b.Amount > 0, "You are debt free"); //} //[SlashCommand("oi", "I will tell you what you are owed")] //public async Task ListDebtsByLender(IUser? borrower = null) //{ // await ShowBalances(borrower, b => b.UserB == Context.User.Id ^ b.Amount > 0, "Nobody owes you anything"); //} //[SlashCommand("balance", "I will tell you your balance")] //public async Task ShowBalance(IUser? other = null) //{ // await ShowBalances(other, _ => true, "No non-zero balances"); //} //private async Task ShowBalances(IUser? other, Func<IBalance, bool> filter, string none) //{ // var balances = (await _transactions.GetBalances(Context.User.Id, other?.Id)).Where(filter).ToArray(); // if (balances.Length == 0) // await RespondAsync(none); // else // await DisplayBalances(balances); //} #endregion #region helpers private async Task <string> FormatBalance(IBalance bal) { return(await bal.Format(_users)); }
public void PutMoney(IBalance money) { _balance.PutMoney(money); CustomerDeposit += money.Overall; }
public VendingMachineBalance(IEnumerable<Coin> coins) { _balance = new Balance(coins); }
public VendingMachineBalance(IDictionary<Coin, int> coins) { _balance = new Balance(coins); }
public VendingMachineBalance(IBalance balance) { _balance = (balance == null) ? new Balance() : balance; }
/// <summary> /// creates account with given account number, balance and empty record /// </summary> /// <param name="accountNumber">account number</param> /// <param name="balance">account balance</param> public Account(AccountNumber accountNumber, IBalance balance) : this(accountNumber, balance, new List <OperationRecord>()) { }
/// <summary> /// creates account with given account number, balance and record /// </summary> /// <param name="accountNumber">account number</param> /// <param name="balance">account balance</param> /// <param name="operationRecord">operations history</param> public Account(AccountNumber accountNumber, IBalance balance, IList <OperationRecord> operationRecord) { AccountNumber = accountNumber; Balance = balance; _operationHistory = operationRecord; }
[NotNull] private string FormatBalance([NotNull] IBalance bal) { return(TransactionFormatting.FormatBalance(this, bal)); }
protected static IEnumerable <string> GetAccountIds(IBalance balance, IAccountPredicate accountPredicate) { return(balance.Items.GetBalanceItems(accountPredicate).Select(balanceItem => ((Account)balanceItem.Account).Id).Distinct()); }
public Loan(ICustomer customer, IBalance initialBalance, decimal interestRate) : base(customer, initialBalance, interestRate) { }