Ejemplo n.º 1
0
 public override bool Do()
 {
     if (DataBase.Users[UserId].WithdrawMoney(_amount))
     {
         _result = new TransactionResultData(true, DateTime.Now, _amount, false, TransactionType.Get);
         Console.WriteLine("Money withdrawed. Amount: " + _amount);
         DataBase.Users[UserId].AddTransaction(_key, _result);
         return(true);
     }
     _result = new TransactionResultData(false, DateTime.Now, _amount, false, TransactionType.Get, TransactionDeniedReason.NotEnoughMoney);
     Console.WriteLine("Not enough money on card.");
     DataBase.Users[UserId].AddTransaction(_key, _result);
     return(false);
 }
Ejemplo n.º 2
0
        public override bool Do()
        {
            var receiver = DataBase.Users[_receiver];

            if (UserId == _receiver)
            {
                _result = new TransactionResultData(false, DateTime.Now, _amount, false, TransactionType.Send, TransactionDeniedReason.Other);
                Console.WriteLine("You can't send money to yourself");
                DataBase.Users[UserId].AddTransaction(_key, _result);
                return(false);
            }
            if (DataBase.Users[UserId].WithdrawMoney(_amount))
            {
                receiver.AddMoney(_amount);
                _result = new TransactionResultData(true, DateTime.Now, _amount, false, TransactionType.Send);
                Console.WriteLine("Money sent to " + receiver.GetCardNumber() + ". Amount: " + _amount);
                DataBase.Users[UserId].AddTransaction(_key, _result);
                return(true);
            }
            _result = new TransactionResultData(false, DateTime.Now, _amount, false, TransactionType.Send, TransactionDeniedReason.NotEnoughMoney);
            Console.WriteLine("Not enough money on card.");
            DataBase.Users[UserId].AddTransaction(_key, _result);
            return(false);
        }
Ejemplo n.º 3
0
 public void AddTransaction(string key, TransactionResultData data)
 {
     _user.AddTransactionToHistory(key, data);
 }
Ejemplo n.º 4
0
 public void AddTransactionToHistory(string number, TransactionResultData data)
 {
     _history[number] = data;
 }
Ejemplo n.º 5
0
        private void GetCredit(int v)
        {
            int inputCreditSize;

            if (aAmountOfMoneyRequestPanel.Enabled)
            {
                try
                {
                    inputCreditSize = int.Parse(aAmountOfMoneyRequestTextBox.Text);
                }
                catch (FormatException)
                {
                    return;
                }

                if (inputCreditSize < 1000)
                {
                    aInfoLabel.Text = "Minimum money amount - 1000";
                    aAmountOfMoneyRequestTextBox.Text = "";
                    return;
                }
                else if (inputCreditSize > CurrentUser.CreditLimit())
                {
                    aInfoLabel.Text  = "Typed amount is higher than your credit limit. \n";
                    aInfoLabel.Text += "(Your credit limit: " + CurrentUser.CreditLimit() + ")";
                    aAmountOfMoneyRequestTextBox.Text = "";
                    return;
                }
                else
                {
                    aAmountOfMoneyRequestTextBox.Text = "";
                    TransactionResultData result = null;
                    ClearSidepanelsButtons();
                    DisablePanel(aAmountOfMoneyRequestPanel);
                    string key = _transactionController.CreateNewTransaction(CurrentUser.GetCardNumber(), new UserProxy.CreditInfo
                    {
                        Amount = inputCreditSize, Percent = creditTariffs[v], Time = v * 6
                    });
                    while (result == null)
                    {
                        try
                        {
                            result = CurrentUser.GetTransactionHistory()[key];
                        }
                        catch (KeyNotFoundException)
                        {
                            continue;
                        }
                    }
                    if (result.Done)
                    {
                        aInfoLabel.Text = "You successfully took a credit. Money added to your account";
                    }
                    else
                    {
                        aInfoLabel.Text =
                            "Transaction unsuccessful. Reason: " + result.Reason;
                    }
                    return;
                }
            }
            else
            {
                currentMenu = Menus.MainMenu;
                RedrawWindow();
                return;
            }
        }
