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); }
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); }
public void AddTransaction(string key, TransactionResultData data) { _user.AddTransactionToHistory(key, data); }
public void AddTransactionToHistory(string number, TransactionResultData data) { _history[number] = data; }
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; } }
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; } } }