public async Task <IActionResult> Add(FinanceVm model) { ViewBag.Users = _db.Users.ToList(); var user = _db.Users.SingleOrDefault(u => u.Id.Equals(model.UserId)); if (user == null) { ModelState.AddModelError("UserId", "Not found"); } if (model.Money <= 0) { ModelState.AddModelError("Money", "Only positive values"); } if (ModelState.IsValid) { var transaction = new Transactions(); transaction.Date = DateTime.Now; transaction.UserId = model.UserId; transaction.Money = model.Money; transaction.Type = model.Type; _db.Transactions.Add(transaction); switch (transaction.Type) { case TransactionType.Replenishment: user.Money += model.Money; break; case TransactionType.Withdrawal: user.Money -= model.Money; break; } _db.Users.Update(user); _db.SaveChanges(); await _notify.AboutTransactionAsync(TransactionReason.Passed, user.Email, transaction); return(RedirectToAction("Index")); } return(View(new FinanceVm())); }