Ejemplo n.º 6
0
        private void aInputButtonEnter_Click(object sender, EventArgs e)
        {
            aInfoLabel.Text = "";
            if (currentMenu == Menus.LoginMenu)
            {
                string inputCardNumber   = null;
                string inputCardPassword = null;

                if (aCardNumberPanel.Enabled == true)
                {
                    inputCardNumber = aCardNumberTextBox.Text;
                    if (!ValidateInputCardNumber(inputCardNumber))
                    {
                        aInfoLabel.Text         = "Wrong card number";
                        aCardNumberTextBox.Text = "";
                        inputCardNumber         = null;
                        return;
                    }
                    else
                    {
                        if (DataBase.Users.ContainsKey(inputCardNumber))
                        {
                            CurrentUser       = DataBase.Users[inputCardNumber];
                            _passwordAttempts = CurrentUser.GetPasswordAttempts();
                            if (CurrentUser.GetBlockedStatus())
                            {
                                aInfoLabel.Text         = "This card is blocked.";
                                inputCardNumber         = null;
                                aCardNumberTextBox.Text = "";
                                return;
                            }
                            DisablePanel(aCardNumberPanel);
                            EnablePanel(aPasswordPanel);
                            return;
                        }
                        else
                        {
                            aInfoLabel.Text         = "Card number doesn't exist or wrong input. Try again.";
                            inputCardNumber         = null;
                            aCardNumberTextBox.Text = "";
                            return;
                        }
                    }
                }
                else if (aPasswordPanel.Enabled == true)
                {
                    inputCardPassword = aPasswordTextBox.Text;
                    if (!ValidateInputCardPassword(inputCardPassword))
                    {
                        aInfoLabel.Text       = "Wrong password format. Try again.";
                        aPasswordTextBox.Text = "";
                        inputCardPassword     = null;
                        return;
                    }
                    else
                    {
                        inputCardPassword = aPasswordTextBox.Text;
                        if (!DataBase.ValidateUser(CurrentUser, inputCardPassword))
                        {
                            if (--_passwordAttempts == 0)
                            {
                                CurrentUser.SetPasswordAttempts(_passwordAttempts);
                                DataBase.BlockUser(CurrentUser);
                                aInfoLabel.Text = "Wrong password. Your card is blocked.";
                                DisablePanel(aPasswordPanel);
                                EnablePanel(aCardNumberPanel);
                                inputCardPassword = null;
                                CurrentUser       = null;
                                return;
                            }
                            else
                            {
                                CurrentUser.SetPasswordAttempts(_passwordAttempts);
                                aInfoLabel.Text       = "Wrong password. " + _passwordAttempts + " attempts left.";
                                inputCardPassword     = null;
                                aPasswordTextBox.Text = "";
                                return;
                            }
                        }
                        else
                        {
                            DisablePanel(aCardNumberPanel);
                            DisablePanel(aPasswordPanel);
                            CurrentUser.SetPasswordAttempts(3);
                            atm._loggedIn   = true;
                            aInfoLabel.Text = "You have logged in. Welcome.";
                            MainMenu();
                            return;
                        }
                    }
                }
            }
            else if (currentMenu == Menus.SendMoney)
            {
                string inputCardNumber;
                double inputMoneyAmount;

                if (aReceiverCardRequestPanel.Enabled)
                {
                    inputCardNumber = aReceiverCardNumberTextBox.Text;
                    if (!ValidateInputCardNumber(inputCardNumber))
                    {
                        aInfoLabel.Text = "Wrong card number";
                        aReceiverCardNumberTextBox.Text = "";
                        inputCardNumber = null;
                        return;
                    }
                    else
                    {
                        if (DataBase.Users.ContainsKey(inputCardNumber))
                        {
                            UserProxy receiver = DataBase.Users[inputCardNumber];
                            if (receiver.GetBlockedStatus())
                            {
                                aInfoLabel.Text = "Receiver's card is blocked.";
                                inputCardNumber = null;
                                aReceiverCardNumberTextBox.Text = "";
                                return;
                            }
                            DisablePanel(aReceiverCardRequestPanel);
                            EnablePanel(aAmountOfMoneyRequestPanel);
                            return;
                        }
                        else
                        {
                            aInfoLabel.Text         = "Card number doesn't exist or wrong input. Try again.";
                            inputCardNumber         = null;
                            aCardNumberTextBox.Text = "";
                            return;
                        }
                    }
                }
                else if (aAmountOfMoneyRequestPanel.Enabled)
                {
                    inputCardNumber  = aReceiverCardNumberTextBox.Text;
                    inputMoneyAmount = double.Parse(aAmountOfMoneyRequestTextBox.Text);
                    string key = _transactionController.CreateNewTransaction(CurrentUser.GetCardNumber(), inputMoneyAmount, inputCardNumber);
                    aAmountOfMoneyRequestTextBox.Text = "";
                    aReceiverCardNumberTextBox.Text   = "";
                    DisablePanel(aAmountOfMoneyRequestPanel);
                    aInfoLabel.Text = "Your transaction request is processing...";
                    TransactionResultData result = null;
                    while (result == null)
                    {
                        try
                        {
                            result = CurrentUser.GetTransactionHistory()[key];
                        }
                        catch (KeyNotFoundException)
                        {
                            continue;
                        }
                    }
                    if (result.Done)
                    {
                        aInfoLabel.Text = "Transaction successful.";
                    }
                    else
                    {
                        aInfoLabel.Text =
                            "Transaction unsuccessful. Reason: " + ((result.Reason == TransactionDeniedReason.NotEnoughMoney)
                ? "Not enough money" : "You can't send money to yourself");
                    }
                    return;
                }
                else
                {
                    currentMenu = Menus.MainMenu;
                    RedrawWindow();
                    return;
                }
            }
            else if (currentMenu == Menus.RecheckPass)
            {
                string inputCardPassword;

                if (aPasswordPanel.Enabled == true)
                {
                    inputCardPassword = aPasswordTextBox.Text;
                    if (!ValidateInputCardPassword(inputCardPassword))
                    {
                        aInfoLabel.Text       = "Wrong password format. Try again.";
                        aPasswordTextBox.Text = "";
                        inputCardPassword     = null;
                        return;
                    }
                    else
                    {
                        inputCardPassword = aPasswordTextBox.Text;
                        if (!DataBase.ValidateUser(CurrentUser, inputCardPassword))
                        {
                            if (--_passwordAttempts == 0)
                            {
                                CurrentUser.SetPasswordAttempts(_passwordAttempts);
                                DataBase.BlockUser(CurrentUser);
                                aInfoLabel.Text = "Wrong password. Your card is blocked.";
                                DisablePanel(aPasswordPanel);
                                EnablePanel(aCardNumberPanel);
                                inputCardPassword = null;
                                CurrentUser       = null;
                                return;
                            }
                            else
                            {
                                CurrentUser.SetPasswordAttempts(_passwordAttempts);
                                aInfoLabel.Text       = "Wrong password. " + _passwordAttempts + " attempts left.";
                                inputCardPassword     = null;
                                aPasswordTextBox.Text = "";
                                return;
                            }
                        }
                        else
                        {
                            DisablePanel(aCardNumberPanel);
                            DisablePanel(aPasswordPanel);
                            CurrentUser.SetPasswordAttempts(3);
                            atm._loggedIn = true;
                            MainMenu();
                            return;
                        }
                    }
                }
            }
            else if (currentMenu == Menus.WithdrawMoney)
            {
                int inputMoneyAmount;
                if (aAmountOfMoneyRequestPanel.Enabled)
                {
                    try
                    {
                        inputMoneyAmount = int.Parse(aAmountOfMoneyRequestTextBox.Text);
                    }
                    catch (FormatException)
                    {
                        return;
                    }
                    string key = _transactionController.CreateNewTransaction(CurrentUser.GetCardNumber(), inputMoneyAmount);
                    aAmountOfMoneyRequestTextBox.Text = "";
                    aReceiverCardNumberTextBox.Text   = "";
                    TransactionResultData result = null;
                    while (result == null)
                    {
                        try
                        {
                            result = CurrentUser.GetTransactionHistory()[key];
                        }
                        catch (KeyNotFoundException)
                        {
                            continue;
                        }
                    }
                    DisablePanel(aAmountOfMoneyRequestPanel);
                    if (result.Done)
                    {
                        aInfoLabel.Text = "Take your money";
                        GiveBanknotes(inputMoneyAmount);
                    }
                    else
                    {
                        aInfoLabel.Text =
                            "Transaction unsuccessful. Reason: " + ((result.Reason == TransactionDeniedReason.NotEnoughMoney)
                ? "Not enough money" : "Unknown");
                    }
                    return;
                }
                else
                {
                    currentMenu = Menus.MainMenu;
                    RedrawWindow();
                    return;
                }
            }
            else if (currentMenu == Menus.GetCredit)
            {
                if (aAmountOfMoneyRequestPanel.Enabled == false)
                {
                    currentMenu = Menus.MainMenu;
                    RedrawWindow();
                    return;
                }
            }
        }