public ActionResult Rate(int value, int titleId, int userId) { try { lock (ratingService) { if (!ratingService.CheckIfRatedByUser(userId, titleId)) { lock (ratingService) { ratingService.CreateEntity(new RatingEntity { TextDescId = titleId, UserId = userId, Value = value }); } } else { lock (ratingService) { var entity = ratingService.GetRateByUserAndTitleId(userId, titleId); entity.Value = value; ratingService.UpdateEntity(entity); } } var actual = Math.Round(ratingService.GetAverageRatingForTitle(titleId), 2); return(Json(new { ActualValue = actual })); } } catch { return(RedirectToAction("Internal", "Error")); } }