/// <summary>
        /// Starts the edit action for a model
        /// </summary>
        /// <param name="transactionId">Id of the model to edit</param>
        /// <returns>Partial view for editing the model</returns>
        public async Task <IActionResult> EditTransaction(int transactionId)
        {
            try
            {
                var transaction = await _transactionService.GetTransactionByIdForCurrentUser(transactionId);

                var userCategories = await _categoryService.GetAllCategoriesForCurrentUser();

                var availableCategories = CreateAvailableCategoriesSelectList(userCategories);

                var model = new UpsertTransactionViewModel
                {
                    AvailableCategories = availableCategories,
                    Transaction         = transaction
                };

                return(PartialView("UpsertTransactionPartial", model));
            }
            catch (NotFoundException)
            {
                TempDataHelper.SetTemporaryMessage(TempData, MessageState.Error, Resources.TransactionNotFound);
            }

            return(View("Index"));
        }
        public async Task <IActionResult> UpsertTransaction(UpsertTransactionViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (model.Transaction.Id > 0)
                    {
                        await _transactionService.UpdateTransactionForCurrentUser(model.Transaction);

                        return(Json(new SinanceJsonResult
                        {
                            Success = true
                        }));
                    }
                    else
                    {
                        await _transactionService.CreateTransactionForCurrentUser(model.Transaction);

                        return(Json(new SinanceJsonResult
                        {
                            Success = true
                        }));
                    }
                }
                catch (NotFoundException)
                {
                    TempDataHelper.SetTemporaryMessage(TempData, MessageState.Error, Resources.BankAccountNotFound);
                }
            }

            return(PartialView("UpsertTransactionPartial", model));
        }