Exemple #1
0
        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;
 }
Exemple #3
0
 /// <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;
 }
Exemple #5
0
        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); });
        }
Exemple #6
0
        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;
                        }
                    }
                }
        }
Exemple #7
0
        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); });
        }
Exemple #8
0
        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, "ќшибка при обновлении суммы на счете получател¤.");
        }
Exemple #9
0
        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("Выберите нужного клиента!");
            }
        }
Exemple #10
0
        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("Выберите нужного клиента!");
            }
        }