public AtmViewModel(Atm atm) { _atm = atm; _paymentGatway = new PaymentGatway(); _repository = new AtmRepository(); TakeMoneyCommand = new Command <decimal>(x => x > 0, TakeMoney); }
static void Main() { var atm = new Atm(); while (true) { int option; Console.WriteLine(); Console.WriteLine("Menu:"); Console.WriteLine("1. Create Account"); Console.WriteLine("2. Deposit"); Console.WriteLine(); Console.Write("Please make a selection: "); var input = int.TryParse(Console.ReadLine(), out option); Console.WriteLine("-----------------"); switch (option) { case 1: atm.CreateAccount(); break; case 2: atm.Deposit(); break; } } }
public IHttpActionResult PutAtm(int id, Atm atm) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != atm.AtmId) { return(BadRequest()); } _UnityOfWork.StateModified(atm); try { _UnityOfWork.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!AtmExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public AtmViewModel(IMediator _mediator, Atm atm) { this._mediator = _mediator; this._atm = atm; TakeMoneyCommand = new Command <decimal>(x => x > 0, Withdraw); }
private static void GenerateAtmSourceProvider() { var provider = new DbSourceProvider { UserDb = new DbFileSource(directoryName + "\\usersDB.json"), AccountDb = new DbFileSource(directoryName + "\\accountsDB.json"), TransactionDb = new DbFileSource(directoryName + "\\transactionsDB.json") }; var atm = new Atm(100, provider); var serializer = new AtmSerializer(); if (!File.Exists(AtmSourcePath)) { FileStream fs; try { fs = new FileStream(AtmSourcePath, FileMode.OpenOrCreate); } catch (Exception exception) { throw exception; } serializer.Write(atm, fs); } }
public IActionResult Post([FromBody] Account getMoney) { if (getMoney != null && repository.GetBalance().Amount >= getMoney.Amount && getMoney.Amount >= 100 && getMoney.Amount % 100 == 0) { Atm atm = new Atm(); var getCash = getMoney.Amount; atm.Money = repository.GetMoney(getCash); if (atm.Money != null) { return(Ok(atm)); } else { return(BadRequest(new Errors { ErrorMessage = "невозможно выдать указанную сумму" })); } } else { return(BadRequest(new Errors { ErrorMessage = "сумма должа быть кратна 100 и не превышать ваш баланс" })); } }
public void Init() { _statementPrinterMock = new Mock <StatementPrinter>(new Mock <Output>().Object, new Mock <TransactionFormatter>().Object); _clockMock = new Mock <Clock>(); _atm = new Atm(new TransactionRepository(), _clockMock.Object, _statementPrinterMock.Object); }
public static void Main() { Bank bank = new Bank(); InputWrapper iw = new InputWrapper(); string cmd; Console.WriteLine("Enter command, quit to exit"); cmd = iw.getString("> "); while (!cmd.Equals("quit")) { if (cmd.Equals("open")) { AccountType type; string stype = iw.getString("account type: "); switch (stype) { case "checking": type = AccountType.Checking; break; case "savings": type = AccountType.Savings; break; default: type = AccountType.Invalid; break; } if (type == AccountType.Invalid) { Console.WriteLine("Valid account types are checking/savings"); continue; } decimal bal = iw.getDecimal("starting balance: "); string owner = iw.getString("owner: "); int id = bank.AddAccount(type, bal, owner); Console.WriteLine("Account opened, id = {0}", id); } else if (cmd.Equals("close")) { int id = iw.getInt("account id: "); bank.DeleteAccount(id); } else if (cmd.Equals("show")) { ShowArray(bank.GetAccounts()); } else if (cmd.Equals("account")) { int id = iw.getInt("account id: "); Account acc = bank.FindAccount(id); Atm.ProcessAccount(acc); } else { help(); } cmd = iw.getString("> "); } }
public static void Main(string[] args) { // TODO Wallet型変数 wallet をWallet型のインスタンスで初期化してください。 var wallet = new Wallet(); // TODO walletのmoneyフィールドに10000を代入してください。 wallet.money = 10000; // TODO Atm型変数 atm をAtm型のインスタンスで初期化してください var atm = new Atm(); /* * TODO 以下の引数を渡してatmのWithdrawメソッドを呼びだしてください * 第一引数 wallet、第二引数 100000 */ atm.Withdraw(wallet, 100000); // TODO walletのmoneyフィールドを出力してください // ※ 値が110000になっていれば正解 Console.WriteLine(wallet.money); /* * TODO 以下の引数を渡してatmのWithdrawメソッドを呼びだしてください * 第一引数 wallet、第二引数 100000 * ※ 預金残高不足です。現金の引き出しに失敗しましたと出れば正解 */ atm.Withdraw(wallet, 100000); // TODO walletのmoneyフィールドを出力してください // ※ 値が110000のまま変わっていなければ正解 Console.WriteLine(wallet.money); }
/* * The StartAtm method instantiates the Atm object and runs * the InputMessage Command cycle. */ /// <summary> /// The <c>StartAtm</c> method instantiates the Atm object and runs /// the InputMessage Command cycle. /// <example> /// Example: /// <code> /// atmController.StartAtm(); /// </code> /// starts the Atm. /// </example> /// </summary> public void StartAtm() { var run = true; var atm = new Atm(); while (run) { var inputMessage = _inputService.GetInputMessage(); // Run input command. switch (inputMessage.Command) { case (int)CommandConstants.COMMAND_ENUM.Restock: Restock(out atm); break; case (int)CommandConstants.COMMAND_ENUM.Withdraw: atm = Withdraw(atm, inputMessage.WithdrawalAmount); break; case (int)CommandConstants.COMMAND_ENUM.Inventory: Inventory(atm, inputMessage.CountRequests); break; case (int)CommandConstants.COMMAND_ENUM.Quit: run = false; break; default: _displayService.DisplayInvalidCommandMessage();; break; } } }
public void save(Atm dbitem, int usr_id) { if (dbitem.Id == 0) //create { context.Atm.Add(dbitem); var query = "INSERT INTO dbo.\"Atm\" (\"NoKartu\", \"IdBank\", \"NoRekening\", \"AtasNama\", \"IdDriver\") VALUES (" + dbitem.NoKartu + ", " + dbitem.IdBank + ", " + dbitem.NoRekening + ", " + dbitem.AtasNama + ", " + dbitem.IdDriver + ");"; var auditrail = new Auditrail { Actionnya = "Add", EventDate = DateTime.Now, Modulenya = "Atm", QueryDetail = query, RemoteAddress = AppHelper.GetIPAddress(), IdUser = usr_id }; context.Auditrail.Add(auditrail); } else //edit { context.Atm.Attach(dbitem); var query = "UPDATE dbo.\"Atm\" SET \"NoKartu\" = " + dbitem.NoKartu + ", \"IdBank\" = " + dbitem.IdBank + ", \"NoRekening\" = " + dbitem.NoRekening + ", \"AtasNama\" = " + dbitem.AtasNama + ", \"IdDriver\" = " + dbitem.IdDriver + ", WHERE \"Id\" = " + dbitem.Id + ";"; var auditrail = new Auditrail { Actionnya = "Edit", EventDate = DateTime.Now, Modulenya = "Atm", QueryDetail = query, RemoteAddress = AppHelper.GetIPAddress(), IdUser = usr_id }; context.Auditrail.Add(auditrail); var entry = context.Entry(dbitem); entry.State = EntityState.Modified; } context.SaveChanges(); }
public async Task <IActionResult> Edit(int id, [Bind("Id,Long,Lat,Banco,Red,Ubicacion,Localidad,Terminales,NoVidente,Dolares,Calle,Altura,Calle2,Barrio,Comuna,CodigoPostal,CodigoPostalArgentino")] Atm atm) { if (id != atm.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(atm); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!AtmExists(atm.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(atm)); }
public AtmForm() { InitializeComponent(); _atmRepository = new AtmRepository(); _paymentGateway = new PaymentGateway(); _atm = _atmRepository.GetById(1); NotifyClient(string.Empty); }
public static void ShouldContainBalanceChangedEvent(this Atm atm, decimal delta) { var balanceChangedEvent = (BalanceChangedEvent)atm.DomainEvents .SingleOrDefault(x => x.GetType() == typeof(BalanceChangedEvent)); balanceChangedEvent.Should().NotBeNull(); balanceChangedEvent.Delta.Should().Be(1.01m); }
public AtmViewModel(Atm atm) { _atm = atm; mediator = Infrastructure.ObjectFactory.Instance.GetService <IMediator>(); TakeMoneyCommand = new Command <decimal>(x => x > 0, Withdraw); }
public void CheckBalance_Should_Return_Balance_Of_0() { Atm sut = new Atm(); int actualBalance = sut.CheckBalance(); Assert.Equal(0, actualBalance); }
public ActionResult Edit(int id) { Context.Atm dbitem = RepoAtm.FindByPK(id); Atm model = new Atm(dbitem); ViewBag.name = model.NamaBank; return(View("Form", model)); }
public void Withdraw_InsufficientCash_ReturnAtmError() { var atm = new Atm(0); atm.BeginSession(0, 0, 100, 100); var result = atm.WithdrawCash(100); Assert.AreEqual(result, "ATM_ERR"); }
public void Withdraw_InsufficientBalance_ReturnFundsError(int balance, int overdraft, int withdrawalAmount) { var atm = new Atm(int.MaxValue); atm.BeginSession(0, 0, balance, overdraft); var result = atm.WithdrawCash(withdrawalAmount); Assert.AreEqual(result, "FUNDS_ERR"); }
public async Task <Atm> CreateAtmAsync(string bankId, Atm atm) { var response = await(await GetBankAtmUrlAsync()) .AppendPathSegment($"/{bankId}/atms") .PostJsonAsync(atm) .ConfigureAwait(false); return(await HandleResponseAsync <Atm>(response).ConfigureAwait(false)); }
public void TransferShouldCallWithdraw() { // Arrange // Act Atm.Transfer(From.Object, To.Object, 100m); // Assert From.Verify(_ => _.Withdraw(It.IsAny <decimal>())); }
public void TransferShouldCallDeposit() { // Arrange // Act Atm.Transfer(From.Object, To.Object, 100m); // Assert To.Verify(_ => _.Deposit(It.IsAny <decimal>())); }
public void Take_money_exchanges_with_commission() { var atm = new Atm(); atm.LoadMoney(OneDollar); atm.TakeMoney(1m); atm.MoneyInside.Amount.Should().Be(0m); atm.MoneyCharged.Should().Be(1.01m); }
public void Commission_is_rounded_up_to_the_next_cent() { var atm = new Atm(); atm.LoadMoney(Money.Dollar + Money.TenCent); atm.TakeMoney(1.1m); atm.MoneyCharged.Should().Be(1.12m); }
public void Withdraw_Should_Reduce_Balance_by_10_Dollars() { Atm sut = new Atm(200); sut.Withdraw(); int actualBalance = sut.CheckBalance(); Assert.Equal(190, actualBalance); }
public void Commission_is_rounded_up_to_the_next_cent() { var atm = new Atm(); atm.LoadMoney(OneDollar + TenCent); atm.TakeMoney(1.1m); atm.MoneyInside.Amount.Should().Be(0m); atm.MoneyCharged.Should().Be(1.12m); }
public void Deposit_Should_Increase_Balance_by_50_Dollars() { Atm sut = new Atm(200); sut.Deposit(); int actualBalance = sut.CheckBalance(); Assert.Equal(250, actualBalance); }
public void Init() { _transactionRepositoryMock = new Mock <TransactionRepository>(); _clockMock = new Mock <Clock>(); _statementPrinterMock = new Mock <StatementPrinter>(new Mock <Output>().Object, new Mock <TransactionFormatter>().Object); _clockMock.Setup(c => c.GetCurrentDate()).Returns(_dateTime); _atm = new Atm(_transactionRepositoryMock.Object, _clockMock.Object, _statementPrinterMock.Object); }
public void Comission_is_at_least_one_cent() { var atm = new Atm(); atm.LoadMoney(Cent); atm.TakeMoney(0.01m); atm.MoneyCharged.Should().Be(0.02m); }
public void Comission_is_at_least_one_cent() { var atm = new Atm(); atm.LoadMoney(Cent); atm.TakeMoney(Cent.Amount); Assert.AreEqual(atm.MoneyCharged, 0.02m); }
public void Increase_Balance_On_Current_Statement_After_A_Deposit() { var consoleMock = Substitute.For<IConsole>(); var statementPrinter = new StatementPrinter(consoleMock); var account = new Account(new Transactions()); var atm = new Atm(statementPrinter, account); // act atm.Deposit(2000); atm.PrintStatement(); // assert consoleMock.Received().WriteLine(Arg.Is<string>(line => line.Contains("balance = 2000"))); }