public async Task <IActionResult> BuyCharacter(int id) { var сharacter = db.Characters.AsNoTracking().SingleOrDefault(c => c.Id == id); if (сharacter != null) { if (currentUser.Gold >= сharacter.Cost) { var duplicate = db.Entry(currentUser).Collection(u => u.UserCharacters).Query().Any(c => c.BaseСharacter == сharacter); if (!duplicate) { var result = await purchase.BuyCharacterAsync(currentUser, сharacter); return(Ok(result)); } return(Content("character already exists")); } return(Content("not enough gold")); } return(BadRequest(id)); }