/// <summary>
        /// Upserts an account
        /// </summary>
        /// <param name="model">Model to use for upsert</param>
        /// <returns>ActionResult with the outcome</returns>
        public async Task <IActionResult> UpsertAccount(BankAccountModel model)
        {
            ActionResult result = View(model);

            if (ModelState.IsValid)
            {
                try
                {
                    if (model.Id > 0)
                    {
                        await _bankAccountService.UpdateBankAccountForCurrentUser(model);

                        TempDataHelper.SetTemporaryMessage(TempData, MessageState.Success, Resources.BankAccountCreated);
                    }
                    else
                    {
                        await _bankAccountService.CreateBankAccountForCurrentUser(model);

                        TempDataHelper.SetTemporaryMessage(TempData, MessageState.Success, Resources.BankAccountUpdated);
                    }
                }
                catch (NotFoundException)
                {
                    ModelState.AddModelError("Message", Resources.BankAccountNotFound);
                }
                catch (AlreadyExistsException)
                {
                    ModelState.AddModelError("Message", Resources.BankAccountNotFound);
                }
                catch (ArgumentException exc)
                {
                    ModelState.AddModelError("Message", exc.Message);
                }

                return(RedirectToAction("Index"));
            }

            return(result);
        }