public async Task <IActionResult> Put(Transactions model)
        {
            if (ModelState.IsValid)
            {
                Account account = await _context.Accounts.FirstOrDefaultAsync(
                    a => a.User.Email == User.Identity.Name);

                account.Balance      = account.Balance + model.Sum;
                account.Transactions = new List <Models.Transaction>()
                {
                    new Transaction
                    {
                        Sum = model.Sum,
                        ReceiverAccountId = account.BalanceName,
                        SenderAccountId   = "Terminal",
                        Accounts          = account
                    }
                };
                _context.Update(account);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index", "Home"));
            }
            return(View(model));
        }
        public async Task <IActionResult> Withdraw(Transactions model)
        {
            if (ModelState.IsValid)
            {
                Account account = await _context.Accounts.FirstOrDefaultAsync(
                    a => a.User.Email == User.Identity.Name);

                if (account.Balance >= model.Sum)
                {
                    account.Balance      = account.Balance - model.Sum;
                    account.Transactions = new List <Models.Transaction>()
                    {
                        new Transaction
                        {
                            Sum = model.Sum,
                            ReceiverAccountId = account.BalanceName,
                            SenderAccountId   = "ATM",
                            Accounts          = account
                        }
                    };
                    _context.Update(account);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    ModelState.AddModelError("", "There is not enough money in your account");
                }
            }
            return(View(model));
        }
        public async Task <IActionResult> SendToAnotherAccount(Transactions model)
        {
            if (ModelState.IsValid)
            {
                Account accountSender = await _context.Accounts.FirstOrDefaultAsync(
                    a => a.User.Email == User.Identity.Name);

                Account accountReceiver = await _context.Accounts.FirstOrDefaultAsync(
                    a => a.BalanceNumber == model.BalanceName);

                if (accountSender.Balance >= model.Sum)
                {
                    accountSender.Balance      = accountSender.Balance - model.Sum;
                    accountReceiver.Balance    = accountReceiver.Balance + model.Sum;
                    accountSender.Transactions = new List <Transaction>()
                    {
                        new Transaction()
                        {
                            ReceiverAccountId = accountReceiver.BalanceName,
                            SenderAccountId   = accountSender.BalanceName,
                            Sum = model.Sum,
                        }
                    };
                    _context.Update(accountReceiver);
                    _context.Update(accountSender);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction("Index", "Home"));
                }
                ModelState.AddModelError("", "There is not enough money in your account");
            }
            ViewData["BalanceName"] = new SelectList(
                _context.Accounts.Where(a => a.User.Email != User.Identity.Name),
                "BalanceNumber",
                "BalanceName"
                );
            return(View(model));
        }