public async Task <ResponseServerService> RatingScript(ActionRatingParameter model, User user) { var users = _firebaseService.GetUsers(); var ratings = _firebaseService.GetRatings(); var championScripts = _firebaseService.GetChampionScript(); await Task.WhenAll(users, ratings, championScripts); var listUsers = users.Result ?? new List <User>(); var listRatings = ratings.Result ?? new List <ScriptRatingDetail>(); var listChampionScripts = championScripts.Result ?? new List <ChampionScript>(); var championScriptFind = listChampionScripts.FirstOrDefault(a => a.Id == model.IdScript); if (championScriptFind == null) { return(_responseServerService.ResponseError()); } var userFind = listUsers.FirstOrDefault(a => a.Email == user.Email); if (userFind == null) { return(_responseServerService.ResponseError()); } var ratingUser = listRatings.FirstOrDefault(a => a.IdUser == userFind.Id && a.IdScript == championScriptFind.Id); if (ratingUser == null) { ratingUser = new ScriptRatingDetail() { CreateDate = DateTime.Now, Id = listRatings.LastOrDefault()?.Id + 1 ?? 1, IdScript = championScriptFind.Id, IdUser = userFind.Id, Point = model.Point }; listRatings.Add(ratingUser); } else { ratingUser.CreateDate = DateTime.Now; ratingUser.IdScript = championScriptFind.Id; ratingUser.IdUser = userFind.Id; ratingUser.Point = model.Point; var indexof = listRatings.IndexOf(ratingUser); listRatings[indexof] = ratingUser; } _firebaseService.PutRatings(listRatings); var check = UpdateRating(listRatings, model.IdScript, listChampionScripts); if (check) { return(_responseServerService.ResponseSuccess("Rating Success !!!")); } return(_responseServerService.ResponseError()); }