Esempio n. 1
0
        public IActionResult Edit(TransactionViewModel vm)
        {
            var userID = User.FindFirstValue(ClaimTypes.NameIdentifier);

            //TODO: Currently allowing edit even when nothing is changed. Fix that.
            //TODO: Confirm additional validation requirements.

            //Confirm user owns the transaction
            if (!_transactionRepository.UserOwnsTransaction(vm.TransactionOfInterest.TransactionID, userID))
            {
                return(NotFound());
            }

            //If model state is valid, update the db and redirect to index.
            if (ModelState.IsValid)
            {
                //Convert VMTransaction to DBTransaction
                Transaction transaction = ConvertToDBTransaction(vm.TransactionOfInterest, userID);

                //Update the transaction in the DB.
                _transactionRepository.Update(transaction);
                TempData["Message"] = "Your transaction was updated successfully.";

                return(RedirectToAction("Index"));
            }

            //If model state is in error, reinit the select lists and call the edit view again.
            vm.Init(userID, _accountRepository, _categoryRepository, _transactionTypeRepository, _vendorRepository);
            return(View(vm));
        }
Esempio n. 2
0
        public IActionResult Edit(int?id)
        {
            var userID = User.FindFirstValue(ClaimTypes.NameIdentifier);

            //Confirm id is not null
            if (id == null)
            {
                return(BadRequest());
            }

            //Get transaction if it exists.
            Transaction transaction = _transactionRepository.Get((int)id, userID);

            //Confirm transaction exists. This doubles as ensuring that the user owns the transaction, as the object will be null if the UserID and TransactionID combo don't exist.
            if (transaction == null)
            {
                return(NotFound());
            }

            //Convert DBTransaction to VMTransaction
            TransactionViewModel vm = new TransactionViewModel();

            vm.TransactionOfInterest = ConvertToVMTransaction(transaction);

            //Initialize select list items
            vm.Init(userID, _accountRepository, _categoryRepository, _transactionTypeRepository, _vendorRepository);

            //Return the view
            return(View(vm));
        }
Esempio n. 3
0
        public IActionResult Add(TransactionViewModel vm)
        {
            var userID = User.FindFirstValue(ClaimTypes.NameIdentifier);

            //TODO: Confirm validation requirements.
            if (ModelState.IsValid)
            {
                //Convert VMTransaction to DBTransaction
                Transaction transaction = ConvertToDBTransaction(vm.TransactionOfInterest, userID);

                //Add transaction to the DB
                _transactionRepository.Add(transaction);

                TempData["Message"] = "Transaction successfully added.";

                return(RedirectToAction("Index"));
            }

            vm.Init(userID, _accountRepository, _categoryRepository, _transactionTypeRepository, _vendorRepository);
            return(View(vm));
        }
Esempio n. 4
0
        public IActionResult Add()
        {
            var userID = User.FindFirstValue(ClaimTypes.NameIdentifier);

            //TODO: add a check for an account and warn the user to create one if none exist.

            //Instantiate viewmodel
            TransactionViewModel vm = new TransactionViewModel();

            //Instantiate Transaction of Interest property
            vm.TransactionOfInterest = new TransactionViewModel.VMTransaction
            {
                //Prefill defaults.
                TransactionDate = DateTime.Now.Date,
                Amount          = 0.00M,
            };

            //TODO: Consider limiting the select list items. Probably shouldn't allow users to select new account balance.
            //Initialize set list items.
            vm.Init(userID, _accountRepository, _categoryRepository, _transactionTypeRepository, _vendorRepository);

            return(View(vm));
        }