Exemple #1
0
        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));
        }
Exemple #2
0
        // 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));
        }
Exemple #3
0
        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));
        }