private void AddNewPhysicalPersonClientButton_OnClick(object sender, RoutedEventArgs e) { var addingClientWindow = new AddingPhysicalPersonClientWindow(); if (addingClientWindow.ShowDialog() == true) { using (var repo = new PhysicalPersonClientRepository()) { if (!DateTime.TryParse(addingClientWindow.BirthdayTextBox.Text, out var birthday)) { MessageBox.Show("Ошибка ввода дня рождения"); return; } ClientType clientType = Convert.ToBoolean(addingClientWindow.IsVipCheckBox.IsChecked) ? ClientType.Vip : ClientType.Usual; var client = new PhysicalPersonClient(addingClientWindow.FirstNameTextBox.Text, addingClientWindow.LastNameTextBox.Text, addingClientWindow.LastNameTextBox.Text, birthday, clientType); PhysicalPersonClients.Add(client); repo.AddClient(client); repo.Save(); } } }
/// <summary> /// Конструктор для создания нового счета с новым клиентом с навигационным свойством. /// </summary> /// <param name="clientId">ID клиента.</param> /// <param name="currency">Валюта.</param> /// <param name="amount">Сумма денег.</param> /// <param name="client">Добавляемый клиент.</param> /// <param name="rate">Ставка в процентах.</param> public PhysicalPersonAccount(int clientId, Currency currency, decimal amount, PhysicalPersonClient client, decimal rate = 0) { ClientId = clientId; Currency = currency; Amount = amount; Client = client; Rate = rate; }
/// <summary> /// Конструктор для создания нового счета с новым клиентом с навигационным свойством. /// </summary> /// <param name="clientId">ID клиента.</param> /// <param name="currency">Валюта.</param> /// <param name="amount">Сумма денег.</param> /// <param name="client">Добавляемый клиент.</param> /// <param name="rate">Ставка в процентах.</param> public PhysicalPersonCredit(int clientId, Currency currency, decimal amount, int period, PhysicalPersonClient client, decimal rate = 0) { ClientId = clientId; Currency = currency; Amount = amount; Period = period; Client = client; Rate = rate; }
/// <summary> /// Конструктор для создания нового счета с новым клиентом с навигационным свойством. /// </summary> /// <param name="clientId">ID клиента.</param> /// <param name="currency">Валюта.</param> /// <param name="amount">Сумма денег.</param> /// <param name="period">Период действия депозита в месяцах.</param> /// <param name="withCapitalization">С капитализацией?</param> /// <param name="client">Добавляемый клиент.</param> /// <param name="rate">Ставка в процентах.</param> public PhysicalPersonDeposit(int clientId, Currency currency, decimal amount, int period, bool withCapitalization, PhysicalPersonClient client, decimal rate = 0) { ClientId = clientId; Currency = currency; Amount = amount; Period = period; WithCapitalization = withCapitalization; Client = client; Rate = rate; }
public void TransferMoneyHimselfTransferException() { var accountManager = new AccountManager(); var client = new PhysicalPersonClient("", "", "", DateTime.Now, ClientType.Usual); IAccount accountFrom = new PhysicalPersonAccount(12, Currency.Rub, 500, client); accountFrom.Id = 1; decimal amountToTransfer = 500; Assert.Throws(typeof(HimselfTransferException), () => { accountManager.TransferMoney(accountFrom, accountFrom, amountToTransfer); }); }
private void TransferPhysicalPersonMoneyButton_OnClick(object sender, RoutedEventArgs e) { MoneyTransferWindow moneyTransferWindow = new MoneyTransferWindow(); using (var physicalPersonClientRepo = new PhysicalPersonClientRepository()) using (var legalPersonClientRepo = new LegalPersonClientRepository()) { PhysicalPersonClient client = (PhysicalPersonClient)PhysicalPersonsDataGrid.SelectedItem; moneyTransferWindow.SenderAccountIdComboBox.ItemsSource = physicalPersonClientRepo.GetAllClientAccounts(client.Id); moneyTransferWindow.SenderAccountIdComboBox.DisplayMemberPath = "Id"; var allClients = new List <IClient>(); allClients.AddRange(physicalPersonClientRepo.GetClients()); allClients.AddRange(legalPersonClientRepo.GetClients()); moneyTransferWindow.RecipientClientNamesComboBox.ItemsSource = allClients; moneyTransferWindow.RecipientClientNamesComboBox.DisplayMemberPath = "DisplayName"; if (moneyTransferWindow.ShowDialog() == true) { IAccount accountFrom = (IAccount)moneyTransferWindow.SenderAccountIdComboBox.SelectedValue; IAccount accountTo = (IAccount)moneyTransferWindow.RecipientAccountsIdComboBox.SelectedValue; try { AccountManager accountManager = new AccountManager(); accountManager.TransferMoney(accountFrom, accountTo, moneyTransferWindow.Amount); physicalPersonClientRepo.Save(); legalPersonClientRepo.Save(); } catch (HimselfTransferException exception) { MessageBox.Show($"Произошла ошибка: {exception.Message}\n" + $"Перевод с клиента {accountFrom.ClientId} со счета {accountFrom.Id} клиенту {accountTo.ClientId} на счет {accountTo.Id}"); } catch (InsufficientAmountsException exception) { MessageBox.Show($"Произошла ошибка: {exception.Message}\nСуммма денег на счету: {exception.Amount}"); } catch (CurrencyMismatchException exception) { MessageBox.Show($"Произошла ошибка: {exception.Message}\n" + $"Валюта счета отправителя: {exception.Sender}, валюта счета получателя: {exception.Recipient}"); } catch (Exception exception) { MessageBox.Show($"Произошла ошибка: {exception.Message} Выполняем завершение программы."); throw; } } } }
public void TransferMoneyCurrencyMismatchException() { var accountManager = new AccountManager(); var client = new PhysicalPersonClient("", "", "", DateTime.Now, ClientType.Usual); IAccount accountFrom = new PhysicalPersonAccount(12, Currency.Usd, 5000, client); accountFrom.Id = 1; decimal accountToAmount = 1000; IAccount accountTo = new PhysicalPersonAccount(24, Currency.Rub, accountToAmount, client); accountTo.Id = 2; decimal amountToTransfer = 500; Assert.Throws(typeof(CurrencyMismatchException), () => { accountManager.TransferMoney(accountFrom, accountTo, amountToTransfer); }); }
public void TransferMoneyValidResultCheck() { var accountManager = new AccountManager(); var client = new PhysicalPersonClient("", "", "", DateTime.Now, ClientType.Usual); IAccount accountFrom = new PhysicalPersonAccount(12, Currency.Rub, 5000, client); accountFrom.Id = 1; decimal accountToAmount = 1000; IAccount accountTo = new PhysicalPersonAccount(24, Currency.Rub, accountToAmount, client); accountTo.Id = 2; decimal amountToTransfer = 500; accountManager.TransferMoney(accountFrom, accountTo, amountToTransfer); Assert.AreEqual(accountToAmount + amountToTransfer, accountTo.Amount, "ќшибка при обновлении суммы на счете получател¤."); }
private void OpenPhysicalPersonDepositButton_OnClick(object sender, RoutedEventArgs e) { AddingAnyAccountWindow accountWindow = new AddingAnyAccountWindow(); if (PhysicalPersonsDataGrid.CurrentItem != null) { PhysicalPersonClient client = (PhysicalPersonClient)PhysicalPersonsDataGrid.SelectedItem; if (accountWindow.ShowDialog() == true) { using (var repo = new PhysicalPersonClientRepository()) { repo.AddDeposit(client.Id, accountWindow.Currency, accountWindow.Amount, accountWindow.Period, accountWindow.WithCapitalization, rate.CalcPhysicalPersonDepositRate(client.Type)); } } } else { MessageBox.Show("Выберите нужного клиента!"); } }
private void OpenPhysicalPersonAccountButton_OnClick(object sender, RoutedEventArgs e) { AddingAnyAccountWindow accountWindow = new AddingAnyAccountWindow(); accountWindow.CapitalizationCheckBox.IsEnabled = false; accountWindow.PeriodTextBox.IsEnabled = false; if (PhysicalPersonsDataGrid.CurrentItem != null) { PhysicalPersonClient client = (PhysicalPersonClient)PhysicalPersonsDataGrid.SelectedItem; if (accountWindow.ShowDialog() == true) { using (var repo = new PhysicalPersonClientRepository()) { repo.AddAccount(client.Id, accountWindow.Currency, accountWindow.Amount); } } } else { MessageBox.Show("Выберите нужного клиента!"); } }