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)); }
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)); }
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)); }
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)); }