public async Task <IActionResult> Transfer([Bind("TransactionDate,PocketFromId,PocketToId,Amount")] TransferMoney transferMoney) { var user = await _userManager.GetUserAsync(User); if (ModelState.IsValid) { var mPocketFrom = await _context.MPocket.FindAsync(transferMoney.PocketFromId); var mPocketTo = await _context.MPocket.FindAsync(transferMoney.PocketToId); var mCategoryAdjustFrom = _context.MCategory.Where(x => x.User == null && x.CashflowTypeId == 2 && x.Name == "Adjust").FirstOrDefault(); var mCategoryAdjustTo = _context.MCategory.Where(x => x.User == null && x.CashflowTypeId == 1 && x.Name == "Adjust").FirstOrDefault(); mPocketFrom.Balance -= transferMoney.Amount; mPocketTo.Balance += transferMoney.Amount; _context.Update(mPocketFrom); _context.Update(mPocketTo); var mainTransaction = new MainTransaction { TransactionDate = transferMoney.TransactionDate, MPocket = mPocketFrom, MCategory = mCategoryAdjustFrom, Detail = "Transfer Money", Amount = transferMoney.Amount, LastUpdate = DateTime.Now, User = user }; _context.Add(mainTransaction); mainTransaction = new MainTransaction { TransactionDate = transferMoney.TransactionDate, MPocket = mPocketTo, MCategory = mCategoryAdjustTo, Detail = "Transfer Money", Amount = transferMoney.Amount, LastUpdate = DateTime.Now, User = user }; _context.Add(mainTransaction); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["PocketFrom"] = new SelectList(_context.MPocket.Where(x => x.User == user), "ID", "Name"); ViewData["PocketTo"] = new SelectList(_context.MPocket.Where(x => x.User == user), "ID", "Name"); return(View(transferMoney)); }
// GET: MainTransactions/Create public IActionResult Create(int CashflowTypeId) { //ViewData["MCategoryId"] = new SelectList(_context.MCategory, "ID", "Name"); //ViewData["MpocketId"] = new SelectList(_context.MPocket, "ID", "Name"); //return View(); var userId = _userManager.GetUserId(User); ViewData["MCategoryId"] = new SelectList(_context.MCategory.Where(x => x.CashflowTypeId == CashflowTypeId && (x.User.Id == userId || x.User == null)), "ID", "Name"); ViewData["MpocketId"] = new SelectList(_context.MPocket.Where(x => x.User.Id == userId), "ID", "Name"); var cashflowType = _context.CashflowType.Where(x => x.ID == CashflowTypeId && (x.User.Id == userId || x.User == null)); if (cashflowType.ToList().Count == 1) { ViewData["Title_1"] = "Add " + cashflowType.ToList()[0].Name; } var mainTransaction = new MainTransaction(); return(View(mainTransaction)); }
public async Task <IActionResult> Create([Bind("ID,TransactionDate,MpocketId,MCategoryId,Detail,Amount,StatusFlag,LastUpdate")] MainTransaction mainTransaction) { var user = await _userManager.GetUserAsync(User); if (ModelState.IsValid) { //--- Update balance ---// var mCategory = await _context.MCategory.FindAsync(mainTransaction.MCategoryId); var mCashFlowType = await _context.CashflowType.FindAsync(mCategory.CashflowTypeId); var mPocket = await _context.MPocket.FindAsync(mainTransaction.MpocketId); if (mCashFlowType.Name == "Income") { mPocket.Balance += mainTransaction.Amount; } else { mPocket.Balance -= mainTransaction.Amount; } //--- Update balance ---// mainTransaction.User = user; _context.Update(mPocket); _context.Add(mainTransaction); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["MCategoryId"] = new SelectList(_context.MCategory.Where(x => x.User == user || x.User == null), "ID", "Name", mainTransaction.MCategoryId); ViewData["MpocketId"] = new SelectList(_context.MPocket.Where(x => x.User == user), "ID", "Name", mainTransaction.MpocketId); return(View(mainTransaction)); }