Ejemplo n.º 1
0
 public AtmViewModel(Atm atm)
 {
     _atm             = atm;
     _paymentGatway   = new PaymentGatway();
     _repository      = new AtmRepository();
     TakeMoneyCommand = new Command <decimal>(x => x > 0, TakeMoney);
 }
Ejemplo n.º 2
0
    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;
            }
        }
    }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 6
0
 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);
        }
Ejemplo n.º 8
0
    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("> ");
        }
    }
Ejemplo n.º 9
0
    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);
    }
Ejemplo n.º 10
0
        /*
         *      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;
                }
            }
        }
Ejemplo n.º 11
0
 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();
 }
Ejemplo n.º 12
0
        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));
        }
Ejemplo n.º 13
0
 public AtmForm()
 {
     InitializeComponent();
     _atmRepository  = new AtmRepository();
     _paymentGateway = new PaymentGateway();
     _atm            = _atmRepository.GetById(1);
     NotifyClient(string.Empty);
 }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        public AtmViewModel(Atm atm)
        {
            _atm = atm;

            mediator = Infrastructure.ObjectFactory.Instance.GetService <IMediator>();

            TakeMoneyCommand = new Command <decimal>(x => x > 0, Withdraw);
        }
Ejemplo n.º 16
0
        public void CheckBalance_Should_Return_Balance_Of_0()
        {
            Atm sut = new Atm();

            int actualBalance = sut.CheckBalance();

            Assert.Equal(0, actualBalance);
        }
Ejemplo n.º 17
0
        public ActionResult Edit(int id)
        {
            Context.Atm dbitem = RepoAtm.FindByPK(id);
            Atm         model  = new Atm(dbitem);

            ViewBag.name = model.NamaBank;
            return(View("Form", model));
        }
Ejemplo n.º 18
0
        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");
        }
Ejemplo n.º 19
0
        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");
        }
Ejemplo n.º 20
0
        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>()));
            }
Ejemplo n.º 23
0
        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);
        }
Ejemplo n.º 24
0
        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);
        }
Ejemplo n.º 25
0
        public void Withdraw_Should_Reduce_Balance_by_10_Dollars()
        {
            Atm sut = new Atm(200);

            sut.Withdraw();
            int actualBalance = sut.CheckBalance();

            Assert.Equal(190, actualBalance);
        }
Ejemplo n.º 26
0
        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);
        }
Ejemplo n.º 27
0
        public void Deposit_Should_Increase_Balance_by_50_Dollars()
        {
            Atm sut = new Atm(200);

            sut.Deposit();
            int actualBalance = sut.CheckBalance();

            Assert.Equal(250, actualBalance);
        }
Ejemplo n.º 28
0
        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);
        }
Ejemplo n.º 29
0
        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);
        }
Ejemplo n.º 30
0
        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);
        }
Ejemplo n.º 31
0
        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")));
        }