public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            DepositAndTransferViewModel depositAndTransferViewModel = new DepositAndTransferViewModel();
            DepositAccount depositAccount = await _context.DepositAccounts.FindAsync(id);

            depositAndTransferViewModel.DepositAccountId = depositAccount.DepositAccountId;
            depositAndTransferViewModel.Donor            = depositAccount.Donor;
            depositAndTransferViewModel.DepositCode      = depositAccount.DepositCode;
            depositAndTransferViewModel.DepositDate      = depositAccount.DepositDate;
            depositAndTransferViewModel.DepositType      = depositAccount.DepositType;
            depositAndTransferViewModel.DepositAmount    = depositAccount.DepositAmount;
            depositAndTransferViewModel.Balance          = depositAccount.Balance;
            //depositAndTransferViewModel.Balance = depositAccount.DepositAmount - _context.TransferAccounts.Where(c=>c.DepositAccountId == depositAccount.DepositAccountId).Sum(s=>s.TransferAmount);
            depositAndTransferViewModel.TransferAccounts =
                _context.TransferAccounts.Where(d => d.DepositAccountId == depositAccount.DepositAccountId).ToList();

            if (depositAccount == null)
            {
                return(NotFound());
            }
            return(View(depositAndTransferViewModel));
        }
        public async Task <IActionResult> CreateOrEdit(TransferAccount transferAccount)
        {
            if (ModelState.IsValid)
            {
                if (transferAccount.TransferAccountId > 0)
                {
                    try
                    {
                        _context.Update(transferAccount);

                        //await _context.SaveChangesAsync();
                        //double oldAmount = _context.TransferAccounts.Find(transferAccount.TransferAccountId).TransferAmount;
                        //double differnceAmount = transferAccount.TransferAmount - oldAmount;
                        //DepositAccount dAcount = _context.DepositAccounts.Find(transferAccount.DepositAccountId);
                        //dAcount.Balance -= differnceAmount;

                        //_context.Update(dAcount);

                        await _context.SaveChangesAsync();
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        throw;
                    }
                }
                else
                {
                    DepositAccount depositAccount1 = _context.DepositAccounts.Find(transferAccount.DepositAccountId);
                    depositAccount1.Balance -= transferAccount.TransferAmount;
                    _context.Update(depositAccount1);
                    _context.Add(transferAccount);
                    await _context.SaveChangesAsync();

                    ViewData["DepositAccountId"] = new SelectList(_context.DepositAccounts, "DepositAccountId", "DepositCode", transferAccount.DepositAccountId);
                }
                DepositAndTransferViewModel depositAndTransferViewModel = new DepositAndTransferViewModel();
                DepositAccount depositAccount = await _context.DepositAccounts.FindAsync(transferAccount.DepositAccountId);

                depositAndTransferViewModel.DepositAccountId = depositAccount.DepositAccountId;
                depositAndTransferViewModel.Donor            = depositAccount.Donor;
                depositAndTransferViewModel.DepositCode      = depositAccount.DepositCode;
                depositAndTransferViewModel.DepositDate      = depositAccount.DepositDate;
                depositAndTransferViewModel.DepositType      = depositAccount.DepositType;
                depositAndTransferViewModel.DepositAmount    = depositAccount.DepositAmount;
                depositAndTransferViewModel.Balance          = depositAccount.Balance;
                depositAndTransferViewModel.TransferAccounts =
                    _context.TransferAccounts.Where(d => d.DepositAccountId == depositAccount.DepositAccountId).ToList();

                return(Json(new { isValid = true, html = Helper.RenderRazorViewToString(this, "_EditDeposit", depositAndTransferViewModel) }));
            }
            ViewData["DepositAccountId"] = new SelectList(_context.DepositAccounts, "DepositAccountId", "DepositCode", transferAccount.DepositAccountId);
            return(Json(new { isValid = false, html = Helper.RenderRazorViewToString(this, "CreateOrEdit", transferAccount) }));
        }